系统架构演进之路
2019-04-29 本文已影响0人
bernierayxu
1. 系统架构演进是什么样的?
- 小型网站的技术栈一般是LAMP,并且直接购买别人写好的模板,修修改改+汉化,快速成型。这就是第一版的淘宝所用的技术。
- 随着数据越来越多,存储空间开始不足,性能也大大减小(即并发能力下降)。
-
应用服务器和文件/数据服务器分离。
各种类型的服务器需要的硬件资源 - 数据库压力变大,先用本地/服务器缓存(redis/memcached)来改善。
-
单一应用服务器压力变大,则采用集群+负载均衡的方式来改善。
负载均衡 -
数据库再一次压力变大,此时采用读写分离,利用主从复制的方式搭建数据库集群。此时应用程序中需要数据读写模块。
读写分离模块 - 因为用户规模的扩大,来自不同地域的用户来进行访问,但是性能可能因为地域而产生差异。此时需要反向代理和CDN(CDN适用于静态资源)。而反向代理也是缓存,部署在服务器的最外层,有可能和负载均衡服务器是同一个。
-
因为单个数据库或者单个文件系统不能存储了,需要用到分布式文件系统和分布式数据库。其中hadoop等大数据处理的块至少是64MB一块,不适合用FastDFS来存储。
分布式文件系统和分布式数据库 - 因为数据存储的字段差异越来越大,会造成骷髅表;所以需要用到NoSQL;
-
因为文字检索的需求越来越大,原来的索引可能就没有效果了;所以需要用到搜索引擎;其中solr和elasticsearch都是基于lucene进行开发的,拿来就可以使用,而lucene是一个搜索开发工具包而已,需要额外集成。
搜索引擎 - 业务发展越来越大,牵一发而动全身;此时需要进行业务拆分。不同的产品线通过MQ建立关联。
-
业务再继续增大,但是不同业务之间有相同的业务单元,此时需要将相同的业务单元服务化,变成微服务。同时会引入配置中心。其中dubbo框架用到的配置中心是zookeeper
微服务框架和配置中心 -
再往后还需要什么功能?数据挖掘/推荐/分析,还有庞大的问题监控和分析等功能。此时需要引入大数据,日志分析,监控系统。
大数据,日志分析,监控系统 -
最后成型的架构系统是什么样的?
最终架构系统
2. 服务化的方式有哪两种?
- SOA,所有服务需要链接ESB(企业服务总线),ESB是个中心点,是个瓶颈。所有的数据需要传给ESB,然后再传回去给调用者。
-
微服务,则是调用者直接去访问被调用者,没有ESB。但是涉及到服务之间的依赖关系的治理。
服务化方式
3. 系统架构的思路是什么?
- 有些可以通过业务去解决业务的问题的方法,就不要用技术。
-
例如12306分时售票,分时段来销售不同路线的票。
架构思路
架构思路