分布式、集群、微服务

开发同学可能经常听到这些名词,也可能对他们的区别和联系产生疑问,这里我简单谈一下自己的理解,仅一家之见,欢迎指正。

分布式

分布式是一个很大的概念,而核心就在于分布二字,原本是单体服务,所有东西都在一台机器上;极端如古老的jsp,甚至所有的东西都在一个进程上。现在加了一台机器,nginx做了下复杂均衡,那我就可以认为,从单体转向了分布式。

分布又可以理解为分散分担。所谓分散,就是一台机器不靠谱,可能会崩,那我多加几台,总归有的服务器可用。而分担,就是典型的分而治之的思想,这种思想在多线程开发中也非常常见;而实际中,典型的就是前后端分离了,不同服务器承担不同的职责。

集群

集群字面上很明显可以看出,是一群服务器,集中对外提供相同的能力。比如经常说到的Redis集群、MySQL集群,当然集群具体的实现,可以是主从,也可以是真正的集群,各节点功能一致。

所以我认为,集群就是分布式概念中,分散能力的体现。

微服务

前面提到了分而治之的思想,微服务就是为了处理这个问题的,将不同的功能划分成不同的服务,很常见的场景就是商品服务和订单服务。这样做的好处很多,一是让不同的人员专注与自身模块的开发,实现高内聚低耦合,二是不同的服务独立,并发量和数据量都大大的降低,提升了系统整体性能。

总结

所以说,分布式就是为了解决高并发、高性能、高可用而提出的一种思想,而集群和微服务就是具体的实现。特别是Java开发和Spring Cloud框架的角度,这些概念其实是同时出现的,拆分成不同的微服务后,每个服务都可以伸缩扩容,形成集群,从而实现分布式。

tips:特别注意的是,每一种技术的引入,都给系统带来了成倍的复杂度,对开发运维都是极大的考验,千万不能为了用技术而用技术,即如无必要,勿增实体。

你可能感兴趣的:(分布式,微服务,java)