集群、服务、微服务、分布式

发布时间 2023-05-24 14:42:40作者: 大黄与小白

先说集群:

可以理解为一批部署了相同服务的机器,这些机器的集合就是集群。

为啥要使用集群部署,因为当一款应用或软件使用人数越来越多,流量越来越大的时候,单台机器的资源已经无法满足使用需求,这时候就要加机器,现在硬件很便宜,集群的数量可以很庞大,他们之前相互配合工作,就能处理大量的用户请求,当然这中间还有很多其他技术和策略,总之简单粗暴的理解,集群就是部署相同代码的一堆机器。

集群部署有啥好处:
可扩展性:业务量大了就加机器,就能满足需求;
高可用性:即使集群中某个节点发生故障,整个系统也不会因此不可用,依然可以对外提供服务,因为是相同的代码,挂掉一个其他的还可以继续战斗;

配合其他技术进行流量控制:例如我们公司,会对集群进行分组,分成a,b,c 三个组,a组专门针对大流量的vip业务;b组是正常交易业务;c组针对测试流量,这样线上发版时就可以先灰度c组的机器,线上稳定后,在逐步全量,也是保障线上质量的一种手段。

我理解的服务和微服务:

一个集群是一堆部署了相同服务的机器,反过来这些机器部署的应用就可以理解为一个服务,例如,小白公司是个百货公司,她有个几个管理系统,第一个是管理商品种类的product,第二个是售卖创建订单的order,第三个是管理库存的resource,这三个功能模块就可以理解为三个服务,服务之间可以通过rpc通讯,如下图:

这些管理系统其实也可以不拆分,就做成一个管理系统,所有的服务都写在一起,但代码耦合度会变得越来越高,后期维护起来也很不方便。微服务就是把模块拆分,把我们整个项目拆解分成许多独立的子项目,每个子项目之间独立开发和部署,子项目也有自己独立的功能,这些独立的子项目就形成了微服务,不同的子项目就进而形成一个服务集群。

分布式:

上面的例子中,小白公司的管理系统,细分了三个服务,慢慢的当她做大做强以后,可以再衍生出更多服务,比如后续员工多了需要管理,就要有个ehr系统,每天的流水得有个统计,还得有个财务系统,这样一个大的管理系统就细分出很多子业务子系统,这些系统单独部署,分布在不同的服务器节点,共同构成的系统称为分布式系统;

分布式与集群的区别:

集群指多个服务器做同一个事件;

分布式指多个服务器做不同事情。