深入理解集群、分布式、微服务的概念、关系和区别

简介: 区别: 集群是个物理形态,分布式是个工作方式。

一、集群与分布式的区别

区别: 集群是个物理形态,分布式是个工作方式。


分布式:
1、一个业务分拆多个子业务,部署在不同的服务器上,
2、将不同的业务分布在不同的地方。
3、分布式中的每一个节点,都可以做集群
4、从窄意上理解,也跟集群差不多,但是它的组织比较松散
5、分布式的每一个节点,都完成不同的业务,一个节点垮了,那这个业务就不可访问了
6、以缩短单个任务的执行时间来提升效率的

举例

分布式的目标是降低单个对象的重要度,从而提升整个系统的性能(稳定性,计算能力等等),不过代价是增加了数据传输量

假如中国专门造了一台超级电脑,用来计算天气预报的数据,然后所有的电视台都从这台电脑获取数据,然后播放天气预报。那么这种模式就是核心式的,这台电脑处于核心位置,如果这台电脑坏了,不能工作了,那么所有电视台的天气预报都不能进行了。

现在这样设计,每个省各自出一台普通电脑,然后这些电脑联合工作,一起计算天气预报(一个业务拆分成多个子业务),虽然每台电脑的计算能力远没有那台超级电脑强,但是它们协同工作,即使某台或者某几台电脑坏了,计算仍然能继续(坏了的那几台的计算工作将会转移到其他电脑上【这里是负载均衡-集群】)。这样就降低了每台电脑的重要程度,使得天气预报系统更加稳定,不过这些电脑之间的协调就比较复杂了。


集群:
1、同一个业务,部署在多个服务器上
2、分担并发量,提升计算机的运算速度
3、几台服务器集中在一起,实现同一业务。
4、集群并不一定就是分布式的。
5、有一个组织性,一台服务器垮了,其它的服务器可以顶上来
6、通过提高单位时间内执行的任务数来提升效率
7、不同服务器部署同一套服务对外访问,一般配置Nginx(5w并发量)的负载容器实现服务的负载均衡、静态资源缓存、Session共享。
8、区别集群的方式是根据部署多台服务器业务是否相同。

注:集群模式需要做好session共享,确保在不同服务器切换的过程中不会因为没有获取到session而中止退出服务。


举例:

就比如新浪网,访问的人多了,他可以做一个群集,前面放一个响应服务器,后面几台服务器完成同一业务,如果有业务访问的时候,响应服务器看哪台服务器的负载不是很重,就将给哪一台去完成,实现了负载均衡的原理。


例如: 如果一个任务由 10 个子任务组成,每个子任务单独执行需 1 小时,则在一台服务器上执行该任务需 10 小时。


采用分布式方案,提供 10 台服务器,每台服务器只负责处理一个子任务,不考虑子任务间的依赖关系,执行完这个任务只需一个小时。(这种工作模式的一个典型代表就是 Hadoop 的 Map/Reduce 分布式计算模型)


而采用集群方案,同样提供 10 台服务器,每台服务器都能独立处理这个任务。假设有 10 个任务同时到达,10 个服务器将同时工作,1 小时后,10 个任务同时完成,这样,整身来看,还是 1 小时内完成一个任务!


2020071221003270.jpg

注意

好的设计应该是分布式和集群的结合,先分布式再集群,具体实现就是业务拆分成很多子业务,然后针对每个子业务进行集群部署,这样每个子业务如果出了问题,整个系统完全不会受影响。

二、微服务与分布式的区别

微服务

是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。


微服务:

