学习成长

提供在线文档,方便大家学习


高并发

<p><strong>高并发概念</strong> 高并发(High Concurrency)它通常是指,通过设计保证系统能够同时并行处理很多请求。 <strong>高并发重要指标</strong></p> <ol> <li>响应时间(Response Time):系统对请求做出响应的时间。例如系统处理一个HTTP请求需要200ms,这个200ms就是系统的响应时间。</li> <li>吞吐量(Throughput):单位时间内处理的请求数量。</li> <li>每秒查询率QPS:每秒响应请求数。在互联网领域,这个指标和吞吐量区分的没有这么明显。</li> <li>并发数: 系统同时处理的request/事务数 并发数= QPS*平均响应时间</li> <li>系统用户数:系统额定的用户数量,如一个OA系统,可能使用该系统的用户总数是5000个,那么这个数量,就是系统用户数。</li> <li>同时在线用户数:在一定的时间范围内,最大的同时在线用户数量。</li> <li>并发用户数:同时承载正常使用系统功能的用户数量。例如一个即时通讯系统,同时在线量一定程度上代表了系统的并发用户数。 C=nL / T 其中C是平均的并发用户数,n是平均每天访问用户数(login session),L是一天内用户从登录到退出的平均时间(login session的平均时间),T是考察时间长度(一天内多长时间有用户使用系统)</li> <li>并发用户数峰值: C^=C + 3*根号C 其中C^是并发用户峰值,C是平均并发用户数,该公式遵循泊松分布理论。</li> </ol> <p><strong>高并发方法论</strong> 主要有两种:垂直扩展(Scale Up)与水平扩展(Scale Out) <strong>垂直扩展</strong>:提升单机处理能力 1&gt;增强单机硬件性能 提升CPU核数 提升网卡 提升硬盘如SSD, 扩充硬盘容量 扩充内存 2&gt;提升单机架构性能 数据库池, 线程池 内存池 无锁编程 高效算法 <strong>水平扩展</strong>:增加服务器数量,就能线性扩充系统性能。 水平扩展对系统架构设计是有要求的,如何在架构各层进行可水平扩展的设计,必须了解架构分层。 常见的架构分层 <img src="https://www.showdoc.cc/server/api/common/visitfile/sign/03372e4cd57d1e935b46386869ccbfa6?showdoc=.jpg" alt="" /> (1)客户端层:典型调用方是浏览器browser或者手机应用APP (2)反向代理层:系统入口,反向代理 (3)站点应用层:实现核心应用逻辑,返回html或者json (4)服务层:如果实现了服务化,就有这一层 (5)数据-缓存层:缓存加速访问存储 (6)数据-数据库层:分库分表,读写分离 整个系统进行各层次的水平扩展</p> <p>高并发技术方案:提高高并发能力 <img src="https://www.showdoc.cc/server/api/common/visitfile/sign/50e349872ed67a962e7f7894615414e7?showdoc=.jpg" alt="" /> 1.分布式缓存:redis、memcached等,结合CDN来解决图片文件等访问。 2.消息队列中间件:activeMQ等,解决大量消息的异步处理能力。 3.应用拆分:一个工程被拆分为多个工程部署,利用dubbo解决多工程之间的通信。 4.数据库垂直拆分和水平拆分(分库分表)等。 5.数据库读写分离,解决大数据的查询问题。 6.还可以利用nosql ,例如mongoDB配合mysql组合使用。 7.还需要建立大数据访问情况下的服务降级以及限流机制等。</p>

页面列表

ITEM_HTML