PHP,DDD,CQRS,Event Sourcing,Kubernetes,Docker,Golang

0%

概念解释:集群与分布式的区别

之前一直对集群与分布式的概念不是很清楚,认为两个名词概念都差不多,那到底区别在哪呢,我也在网上找了很多解释,但似乎都没有言简意赅的讲清区别,或者说没有很形象的讲明每个名词是什么意思,到底有何用。那么我就依我的看法来讲一下,首先是分别讲解,再来合起来讲一下: 【集群】 处理同一个业务,目的是实现高可用性,可用性顾名思义,就是要让用户能用,并且随时能访问。一个集群针对一个业务并且有着多台服务器,当一个服务器挂掉,剩下的几台能顶替着继续工作(当然这几台服务器在那台服务器没挂的时候也不是闲着的,他们都是在同时处理大量请求的业务,那台服务器挂掉后,它的一些任务只好让这几台来顺带帮着完成了),这样用户能继续访问网站的某一业务。举个例子,比如我有发布日志的业务,如果我只有一台服务器支撑着这个业务,当服务器因某种原因挂掉后,那么用户也就无法发日志,这一业务也就无法使用。然而如果我有着服务器集群,其中一台挂掉,用户仍然能发日志。 【分布式】 将不同的业务放在不同的地方(节点),换句话说,每个分布式节点都处理不同的任务(一个节点处理一个业务),举个例子,有一个节点的业务是处理上传图片,还有一个节点的业务是处理发布文章,就这样把每个业务放在不同的地方(节点)。 【分布式与集群的关系】 每一个分布式节点都可以看做一个集群,上面说了,分布式的每一个节点都处理一种业务,而集群是处理同一业务,那么分布式的节点可以做一个集群。


当然,从不同角度看,可能理解也有偏差。主要还是集群的概念比较重要。我个人认为集群除了实现高可用性,还有高并发和高性能。这可能要涉及负载均衡了,比如访问一个网站的一个业务,对应的有一个集群,前面放着相应服务器,后面几台服务器负责处理这个业务,当有业务访问的时候,相应服务器会根据哪台服务器负载情况,将业务交给负载不是很重的服务器去完成