微服务与纳米服务?

Micro Service vs Nano Service?

所以,你怎么称呼它?微服务还是纳米服务?

他们有什么区别?我在互联网上浏览了很多博客,但找不到满意的答案。

InfoQ 上找到 Mark Little 的这段引述:

First things first what actually is a micro service? Well there really isn’t a hard and fast definition but from conversations with various people there seems to be a consensus that a micro service is a simple application that sits around the 10-100 LOC mark.

另一个:

Nanoservice is an antipattern where a service is too fine-grained. A nanoservice is a service whose overhead (communications, maintenance, and so on) outweighs its utility. Like Steve and others, Arnon concludes that Microservices is just another name for SOA

我正在寻找微型服务和纳米服务之间准确且可解释的区别。我非常感谢您的意见!

SOA 服务完全是关于服务级别的组件化(围绕业务能力构建)。微服务是关于服务级别的功能组合(输入 -> 处理 -> 输出)。纳米服务甚至比微服务还要小,因此没有任何意义。

如果将服务和编程相提并论,那么 SOA 可以看作是组件,微服务是方法,纳米服务是方法中的相关代码行。

OrderService 是负责订单处理的 SOA 服务,基本上是订单生命周期的状态机。 撰写确认电子邮件是一项微服务。 获取确认电子邮件的数据是一项纳米服务。

虽然 Jeroen 的回答接近 SOA、微服务和纳米服务之间差异的要点,但我认为它最后有点偏差。

因此 SOA 根据业务能力(例如 Jeroen 的 OrderService,或者可能是 CustomerService)分解系统功能。服务经常调用其​​他服务,因此非常涉及服务网络的概念,服务之间存在依赖关系,并且还体现了服务组合的概念,其中一些服务本质上是聚合其他服务。

微服务非常相似,并且可能对齐并实现 SOA 服务,这就是为什么像 Mark Little 这样的人将它们视为与 SOA 相同的原因。然而,它们也往往会展示 SOA 文献中从未清楚阐明的具体实现细节。例如,它们经常被限定为 DDD BoundedContexts 的范围或大小,它们应该使用自己的数据库进行存储,并且它们应该向订阅者发布数据更改。

纳米服务的范围比微服务更窄,并且通常处于功能级别,与目前在无服务器架构中实施的内容一致。因此,您可以从纳米服务组成微服务。

所以按照 OrderService 示例:

  • 在顶层我们有 OrderService,它是处理订单的以业务为中心的服务。它是一个 SOA 级别的服务,但它由 3 个单独的服务组成。

  • OrderManagementService,负责创建和管理订单状态。它是一个微服务并且有自己的数据存储,它也可以被认为是一个 SOA 服务,但它有多个端点(例如 CreateOrder、CloseOrder 等)并且不是纳米服务。

  • CustomerManagementService,负责处理客户详细信息。它是一个微服务,有自己的数据存储,也可以被视为 SOA 服务,但它有多个端点(例如 RegisterCustomer、DeleteCustomer 等)并且不是纳米服务。

  • OrderProcessingService,负责处理Order工作流,编排调用各种外部服务,如OrderManagementService和CustomerManagementService,也是一个微服务,也是一个SOA服务。它不是纳米服务。

现在介绍纳米服务。实现 CustomerManagementService 的团队决定他们需要一种通用方法来验证客户电子邮件地址,并将其实现为 ValidateEmailAddressService,并通过 RESTful 端点提供。这是一个纳米服务,最好将其视为作为服务提供的单个功能。

提供像服务这样的功能是否是个好主意还有待商榷,尽管在上面的例子中我认为称之为反模式是可以理解的。然而,有一种说法认为纳米服务在无服务器架构中占有一席之地,因此争论可能会继续进行。