微服务、应用和系统的特征

  • Jan Stenberg
  • 韩陆

2015 年 3 月 6 日

话题:SOA语言 & 开发架构

如今,传统构建系统的假定方式受到了挑战。Stefan Tilkov在调研微服务、应用和系统的特征的介绍中解释,假定之一是大系统必须拥有独立的环境,通常构建系统与项目域一一对应,结果是 1 项目 = 1 系统。

面对将大系统拆分成小一些的应用的思潮泛起,innoQ 的联合创始人和首席顾问Tilkov认为其中最关键的原因是隔离。当在一个大系统的不同部分之间引入边界的概念时,各个部分之间的耦合和通信的独立变得困难。他观察到的另一个优点是特定部分的独立扩展能力,这将依赖于该部分自身的负载,是否扩展可以由该部分边界内的团队自己做决定。

Tilkov 比较了构建由多个小部分组成的逻辑系统的 3 种风格:

  • 微服务很小,每个服务运行在自己的进程中,使用轻量级的通信机制,围绕业务功能来构建。
  • 应用稍大些但依然保持小巧、分离、可运行的进程,使用无共享模式以便与微服务共享更多的特征。
  • 自包含系统(SCS)的名字是 Tilkov 和他的同事提出的,以区别于一般意义的系统,用来命名于更具体的规则集合。自包含系统由一个团队拥有,是一个明显稍大的自主 web 应用,包括数据和逻辑,使用非同步的远程调用,有可能提供服务的 API。

Tilkov 比较了 3 种风格的一些功能和特征,他强调对哪种风格是对的没有倾向性,而是想体现其广度和可用选项。

  SCS 应用 微服务
规模 (千行代码) 1-50 0.5 - 10 0.1 - ?
有状态 自包含的 额外的 自包含的
逻辑系统 5 - 25 >50 >100
单元之间的通信 否、(如果可能) ?
用户界面 包含 包含 额外 (?)
用户界面集成 是 (web-based) ? ?

Tilkov 最关注的参数是构建一个逻辑系统的组成部分的数量,因为这是对一个大系统第一级分解的指示。自包含系统是他提倡的,虽然小的服务很简单,但是多个这样的服务合在一起就会在其他层中产生更高的复杂度。但是他强调他不想试图推销一种特定的模式,而是在不同的层面突出这个话题。

查看英文原文:Characteristics of Microservices, Applications and Systems

SOA语言 & 开发架构