微服务与纳米服务?

时间:2016-12-07 18:30:53

标签: web-services agile microservices

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

他们有什么不同?我在互联网上看到很多博客,我可以找到任何满意的答案。

InfoQ上找到Mark Little的引文:

  

首先,实际上是什么微服务?确实没有一个硬性和快速的定义,但是通过与各种人的对话,似乎已经达成共识,即微服务是一个简单的应用程序,位于10-100 LOC标记附近。

另一个:

  

Nanoservice是一种反模式,其服务太细粒度。 nanoservice是一种服务,其开销(通信,维护等)超过其效用。像Steve和其他人一样,Arnon得出的结论是,微服务只是SOA的另一个名称

我正在寻找Micro和Nano服务之间准确且可解释的区别。我非常感谢你的意见!

2 个答案:

答案 0 :(得分:11)

虽然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端点提供。这是一个纳米服务,可以最好地考虑作为服务提供的单个功能。

提供诸如服务之类的功能是否是一个好主意是有争议的,尽管在上面的例子中我认为称之为反模式是可以理解的。然而,有一个论点认为纳米服务在无服务器架构中占有一席之地,因此争论可能会激烈。

答案 1 :(得分:4)

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

如果要在服务和编程之间划分并行,那么可以将SOA视为组件,将微服务视为方法,将纳米服务视为方法中相关的代码行。

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