如今,传统构建系统的假定方式受到了挑战。Stefan Tilkov在调研微服务、应用和系统的特征的介绍中解释,假定之一是大系统必须拥有独立的环境,通常构建系统与项目域一一对应,结果是1 项目 = 1 系统。
\\面对将大系统拆分成小一些的应用的思潮泛起,innoQ的联合创始人和首席顾问Tilkov认为其中最关键的原因是隔离。当在一个大系统的不同部分之间引入边界的概念时,各个部分之间的耦合和通信的独立变得困难。他观察到的另一个优点是特定部分的独立扩展能力,这将依赖于该部分自身的负载,是否扩展可以由该部分边界内的团队自己做决定。
\\Tilkov比较了构建由多个小部分组成的逻辑系统的3种风格:
\\- 微服务很小,每个服务运行在自己的进程中,使用轻量级的通信机制,围绕业务功能来构建。\\t
- 应用稍大些但依然保持小巧、分离、可运行的进程,使用无共享模式以便与微服务共享更多的特征。\\t
- 自包含系统(SCS)的名字是Tilkov和他的同事提出的,以区别于一般意义的系统,用来命名于更具体的规则集合。自包含系统由一个团队拥有,是一个明显稍大的自主web应用,包括数据和逻辑,使用非同步的远程调用,有可能提供服务的API。\
Tilkov比较了3种风格的一些功能和特征,他强调对哪种风格是对的没有倾向性,而是想体现其广度和可用选项。
\\SCS | 应用 | 微服务 | |
---|---|---|---|
规模(千行代码) | 1-50 | 0.5 - 10 | 0.1 - ? |
有状态 | 自包含的 | 额外的 | 自包含的 |
逻辑系统 | 5 - 25 | \u0026gt;50 | \u0026gt;100 |
单元之间的通信 | 否、(如果可能) | ? | 是 |
用户界面 | 包含 | 包含 | 额外(?) |
用户界面集成 | 是 (web-based) | ? | ? |
Tilkov最关注的参数是构建一个逻辑系统的组成部分的数量,因为这是对一个大系统第一级分解的指示。自包含系统是他提倡的,虽然小的服务很简单,但是多个这样的服务合在一起就会在其他层中产生更高的复杂度。但是他强调他不想试图推销一种特定的模式,而是在不同的层面突出这个话题。
\\查看英文原文:Characteristics of Microservices, Applications and Systems