微服务架构和分布式架构有什么区别
1. 微服务架构
微服务最早由软件开发大师Martin Flower提出,以下是中文翻译:
微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务能力构建并且可通过全自动部署机制独立部署。这些服务共用一个最小型的集中式的管理,服务可用不同的语言开发,使用不同的数据存储技术。
微服务的九大特征:
-
组件化与服务 围绕业务功能的组织 产品不是项目 智能端点和哑管道 分散治理/去中心化治理 分散数据管理/去中心化数据管理 基础设施自动化 容错性设计 演进性设计
2. 分布式架构
分布式系统的定义: 分布式系统是若干独立计算机的集合,这些计算机对用户来说就像单个相关系统
即整个系统是由不同的计算机组成,而用户是无感知的,就像访问一台计算机一样。这里强调的是系统由不同物理上分离的计算机(服务器)组成。
举个例子,下面这个系统是分布式架构的,它由WEB集群、数据库集群、缓存集群组成,各个子系统是由不同的计算机组成的,但这个系统不是微服务的:
3. 区别
微服务解决的是系统复杂度问题: 一般来说是业务问题,即在一个系统中承担职责太多了,需要打散,便于理解和维护,进而提升系统的开发效率和运行效率,微服务一般来说是针对应用层面的。微服务如果用在其它系统,如存储系统感觉怪怪的,就像说Mysql集群是微服务的,总觉得哪里不舒服。
分布式解决的是系统性能问题: 即解决系统部署上单点的问题,尽量让组成系统的子系统分散在不同的机器上进而提高系统的吞吐能力。
两者概念层面也是不一样的: 微服务是设计层面的东西,一般考虑如何将系统从逻辑上进行拆分,也就是垂直拆分;而分布式是部署层面的东西,即强调物理层面的组成,即系统的各子系统部署在不同计算机上。微服务可以是分布式的,即可以将不同服务部署在不同计算机上,当然如果量小也可以部署在单机上。
4. 原文链接
下一篇:
关于架构和个人发展的想法