浅谈集群与分布式的区别

简单来说,

  • 分布式:一个业务分拆多个子业务,部署在不同的服务器上。
  • 集群:同一个业务,部署在多个服务器上。

举例电子商务网站,比如公司项目上线

  • 初期:用户访问量低,只弄了一台服务器,一个tomcat项目运行一个web工程。
  • 中期:用户访问量提高,服务器崩了,为了解决这个问题,购买服务器,增加服务器数量,然后每个服务器中个各放了一份,使用nginx代理转发。(这就是运用集群原理)
  • 后期:用户访问量不断增加,响应速度变慢,服务器又崩了,在不考虑增加服务器带宽、内存和CPU的情况下如何解决这个问题?先解决响应速度变慢,用户频繁调用数据库,在客户端与数据库之间,使用redis缓存。解决之后,又发现问题:由于每台服务器运行一个tomcat,放着一个web工程,用户有可能在商品详情存在大幅度调用数据库,而订单列表调用幅度小,此时就存在着模块之间耦合度高,一个功能升级其他也需要升级,扩展性差,不能灵活部署。是该考虑项目重构,把项目按照模块分为不同的系统(使用zookeeper进行模块之间通信),例如:订单系统,会员系统、搜索系统、商品信息系统。把每个模块进行拆分,用户在哪个系统访问频繁,就针对哪个系统进行对症下药,增加缓存还是使用其他技术。(这样我们就可以单独对这个模块进行服务性能的提升,不用全部都一起提升。也降低了代码的耦合度,模块之间互不影响,即使后期增加开发人员,也可按照敏捷开发思想只对其负责模块进行开发,效率大大提升)。这样一个web工程就拆分成多个web工程(多个tomcat部署)。那这个项目就可以在一台服务器部署多个工程(不同端口进行通信)或者多台服务器运行单个项目。(这就是分布式原理)

总结,分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。

另一个通俗的解释,分布式是“分头做事”,集群是“一堆人做同一事”的区别。

分布式缺点:

  1. 分布式意味着服务器调用必须经过网络,这可能会对性能造成严重性的影响。
  2. 服务器越多,服务器宕机的概率就越大,一台服务器宕机造成的服务器不可用可能会导致很多应用不可访问,使网站可用性降低。
  3. 数据库在分布式的环境中保持数据性的一致性也非常困难,分布式事务难以保证。这对网站业务正确性和业务流程有可能造成很大影响。(CAP和BASE原则

  4. 分布式还导致网络依赖错综复杂,开发管理维护困难。因此切莫为了分布式而分布式。
发布了430 篇原创文章 · 获赞 364 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/lixinkuan328/article/details/104259418