Sun*_*rma 9 agile web-services microservices
那么,你怎么称呼它?微服务还是纳米服务?
他们有什么不同?我在互联网上看到很多博客,我可以找到任何满意的答案.
在InfoQ上找到Mark Little的这篇引用:
首先,实际上是什么微服务?确实没有一个硬性和快速的定义,但通过与各种人的对话,似乎有一种共识,即微服务是一个简单的应用程序,位于10-100 LOC标记附近.
另一个:
Nanoservice是一种反模式,其服务太细粒度.nanoservice是一种服务,其开销(通信,维护等)超过其效用.像Steve和其他人一样,Arnon得出的结论是,微服务只是SOA的另一个名称
我正在寻找Micro和Nano服务之间准确且可解释的区别.我非常感谢您的意见!
Ubi*_*chi 15
虽然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服务.它不是纳米服务.
现在到nanoservices.实现CustomerManagementService的团队决定他们需要一种通用方法来验证客户电子邮件地址,并将其实现为ValidateEmailAddressService,它们通过RESTful端点提供.这是一个纳米服务,可以最好地考虑作为服务提供的单个功能.
提供诸如服务之类的功能是否是一个好主意是有争议的,尽管在上面的例子中我认为将其称为反模式是可以理解的.然而,有一种说法认为纳米服务在无服务器架构中占有一席之地,因此争论可能会激烈.
SOA 服务完全是关于服务级别的组件化(围绕业务能力构建)。微服务是关于服务级别的功能组合(输入 -> 处理 -> 输出)。Nanoservice 甚至比微服务更小,因此没有任何意义。
如果您将服务和编程相提并论,那么 SOA 可以被视为组件,微服务是方法,纳米服务是方法中的相关代码行。
OrderService 是负责订单处理的 SOA 服务,基本上是订单生命周期的状态机。撰写确认电子邮件是一种微服务。获取确认电子邮件的数据是一种纳米服务。
| 归档时间: |
|
| 查看次数: |
8608 次 |
| 最近记录: |