一直以来都对分布式概念比较模糊,分不清到底一个系统环境是集群还是分布式?2者有什么区别或者必然联系,此博客在最近整理出来 的一些思想,起到一个记录功能,如果有幸被大家看到希望可以一起探讨。
首次说到分布式就不得不提集群,集群是将多个服务通过load Banlance管理来实现一个服务群体,称作集群。
如果单纯的将一个系统分别部署在不同的服务器上,我认为这个叫做服务器分布式搭建,而不是我们所说的分布式系统,因为虽然分为了不同的服务器但是每一台服务器做的是同样的工作,在并发高的情况下所做的更多的是减轻服务器压力这样一个工作,而在提高系统吞吐效率,响应速度方面没有达到一个分布式系统该有的预期效果。
而分布式系统是将一个系统的几个功能模块分到不同的服务器上来实现一个支持各个功能模块水平扩展的一个系统,在高并发情况下单独一个系统吞吐效率底下的时候可以水平扩展,并且各个模块之间是低耦合的。
下面上一组在别人博客里面找到的图,这个大神也认为这个系统是一个伪分布式:
这个就像上述我所说的这个是将一个系统整体分别部署到不同的服务器来实现服务器集群,也就是服务器分布式,基于硬件的分布式,而不是软件。
下面上一组我认为的软件分布式:
首先请求进来到负载均衡服务器,转发到某一台服务器,这个服务器部署的是我们的Server,而在server进行某些业务操作的时候不是其本身包含的业务代码实现的,而是请求到我们功能模块集群的负载均衡器,然后转发到我们对应的功能模块接口,这一层我认为实现了软件方面的分布式处理,然后功能模块通过DB集群或者缓存集群来进行数据操作。
我认为将一个系统的功能模块颗粒化成不同的服务体系,也就是我们所说的SOA架构体系,而更细致的将每一个服务模块在分为成更细的颗粒模块也就是我们说的微服务体系,所以我认为无论soa也好微服务也好才更符合分布式软件系统的核心含义。