微服务粒度:每个域或每个可扩展单元一个微服务?

时间:2020-03-07 10:10:41

标签: domain-driven-design microservices event-driven granularity

我知道有关微服务的大多数文章都告诉我将微服务设计为独立的并拥有数据库所有权。我们创建了独立于其他上下文的有界上下文或域。但是,这种域具有各种功能,技术,集成或可扩展单元的各种列表。

Microservice per scalable unit

如图所示,每个域都使用相同的资源(数据库)提供多个服务。域A的数据库包含大约7个关系表。 在域A中,我们提供以下服务:

  • 接收新的域实体(ReceiveStation)
  • 针对Webapp用户的通知服务(SignalR)
  • 用于运行业务规则(自动流程)的工作流处理器
  • 数据库部署工具(Roundhouse)
  • 外部域的可读服务,用于从(AggregateGrpcService)读取数据

此体系结构的优点是:

  • 我们可以独立扩展每项服务
  • 每项服务的配置不太复杂
  • 更容易发现性能瓶颈

诸如“ 11 Reasons Why You Are Going To Fail With Microservices”之类的文章告诉我,我不应该为每个集成创建服务。他们还告诉我,任何服务都不应直接与另一服务的数据库对话。我真的在设计我的微服务吗?如果合并域中的所有服务,如何保留所描述的好处?还是有其他方法可以保持这种粒度并仍然使所有服务独立?

0 个答案:

没有答案