淘宝 进化史
?淘宝是怎么承受住90秒100亿请求的?
零:单机架构
弊端: 随着用户数的增长,Tomcat和数据库之间竞争资源,单机性能不足以支撑业务
一:Tomcat与数据库分开部署
弊端:随着用户数的增长,并发读写数据库称为瓶颈
二:引入本地缓存和分布式缓存
弊端:随着用户数的增长,并发压力主要落在单机的Tomcat上,响应逐渐变慢
三:引入反向代理实现负载均衡
弊端:并发量的增长也意味着更多请求穿透到数据库,单机的数据库最终成为瓶颈
四:数据库读写分离
弊端:不同业务之间的访问量差距较大,不同业务直接竞争数据库,相互影响性能。*
五:数据库按业务分库
弊端:单机的写库会逐渐会达到性能瓶颈*
六:把大表拆分为小表
弊端:随着用户数的增长,最终单机的Nginx会成为瓶颈。
七:使用LVS或F5来使多个Nginx负载均衡
弊端:用户分布在不同的地区,与服务器机房距离不同,导致了访问的延迟会明显不同
八:通过DNS轮询实现机房间的负载均衡
弊端:随着数据的丰富程度和业务的发展,检索、分析等需求越来越丰富,单单依靠数据库无法解决如此丰富的需求。
九:引入NoSQL数据库和搜索引擎等技术
弊端:一个应用中包含了太多的业务代码,业务的升级迭代变得困难。
十:大应用拆分为小应用
弊端:不同应用之间存在共用的模块,由应用单独管理会导致相同代码存在多份,导致公共功能升级时全部应用代码都要跟着升级。
十一:复用的功能抽离成微服务
弊端:应用访问服务,服务之间也可能相互访问,调用链将会变得非常复杂,逻辑变得混乱。
十二:引入企业服务总线ESB屏蔽服务接口的访问差异
弊端:对于如大促这些需要动态扩缩容的场景,需要水平扩展服务的性能,就需要在新增的服务上准备运行环境,部署服务等,运维将变得十分困难。
十三:引入容器化技术实现运行环境隔离与动态服务管理
弊端:机器换还是需要公司自身来管理,在非大促的时候,还是需要闲置着大量的机器资源来应对大促,机器自身成本和运维成本都极高,资源利用率低。
十四:以云平台承载系统