1. Martin Fowler 对微服务架构的定义
微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的 RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。
2. 什么是微服务
2.1 多微才够微
可以有以下几个参考指标
- 代码行数
- 重写时间
- 团队合适
2.2 单一职责
微服务架构中的每个服务,都是具有业务逻辑的,符合高内聚、低耦合原则以及单一职责原则的单元,不同的服务通过“管道”的方式灵活组合,从而构建出庞大的系统。
2.3 轻量级通信
对于微服务而言,通过使用语言无关、平台无关的轻量级通信机制,使服务于服务之间的协作变得更加标准化,也就意味着在保持服务外部通信机制轻量级的情况下,团队可以选择更适合的语言、工具或者平台来开发服务本身。
2.4 独立性
在微服务架构中,每个服务都是一个独立的业务单元,当对某个服务进行改变时,对其他的服务不会产生影响。换句话说,服务与服务之间是独立的。
对于每个服务,都有独立的代码库。当对当前服务的代码进行修改后,并不会影响其他服务。从代码库的层面而言,服务与服务是隔离的。
对于每个服务,都有独立的测试机制,并不必担心破坏其他功能而需要建立大范围的回归测试。也就是说,从测试的角度而言,服务与服务之间是松耦合的。
2.5 进程隔离
在微服务架构中,应用程序由多个服务组成,每个服务都是一个具有高度自治的独立业务实体。通常情况下,每个服务都能运行在一个独立的操作系统进程中,这就意味着不同的服务能非常容易地被部署到不同的主机上。
综上所述,微服务架构其实是将单一的应用程序划分为一组小的服务,每个服务都是具有业务属性的独立单元,同时能够被独立开发、独立运行、独立测试以及独立部署。
3. 微服务与 SOA
对于微服务的概念而言,它是传统 SOA 的定义的一个子集;而对于其实现方式而言,它是一种更符合现代化互联网发展趋势的实践,是一种更容易帮助企业或组织有效并成功实施服务架构的实践。
4. 微服务的本质
- 服务作为组件
- 围绕业务组织团队
- 关注产品而非项目
- 技术多样性
- 业务数据独立
- 基础设施自动化
- 演进式架构