这篇文章主要介绍“怎么理解数据库分布式架构的高并发处理”,在日常操作中,相信很多人在怎么理解数据库分布式架构的高并发处理问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么理解数据库分布式架构的高并发处理”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
分布式架构 高并发处理
高并发介绍
在同时或者极短时间内,有大量请求到达服务端,每个请求都需要服务端耗费资源进行处理,并做出相应反馈
服务端比如同时开启进程数,能同时运行的线程数、网络连接数、CPU运算、I/O、内存都是有限,
所以服务端能同时处理请求也是有限的。高并发本质就是资源的有限性
如:1.系统在线人数10W,并不意味系统并发用户是10W,可能存在10w用户同时在首页查看静态文章,并未对服务器进行发送请求
那么高并发数 是根据系统真实用户数并发送请求需要服务端耗费资源进行处理的请求
2.服务端只能开启100个线程,恰好1个线程处理一个请求需要耗时1s,那么服务端1s只能处理100个请求,多余请求无法处理
经典案例
准备阶段

实现阶段
客户端层面:
Web端层面:
F5/LVS+Nginx接收高并发请求、并做负载均衡
Lua脚本+Redis做请求队列,针对有效请求用List排队,并实现一些基本操作(限流、账号参加次数检查、同一IP请求数检查)
Redis单线程高性能,每秒处理100W请求,如果大于100W请求如何处理呢?
1.可以结合Lua脚本控制请求数量并限流,有效减少redis压力;比如100W请求,过滤20W,还剩80W,无效请求直接返回客户端不到达服务端
2.如果应用非常庞大,用户流量高额,Redis单节点做成集群模式,请求处理数量也随之增加
Varnish缓存静态页面和静态资源
Tomcat集群,预处理,通过业务场景判断用户是具备参加活动资格、账号是否正常、是否在黑名单等
逻辑层面:
高并发产生问题,分析思考
高并发优化思路
客户端层面
Nginx层面
动静分离,静态资源直接返回
负载均衡,如F5/LVS分流多个Nginx
根据系统业务,单独拆分访问(路径)
Varnish层面
动态内容缓存、减少访问后端服务
使用页面片段缓存技术,如ESI
Web服务器层面
针对JVM配置进行合理优化
服务器配置进行优化,如:调整内存数量、线程数量等
相同服务部署多台机器,实现负载均衡
增加资源,如增加网络带宽、高性能服务器、高性能数据库 (立杆见效,服务器普通硬盘换SSD,数据库换物理机等)
请求分流
1.使用集群:如之前1台处理100个请求,增加两台后,3台机器虚拟组成一个集群后,对外处理请求可以提升到300*80%=240
2.采用微服务架构,后续微服务架构高可用会详细描述
Web应用层面(优化应用程序)
提高单个请求的处理速度,如上如果处理一个请求消耗从1s降低到0.5秒,并发就是200
耗时业务同步根据业务情况 使用mq异步处理
比如导入、导出耗时耗力 合理使用多线程批量处理、指向单台应用独立处理
高效使用缓存,减少锁的使用范围
优化访问数据库SQL
尽量避免远程调用、大量I/O等耗时操作
合理规划事物等比较耗资源操作
部分业务考虑采用预计算处理,减少实时计算耗资源操作 如:报表
不要盲目使用RPC、netty、http远程网络调用,如需特定调用注意加上超时时间
数据库层面
到此,关于“怎么理解数据库分布式架构的高并发处理”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注天达云网站,小编会继续努力为大家带来更多实用的文章!