互联网架构“高并发”如何发挥作用?

发布者:上海IT外包来源:http://www.lanmon.net点击数:1104

最近,我向很多朋友询问过“高并发”。公共号码不支持历史文章检索,所以我重新优化了发布,希望每个人都能获得一些东西。
什么是高并发?
高并发性是Internet分布式系统体系结构设计中必须考虑的因素之一。它通常意味着系统可以保证可以同时并行处理许多请求。
与高并发性相关的常见指标有哪些?
响应时间(响应时间)
吞吐量(吞吐量)
每秒QPS(每秒查询数)
并发用户数
什么是响应时间?
系统响应请求的时间。
例如,系统处理HTTP请求需要200ms。这200ms是系统的响应时间。
什么是吞吐量?
每单位时间处理的请求数。
什么是QPS?
每秒请求数。在互联网世界中,这个指标和吞吐量并不那么明显。
并发用户数是多少?
同时承载系统功能的用户数。
例如:即时消息系统,而在线金额表示系统的并发用户数量的一定程度。
如何提高系统的并发性?
Internet分布式架构设计,提高系统并发能力的方式,主要有两种方法:
放大
向外扩展
什么是垂直扩张?
垂直扩展意味着有两种方法可以提高单台机器的处理能力:
提高独立硬件的性能,例如:增加32核等CPU核心数量,升级10G等更好的网卡,升级SSD等硬盘,扩展2T等硬盘容量,扩展系统内存比如128G;
提高独立架构性能,例如:使用Cache减少IO时间,使用异步来增加单一服务吞吐量,并使用无锁数据结构来缩短响应时间;
画外音:在互联网业务快速发展的早期,如果预算不成问题,强烈建议使用“增强的独立硬件性能”方法来提高系统并发性,因为在这个阶段,公司的战略往往是开发业务抢占时间,而“增强的独立硬件性能往往是最快的方式。
垂直扩张的瓶颈是什么?
无论是改善独立硬件性能还是改善独立架构性能,都存在一个致命的缺陷:独立性能始终存在极限。
如何突破单机的极限?
Internet分布式架构设计,高并发最终解决方案或横向扩展。什么是横向扩展?
只要增加服务器数量,就可以线性扩展系统性能。
什么是常见的Internet分层架构?
每个楼层应如何水平扩展?
常见的Internet分布式架构如下:
客户端层:典型的呼叫者是浏览器浏览器或移动应用程序;
反向代理层:系统入口,反向代理;
站点应用层:实现核心应用逻辑,返回html或json;
服务层:如果实现了服务,就有这个层;
数据缓存层:缓存加速访问存储;
数据库层:数据库凝固数据存储;
为了使系统支持水平扩展,每层必须支持水平扩展。
反向代理层如何水平缩放?
反向代理层的水平扩展由“DNS轮询”实现:dns-server为域名配置多个解析ips,每次DNS解析请求访问dns-server时,轮询返回这些ips。
当nginx成为瓶颈时,只要服务器数量增加,就会增加nginx服务的部署,并添加外部网络ip,可以扩展反向代理层的性能,以及理论上无限高的并发性已完成。
网站图层如何水平缩放?
站点层的水平扩展由“nginx”实现。通过修改nginx.conf,您可以设置多个Web后端。
画外音:nginx就是一个例子。它可以是反向代理,例如LVS或F5。
当Web后端成为瓶颈时,只要服务器数量增加,就会添加Web服务的部署,并且在nginx配置中配置新的Web后端,可以扩展站点层的性能,以及实现了理论上的无限高并发性。
服务层如何水平扩展?
服务层的水平扩展是通过“服务连接池”实现的。
当站点层通过RPC客户端调用下游服务层RPC-server时,RPC客户端中的连接池将与下游服务建立多个连接。当服务成为瓶颈时,只要服务器数量增加,就会添加服务部署。通过在RPC客户端建立新的下游服务连接,可以扩展服务层性能,从而在理论上实现无限高的并发性。
画外音:如果您需要自动优雅地扩展服务层,您可能需要在中心配置对自动服务发现的支持。
数据层如何水平缩放?
在大量数据的情况下,数据层(缓存,数据库)涉及数据的水平扩展,并且最初存储在一个服务器上的数据(缓存,数据库)被水平地分割到不同的服务器以实现系统性能扩展。的目标。
分割Internet数据层有几种常用方法。以数据库为例:1.按范围拆分
每个数据服务都存储一定范围的数据,如上图所示:
User0库,存储uid范围1-1kw
User1库,存储uid范围1kw-2kw
该计划的好处是:
规则很简单,服务只需要判断要路由到相应存储服务的uid的范围;
良好的数据平衡;
它更容易扩展,您可以随时添加uid [2kw,3kw]数据服务;
缺点是:
请求的负载不一定是平衡的。一般来说,新注册的用户比旧用户更活跃,大范围的服务请求压力会更大;
2.根据哈希级别进行拆分
对于每个数据库,在键值哈希后存储一些数据,如上图所示:
User0库,甚至存储uid数据
User1库,存储奇数uid数据
该计划的好处是:
规则很简单,服务只需要将uid哈希路由到相应的存储服务;
良好的数据平衡;
要求一致性更好;
缺点是:
扩展并不容易,并且扩展了数据服务。更改哈希方法时,可能需要进行数据迁移。
通过水平拆分和同步读写与主站和从站来扩展系统性能以扩展数据库性能之间的本质区别是什么?
画外音:不要混淆这两个程序。
通过水平拆分扩展数据库性能:
存储在每台服务器上的数据量是总量的1/n,因此单台机器的性能也会提高;
n个服务器上的数据不相交,该服务器上数据的并集是完整的数据集;
数据级别分为n个服务器。理论上,读取性能扩展了n倍,写入性能也扩展了n倍(事实上,它远远超过n次,因为单个机器的数据量变为原始的1/n);
通过主从同步读写分离扩展数据库性能:
每台服务器上存储的数据量与总量相同;
n台服务器上的数据相同,都是完整的;
从理论上讲,读取性能扩展了n倍,写入仍然是单点,写入性能不变;
缓存层的水平分割类似于数据库层的水平分割。它也主要采用范围分割和散列分割的形式,不再扩展。
IT外包
>
400-635-8089
立即
咨询
电话咨询
服务热线
400-635-8089
微信咨询
微信咨询
微信咨询
公众号
公众号
公众号
返回顶部