domain-driven-design - 微服务和服务粒度

标签 domain-driven-design microservices

我以前从未接触过微服务架构,有一些重要的东西在我正在阅读的内容中仍然不清楚。

在微服务架构中,服务是单个端点还是具有多个端点的单个模块?

端点是细粒度的还是粒度更高?一开始我认为端点是细粒度的,这就是为什么存在使 API 过于繁琐的风险。

我现在发现文章说在微服务架构中,服务与“限界上下文”相关联。在我看来,有界上下文需要的不仅仅是 API 中的单个端点。

最佳答案

这取决于您希望架构的粒度。从理论上讲,为了获得最大粒度并根据单一职责原则,您应该在每个有界上下文中为每个聚合创建一个微服务。这意味着每个命令都应该有一个端点(我假设每个端点都通过一个 URI 到达,即 https://server/place/order)。

如果您使用 CQRS 架构,那么对于读取/查询端,您还可以为每个读取模型提供一个微服务;通过这种方式,您可以独立扩展每个读取模型(使用数据库复制或整个微服务实例复制)。

关于domain-driven-design - 微服务和服务粒度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46581254/

相关文章:

azure - 使用单个 azure 应用程序服务托管多个应用程序/微服务有哪些限制/缺点?

http - 高响应时间与排队

docker - 远程连接本地和其他容器上的docker容器

不同限界上下文聚合根之间通信的.net实现

php - 没有二传手的学说

amazon-web-services - 具有多种服务的 AWS 单一 ApiGateway

spring-boot - 是否可以在加特林压力测试中模拟数据库调用或 Api 调用?

c# - 规范模式单元测试

java - 存储库上的事务

design-patterns - 聚合必须知道并仅将其行为建立在其自身状态之上?聚合可以在其行为(方法)中使用其他聚合的状态吗?