简单的来说,微服务是一种架构风格,是架构设计层面的概念;而分布式是一种项目系统的部署方式,是部署层面的概念。
分布式系统
分布式系统,即是将一个项目中的各个服务分散部署在不同的机器上的,一个服务可能负责几个功能,是一种面向服务的架构(SOA)。分布式系统可以看做是若干个独立计算机的集合,这些服务在不同的计算机上部署,但还是属于同一个项目。
这些服务之间一般通过RPC(远程过程调用)来进行交互(调用)。分布式系统核心在我看来其实相当于是对RPC的应用,将一个整体项目中的各个服务进行拆分,将原本在本地调用的方式改为分开部署、远程调用,实现对系统一定程度的解耦和对物理资源的最大化利用,便于某个核心业务的单独横向扩展(集群)。
微服务架构
微服务是一种架构风格,是以开发一组小型服务的方式来作为一个独立的应用系统,每个服务都运行在自已的进程中,服务之间采用轻量级的HTTP通信机制 ( 通常是采用HTTP的RESTful API )进行通信。这些服务都是围绕具体业务进行构建的,并且可以独立部署到生产环境上。这些服务可以用不同的编程语言编写,并且可以使用不同的数据存储技术。对这些微服务我们只需要使用一个非常轻量级的集中式管理来进行协调。
简而言之,微服务是一种架构风格,微服务就是很小的一个服务,服务即应用,亦即我们俗称的一个项目。相较于以往常见的单体应用,微服务的核心思想是将一个大项目的各个业务模块甚至某个单一功能抽离出来,作为一个单独的完整项目,单独部署,该应用只需要为该大项目或者其他项目的业务模块提供服务即可。
分布式和微服务的区别总结
从分布式和微服务的概念来看,都是对一个项目系统进行了拆分,一个是在部署层面,一个是在架构设计层面。但是微服务相较于分布式来说,细粒度更小,服务间的耦合度更低,并且可以说微服务一定是分服务分开部署的,所以其实微服务是基于分布式的,更像是对分布式系统的一种优化,因此很多时候微服务架构也被称为是分布式的架构,区别于分布式系统。
并且可以预见的是,分布式系统最后都会向微服务架构演化,这是一种趋势, 不过服务微服务化后带来的挑战也是显而易见的,例如服务粒度小,数量大,后期运维将会很难等问题。