淘宝 进化史

2020-01-06  本文已影响0人  会去大草原的程序猿

?淘宝是怎么承受住90秒100亿请求的?


零:单机架构

弊端: 随着用户数的增长,Tomcat和数据库之间竞争资源,单机性能不足以支撑业务

一:Tomcat与数据库分开部署

弊端:随着用户数的增长,并发读写数据库称为瓶颈

二:引入本地缓存和分布式缓存

弊端:随着用户数的增长,并发压力主要落在单机的Tomcat上,响应逐渐变慢

三:引入反向代理实现负载均衡

弊端:并发量的增长也意味着更多请求穿透到数据库,单机的数据库最终成为瓶颈

四:数据库读写分离

弊端:不同业务之间的访问量差距较大,不同业务直接竞争数据库,相互影响性能。*

五:数据库按业务分库

弊端:单机的写库会逐渐会达到性能瓶颈*

六:把大表拆分为小表

弊端:随着用户数的增长,最终单机的Nginx会成为瓶颈。

七:使用LVS或F5来使多个Nginx负载均衡

弊端:用户分布在不同的地区,与服务器机房距离不同,导致了访问的延迟会明显不同

八:通过DNS轮询实现机房间的负载均衡

弊端:随着数据的丰富程度和业务的发展,检索、分析等需求越来越丰富,单单依靠数据库无法解决如此丰富的需求。

九:引入NoSQL数据库和搜索引擎等技术

弊端:一个应用中包含了太多的业务代码,业务的升级迭代变得困难。

十:大应用拆分为小应用

弊端:不同应用之间存在共用的模块,由应用单独管理会导致相同代码存在多份,导致公共功能升级时全部应用代码都要跟着升级。

十一:复用的功能抽离成微服务

弊端:应用访问服务,服务之间也可能相互访问,调用链将会变得非常复杂,逻辑变得混乱。

十二:引入企业服务总线ESB屏蔽服务接口的访问差异

弊端:对于如大促这些需要动态扩缩容的场景,需要水平扩展服务的性能,就需要在新增的服务上准备运行环境,部署服务等,运维将变得十分困难。

十三:引入容器化技术实现运行环境隔离与动态服务管理

弊端:机器换还是需要公司自身来管理,在非大促的时候,还是需要闲置着大量的机器资源来应对大促,机器自身成本和运维成本都极高,资源利用率低。

十四:以云平台承载系统

上一篇 下一篇

猜你喜欢

热点阅读