微服务
- Eric Evans 的《领域驱动设计》
- Alistair Cockburn 的六边形架构理论
Netflix 分享了构建大型反脆弱系统的经验 github : https://github.com/Netflix什么是微服务
微服务就是一些协同工作的小而自治的服务
- 很小,专注于做好一件事
在一个单块系统内,通常会创建一些抽象层或者模块来保证代码的内聚性,从而避免上述问题。
内聚性是指将相关代码放在一起,在考虑使用微服务的时候,内聚性这一概念
很重要。Robert C. Martin 有一个对单一职责原则(Single Responsibility Principle,http://
programmer.97things.oreilly.com/wiki/index.php/The_Single_Responsibility_Principle)的论述:
“把因相同原因而变化的东西聚合到一起,而把因不同原因而变化的东西分离开来。 ”该论
述很好地强调了内聚性这一概念。 也让我同时想到了tw提出的正交设计。
- 很小,专注于做好一件事
- 1.1 根据业务的边界来确定服务的边界
那就出现了一个问题,业务的辩解确定服务的边界,但是不可避免有时候领域的对象涉及很广很复杂。
一个微服务应该可以在两周内完全重写,这个经验法则在他所处的特定上下文中是有效的。
这个时候请遵守上述的原则,可能有的时候很有用。
使用的服务越小,独立性带来的好处就越多。但是管理大量服务也会越复杂。