怎么理解数据库分布式架构的高并发处理


这篇文章主要介绍“怎么理解数据库分布式架构的高并发处理”,在日常操作中,相信很多人在怎么理解数据库分布式架构的高并发处理问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么理解数据库分布式架构的高并发处理”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
高并发介绍在同时或者极短时间内,有大量请求到达服务端,每个请求都需要服务端耗费资源进行处理,并做出相应反馈服务端比如同时开启进程数,能同时运行的线程数、网络连接数、CPU运算、I/O、内存都是有限,
所以服务端能同时处理请求也是有限的。高并发本质就是资源的有限性
如:1.系统在线人数10W,并不意味系统并发用户是10W,可能存在10w用户同时在首页查看静态文章,并未对服务器进行发送请求
那么高并发数 是根据系统真实用户数并发送请求需要服务端耗费资源进行处理的请求
2.服务端只能开启100个线程,恰好1个线程处理一个请求需要耗时1s,那么服务端1s只能处理100个请求,多余请求无法处理经典案例商品、活动秒杀下订单准备阶段系统独立部署做好系统容量规划(7-7.5折计算),系统优化、系统容灾限流等方案做好系统拆分,如:功能模块、实时/非实时、动态/静态等参加活动商品设置定时上架时间服务器时间同步(集群中每台机器时钟要保持一致)动态生成下单页面的URL实现阶段客户端层面:前端页面采用h6静态化,ajax获取动态内容;如实时库存、活动状态、当前时间等做CDN部署加速静态页面和资源缓存 如:(图片)JS针对请求过滤,减少请求发送到达服务端 如:(获取验证码、时间截止或已售空自动结束等)Web端层面:F5/LVS+Nginx接收高并发请求、并做负载均衡Lua脚本+Redis做请求队列,针对有效请求用List排队,并实现一些基本操作(限流、账号参加次数检查、同一IP请求数检查)
Redis单线程高性能,每秒处理100W请求,如果大于100W请求如何处理呢?
1.可以结合Lua脚本控制请求数量并限流,有效减少redis压力;比如100W请求,过滤20W,还剩80W,无效请求直接返回客户端不到达服务端
2.如果应用非常庞大,用户流量高额,Redis单节点做成集群模式,请求处理数量 香港云主机也随之增加Varnish缓存静态页面和静态资源Tomcat集群,预处理,通过业务场景判断用户是具备参加活动资格、账号是否正常、是否在黑名单等逻辑层面:按照Redis请求队列进行先后处理纯内存操作+异步(通过Redis完成减库存,1.利用Redis的watch事物 2.利用Redis脚本Lua原子操作减库存)高并发产生问题,分析思考服务端处理响应会逐渐变慢,甚至会丢失部分请求不处理,严重会导致服务器崩溃客户端(apph6)、前端请求(nginx/varnish)、web服务器(webServer)、web应用(rmi/dubbo/远程调用)、缓存(redis/membercache)、消息队列(mq)、数据库(db)都会面临高并发等问题高并发优化思路客户端层面尽量减少请求数量,充分利用客户端、浏览器自身缓存,如微服务前后端交互、网络传输详细记载,本文不在详叙尽量减少对服务端资源不必要浪费,如重复请求连接后端打开/关闭操作连接池Nginx层面动静分离,静态资源直接返回负载均衡,如F5/LVS分流多个Nginx根据系统业务,单独拆分访问(路径)Varnish层面动态内容缓存、减少访问后端服务使用页面片段缓存技术,如ESIWeb服务器层面针对JVM配置进行合理优化服务器配置进行优化,如:调整内存数量、线程数量等相同服务部署多台机器,实现负载均衡增加资源,如增加网络带宽、高性能服务器、高性能数据库 (立杆见效,服务器普通硬盘换SSD,数据库换物理机等)请求分流
1.使用集群:如之前1台处理100个请求,增加两台后,3台机器虚拟组成一个集群后,对外处理请求可以提升到300*80%=240
2.采用微服务架构,后续微服务架构高可用会详细描述Web应用层面(优化应用程序)提高单个请求的处理速度,如上如果处理一个请求消耗从1s降低到0.5秒,并发就是200耗时业务同步根据业务情况 使用mq异步处理比如导入、导出耗时耗力 合理使用多线程批量处理、指向单台应用独立处理高效使用缓存,减少锁的使用范围优化访问数据库SQL尽量避免远程调用、大量I/O等耗时操作合理规划事物等比较耗资源操作部分业务考虑采用预计算处理,减少实时计算耗资源操作 如:报表不要盲目使用RPC、netty、http远程网络调用,如需特定调用注意加上超时时间数据库层面合理使用数据库引擎 如 mysql的InnoDB和MyISAM引擎数据库系统参数配置优化特殊复杂计算耗时操作可以考虑使用存储过程来处理数据库集群,进行读写分离合理设计数据库表结构、索引 如(组合索引)分库、分区、分表降到单库单表并发量合理使用Nosql,如传统、分布式数据库共存,根据数据特性合理存放(hbase、hive、mongoDB)到此,关于“怎么理解数据库分布式架构的高并发处理”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注开发云网站,小编会继续努力为大家带来更多实用的文章!

相关推荐: 自动注解实现Spring IOC和事务管理的示例分析

自动注解实现Spring IOC和事务管理的示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。IOC即控制反转,我们要把对象的创建通过注解来实现@Service 类中声明了@Service注解…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 08/17 13:47
下一篇 08/17 13:48

相关推荐