微服务与分布式的关系

1,659 阅读2分钟

近期出去面试,被问到了微服务与分布式之间的关系,由于之前做的项目都是及其老旧的单机系统,所以当场懵比。故再此做一下记录方便日后复习。

微服务

简单来说微服务就是很小的服务,小到一个服务只对应一个单一的功能,只做一件事,并且这个服务可以单独部署运行,服务之间的通信可以通过rpc来相互交互,每个微服务都是由独立的小团队开发,测试,部署,上线,负责它的整个生命周期。

微服务架构又是啥

在做架构设计的时候,先做逻辑架构,再做物理架构,当你拿到需求后,估算过最大的用户量和并发量后,计算单哥应用服务器是否能满足需求,如果用户量只有几百人的小应用,单体应用就能够搞定,那就将所有的功能都部署在一个应用服务里,如果用户量很大,并且某些功能会被频繁访问,或者某些功能计算量很大,建议将应用拆解为多个子系统,各自负责各自的功能,这就是微服务架构。

下面就来说说分布式是啥

分布式服务顾名思义 服务是分散部署在不同机器上的,一个服务可能负责几个功能,是一种面向soa架构的,服务也是通过rpc来进行交互的。逻辑架构设计完后就该做物理架构设计,系统应用部署在超过一套服务器或者虚拟机上,并且各分开部署的部分彼此通过通讯协议交互信息,就算是分布式部署,生产环境下的微服务 肯定是分布式部署的,但是分布式部署的应用 可就不一定是微服务架构的了,就比如集群部署,他是把相同应用复制到不同服务器上,但是逻辑功能上还是单体应用。

前边巴拉巴拉那么多,现在说一下微服务和分布式本质上的区别

首先微服务相比分布式来说,它的粒度更细,服务之间的耦合度更低,由于每个微服务都由独立的小团负责开发,因此它的敏捷性更高,更适合目前的敏捷开发,分布式服务最后都会向着微服务架构演变,这是一种趋势,不过微服务化后带来的挑战也是显而易见的,例如服务粒度更细,数量变多,后期维护成本也会较高。