1、微服务是系统架构的设计方式
2、当业务模块A出了问题,不影响业务模块B正常工作(因为分解成了2个独立的服务,但服务A和服务B可以都部署在同一服务器上。
3、微服务的核心要素是服务划分的“微小”。
4、纵向扩展单个业务,实现微服务。
5、微服务重在解耦合,使每个模块都独立
6、微服务一定会去解决分布式事务问题


20200715175816776.jpg

分布式:
分布式:
1、分布式是系统的部署方式
2、分布式系统中可横向扩展服务器,降低业务的耦合度。
3、将不同业务部署在多台服务器或者虚拟机上,通过RPC或者Restful进行数据传输。
4、分布式重在资源共享与加快计算机计算速度

将一个大的系统划分为多个业务模块,业务模块分别部署到不同的机器上,各个业务模块之间通过接口进行数据交互。区别分布式的方式是根据不同机器不同业务。


20200712204252287.png


上面:service A、B、C、D 分别是业务组件,通过API Geteway进行业务访问。


注:分布式需要做好事务管理。


分布式事务可参考:微服务架构的分布式事务解决方案


注意:

 分布式未必是微服务,比如将一个单体应用划分成三块部署,这符合分布式;但这三块依旧很大,不符合微服务。但分布式最后都会向微服务演进。
**问:** 分布式是否属于微服务?
答案是肯定的。微服务的意思也就是将模块拆分成一个独立的服务单元通过接口来实现数据的交互。
**问:** 什么是微服务架构
微服务的设计是为了不因为某个模块的升级和BUG影响现有的系统业务。微服务与分布式的细微差别是,微服务的应用不一定是分散在多个服务器上,他也可以是同一个服务器。


20200712210406888.jpg

分布式和微服的架构很相似,只是部署的方式不一样而已。记得点赞、收藏、评论呦!!!!

相关文章
|
17天前
|
存储 SpringCloudAlibaba Java
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论。
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
|
8天前
|
Java 关系型数据库 数据库
微服务SpringCloud分布式事务之Seata
SpringCloud+SpringCloudAlibaba的Seata实现分布式事务,步骤超详细,附带视频教程
29 1
|
1月前
|
存储 运维 数据可视化
如何为微服务实现分布式日志记录
如何为微服务实现分布式日志记录
71 1
|
2月前
|
架构师 中间件 API
微服务和 SOA 的 6 大核心区别,你都知道吗?
本文详解SOA与微服务的六大区别,帮助更好地理解和应用这两种架构,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
微服务和 SOA 的 6 大核心区别,你都知道吗?
|
2月前
|
微服务
微服务与SOA区别
微服务与SOA区别
31 0
微服务与SOA区别
|
2月前
|
存储 分布式计算 负载均衡
分布式计算模型和集群计算模型的区别
【10月更文挑战第18天】分布式计算模型和集群计算模型各有特点和优势,在实际应用中需要根据具体的需求和条件选择合适的计算架构模式,以达到最佳的计算效果和性能。
89 2
|
3月前
|
消息中间件 存储 负载均衡
微服务与分布式系统设计看这篇就够了!
【10月更文挑战第12天】 在现代软件架构中,微服务和分布式系统设计已经成为构建可扩展、灵活和可靠应用程序的主流方法。本文将深入探讨微服务架构的核心概念、设计原则和挑战,并提供一些关于如何在分布式系统中实现微服务的实用指导。
110 2
|
2月前
|
存储 监控 大数据
构建高可用性ClickHouse集群:从单节点到分布式
【10月更文挑战第26天】随着业务的不断增长,单一的数据存储解决方案可能无法满足日益增加的数据处理需求。在大数据时代,数据库的性能、可扩展性和稳定性成为企业关注的重点。ClickHouse 是一个用于联机分析处理(OLAP)的列式数据库管理系统(DBMS),以其卓越的查询性能和高吞吐量而闻名。本文将从我的个人角度出发,分享如何将单节点 ClickHouse 扩展为高可用性的分布式集群,以提升系统的稳定性和可靠性。
185 0
|
3月前
|
NoSQL Java Redis
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
Redis分布式锁在高并发场景下是重要的技术手段,但其实现过程中常遇到五大深坑:**原子性问题**、**连接耗尽问题**、**锁过期问题**、**锁失效问题**以及**锁分段问题**。这些问题不仅影响系统的稳定性和性能,还可能导致数据不一致。尼恩在实际项目中总结了这些坑,并提供了详细的解决方案,包括使用Lua脚本保证原子性、设置合理的锁过期时间和使用看门狗机制、以及通过锁分段提升性能。这些经验和技巧对面试和实际开发都有很大帮助,值得深入学习和实践。
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
|
1月前
|
存储 NoSQL Java
使用lock4j-redis-template-spring-boot-starter实现redis分布式锁
通过使用 `lock4j-redis-template-spring-boot-starter`,我们可以轻松实现 Redis 分布式锁,从而解决分布式系统中多个实例并发访问共享资源的问题。合理配置和使用分布式锁,可以有效提高系统的稳定性和数据的一致性。希望本文对你在实际项目中使用 Redis 分布式锁有所帮助。
126 5