网上关于分布式架构的演进过程也是颇多,大部分讲得也都很精彩,之所以没有转载而是再开一篇,主要是为了自己亲自总结一遍和加深印象,以免“纸上得来终觉浅”。

记得刚开始做程序员时,听到别人会什么分布式,微服务架构 瞬间觉得牛逼的不行了,然后现在再回头看看,觉得也就那样了,如果说这是我们猿类的一种发展和进化过程,那么分布式系统其实也是一种进化的产物,在它出现之前,足足经历了子孙八代的发展,下面我们就一起回顾下分布式架构的前世今生。

第一代:单体应用

应用系统架构模式 应用系统架构演进_分布式架构的发展

把应用和数据库都放在一台服务器上。

第二代:应用服务器和数据服务器分离

应用系统架构模式 应用系统架构演进_分布式架构演进_02

把应用和数据库部署到不同的服务器上。

 

第三代:应用服务器集群

应用服务器做了集群,前端应用通过访问负载均衡器负载到不同的应用上,但数据库并未集群。

 

第四代:数据库读写分离

将数据库分别部署到不同的服务器上,主从复制,读写分离,以减轻数据库的压力。

 

第五代:引入搜索引擎

建立搜索引擎,以减轻数据库模糊查询时的压力。

第六代:引入缓存

应用系统架构模式 应用系统架构演进_分布式架构的前世今生_03

通过引入redis mongodb等缓存数据库,以此来减轻数据库的压力。

第七代:数据库的垂直拆分和水平拆分

垂直拆分:其实就是分库,将数据库按不同的模块进行拆分,比如订单模块一个库,商品模块一个库。

水平拆分:其实就是分表,将一些数据量比较庞大的表按照一定逻辑进行拆分,比如订单表,将其拆分成3个订单表,每个订单表里存放其中的一部分数据。

第八代:应用的拆分

应用系统架构模式 应用系统架构演进_分布式架构的发展_04

将应用按照不同的功能模块拆分成一个个小的应用部署在不同的服务器上,不同的应用之间通过相互调用协调完成某项功能,不同服务之间调用可以通过dubbo webservice rmi等完成。

应用系统架构模式 应用系统架构演进_分布式架构演进_05

不同的服务所能够承载的并发量级是不同的,在引入了分布式后虽然提高了性能,但却增加了系统的复杂度和维护难度,开发难度等,所以没有哪种架构是最优的,只有最合适的架构.

分布式架构足足演进了八代才修成正果,当然这不是终点,在分布式架构的基础上,发展出了soa,微服务,当然有理由相信微服务也不是终点,就像人类的发展一样,谁也不知道终点在何方。