关于我分不清,分布式、微服务、集群这件事

    问题起因是和我小伙伴交流的时候,我们说到了分布式的这个问题,我理解的分布式是,比方说我有多台机器,某两台机器是后端代码,有三台是数据库服务器,一台主数据库,两台从数据库服务器,然后还有一台是redis服务器,在一台就对象存储服务器。

   我小伙伴的理解是,分布式和微服务是同时存在的,他说的是微服务是将一个大型服务拆分成多个模块,分布式是将多个服务部署在多个机器上,然后通过rpc实现相互调用,一般还有一个服务的注册中心,每个单独模块通过注册中心获取自己想要模块的数据。


   最后我想听听大佬们的意见,到底什么是分布式,什么是微服务,什么是集群
猪猪
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
猪猪
最佳答案

分布式: 分布式是将你的代码分开部署。

微服务: 微服务是需要做到单独运行的程度,其他模块死了,单是相互不影响

集群: 集群式多台服务器提供相同服务。

1年前 评论
GDDD 1年前
讨论数量: 21
猪猪

分布式: 分布式是将你的代码分开部署。

微服务: 微服务是需要做到单独运行的程度,其他模块死了,单是相互不影响

集群: 集群式多台服务器提供相同服务。

1年前 评论
GDDD 1年前
猪猪

小伙伴给我讲了1个小时了 我还是没理解到 :joy:

1年前 评论
猪猪

分布式: 分布式是将你的代码分开部署。

微服务: 微服务是需要做到单独运行的程度,其他模块死了,单是相互不影响

集群: 集群式多台服务器提供相同服务。

1年前 评论
GDDD 1年前
猪猪

终于搞明白了 :joy: :joy: :joy: :joy: :joy:

1年前 评论
抄你码科技有限公司

我的粗见:

单体:啥都装一台单机上,网站后台能跑就行

分布式/集群:把mysql,redis那些基础设施服务与网站后台分开部署,随时可以给后台加机器扩容,多台机器跑同一个功能就是集群,当然也随时可以给mysql加读库集群,各基础服务及后台都能分开跑集群就是分布式

微服务:没在生产用过,被各大佬劝退,拆分个别功能独立跑,有相互依赖等各种复杂问题,又要上什么自动发现自动注册,服务降级,可观察等一堆作死的玩意。

粗见总结:99.31415926%的中小公司用单体或分布式集群方案能用到倒闭

1年前 评论
猪猪 (楼主) 1年前
layin_gongzi556 1年前
GDDD

假如一个项目有两个接口,登录和注册。做负载均衡,后端很多服务器提供服务器,这就是集群;很多服务器又分两个部分,一部分提供登录接口服务,另外一部分提供注册接口服务器,这就是分布式;注册这个接口,可能做了很多事,还需要调用其他接口(发送邮件接口),可能再单独开一些服务器去提供发送邮件的服务,这就是微服务。他们3个都是关联的,就分布式和集群,绝大部分公司完全够够的。微服务就是面试八股文吧,反正我没遇到过。以上是我的理解。。。

1年前 评论

说说我的理解吧。
演化的一般顺序为,单体-->分布式-->微服务。
单体:就是所有业务都用在一个项目里面。 分布式:就是多个业务项目用一套公用底层类。 ( 比如:用户的订单,在app里面需要查询订单数据,在运营后台也可以查询订单数据,单体就是把查询类和数据库model写一份然后拷贝到另一个项目里使用,分布式是 把所有基础model和一些基础类封装到一个单独的工程,让两个或更多的业务加载这个项目。拿git工程举例 一个app.git 一个admin.git 一个 common.git 让app和admin加载这个common项目。 )
微服务:就是在分布式的基础上按照业务拆开。(比如app里面,用户模块、商品模块和订单模块等按照不同模块继续拆分。每个项目负责一个模块。)

1年前 评论
猪猪 (楼主) 1年前
雷雷 (作者) 1年前
猪猪 (楼主) 1年前
雷雷 (作者) 1年前
黑将军

概念重要吗?做着做着不知不觉就用到了分布式架构,微服务,集群,到时候你自然就懂了

1年前 评论
猪猪 (楼主) 1年前

上面评论的我有点乱了,重新评论一下。
公司大佬和我讲解了一下,我找到你迷惑的点了。
因为你和你的小伙伴聊的不在一条线上。 你说的是系统分布式架构,而你的小伙伴说的是软件分布式架构。 系统分布式架构就是你说的那种,通过业务类型请求不同机器,几台机器是A业务,几台机器是B业务,这其实就是有了分布式架构的雏形了。
软件分布式架构就是你小伙伴和我评论的那样,把基础公共业务拆分出来当成一个项目,然后让不同的项目来加载公共的业务项目。最后不同的业务部署到业务对应的机器上。
:eyes:

1年前 评论
猪猪 (楼主) 1年前

问了我一直不敢问的问题

1年前 评论
Bear_zheng

个人理解

分布式是将复杂业务模块拆开,分开部署。解决的是业务模块耦合的问题,可以分开维护,分开迭代,目的是敏捷开发。比如注册服务要上线,不会影响支付服务正常运行,注册服务由PHP切换成JAVA了,也不影响其他服务

集群是多台服务器提供相同的服务,解决的是高可用的问题,一台挂了不影响对外服务的稳定性。比如es,nginx代理的php服务都是一种集群形式

微服务是分布式中切分模块的实现

1年前 评论

个人理解:

微服务:是模块独立分开部署,量上来了每个模块后期还能拆分子模块再次分开部署,微服务的特性

分布式:是为了解决微服务模块间的调用以及数据一致性或者分布式锁之类的,所以分布式架构是微服务的解决方案

集群:就是 mysql 或者 redis 做多主多从,防止单点故障,一主多从的我也不晓得算不算集群 :joy:

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!