阿狸先森 互联网架构“高并发”到底怎么玩?( 二 )
画外音:nginx是个例子 , 有可能是LVS或者F5等反向代理 。
当web后端成为瓶颈的时候 , 只要增加服务器数量 , 新增web服务的部署 , 在nginx配置中配置上新的web后端 , 就能扩展站点层的性能 , 做到理论上的无限高并发 。
服务层如何进行水平扩展?
画外音:如果需要优雅的进行服务层自动扩容 , 这里可能需要配置中心里服务自动发现功能的支持 。
数据层如何进行水平扩展?
在数据量很大的情况下 , 数据层(缓存 , 数据库)涉及数据的水平扩展 , 将原本存储在一台服务器上的数据(缓存 , 数据库)水平拆分到不同服务器上去 , 以达到扩充系统性能的目的 。
互联网数据层常见的水平拆分方式有这么几种 , 以数据库为例:
一、按照范围水平拆分
(1)规则简单 , service只需判断一下uid范围就能路由到对应的存储服务;
(2)数据均衡性较好;
(3)比较容易扩展 , 可以随时加一个uid[2kw,3kw]的数据服务;
不足是:
(1)请求的负载不一定均衡 , 一般来说 , 新注册的用户会比老用户更活跃 , 大range的服务请求压力会更大;
二、按照哈希水平拆分
(1)规则简单 , service只需对uid进行hash能路由到对应的存储服务;
(2)数据均衡性较好;
(3)请求均匀性较好;
不足是:
(1)不容易扩展 , 扩展一个数据服务 , hash方法改变时候 , 可能需要进行数据迁移;
通过水平拆分来扩充系统性能 , 与主从同步读写分离来扩充数据库性能 , 有什么本质的不同?
画外音:这两个方案千万别搞混 。
通过水平拆分扩展数据库性能:
(1)每个服务器上存储的数据量是总量的1/n , 所以单机的性能也会有提升;
(2)n个服务器上的数据没有交集 , 那个服务器上数据的并集是数据的全集;
(3)数据水平拆分到了n个服务器上 , 理论上读性能扩充了n倍 , 写性能也扩充了n倍(其实远不止n倍 , 因为单机的数据量变为了原来的1/n);
通过主从同步读写分离扩展数据库性能:
(1)每个服务器上存储的数据量是和总量相同;
(2)n个服务器上的数据都一样 , 都是全集;
(3)理论上读性能扩充了n倍 , 写仍然是单点 , 写性能不变;
缓存层的水平拆分和数据库层的水平拆分类似 , 也是以范围拆分和哈希拆分的方式居多 , 就不再展开 。
总结
高并发(HighConcurrency)是互联网分布式系统架构设计中必须考虑的因素之一 , 它通常是指 , 通过设计保证系统能够同时并行处理很多请求 。
- 互联网支付宝搜索流量全面开放:麦当劳、肯德基、星巴克等抢先升级“品牌直达”
- 互联网支付宝:首页搜索“品牌直达”能力正式面向全行业品牌商家开放
- 干衣机|米家互联网热泵干衣机发布:35分钟快烘 3499元
- 亚马逊建设卫星互联网系统获批
- 行业互联网同比增长26.4%,上汽大通MAXUS 7月热销超万台
- 行业互联网澳柯玛,智慧冷链疫苗存储,内循环经济智能家居,叠加芯片概念
- 新华网|“中国互联网联合辟谣平台”学习强国号上线运行
- 辛先森科技说 科技发展会更快,还是发生内卷化效应?,如果世界各国联系更紧密
- 上半年规上互联网企业收入增14.1%
- 懂懂副业 普通人的躺赚机会来了,互联网6个靠谱的副业项目盘点