【问题标题】:micro service practice & recommendations微服务实践与建议
【发布时间】:2019-06-07 17:18:39
【问题描述】:

在不同的微服务中分离每个http动词的实现是个好主意吗?

例如
获取书籍/{id} - 微服务 A POST books/{id} - 微服务 B

这对于“书籍”api 来说似乎有点过头了,但在典型的企业中,api 资源/动词的作用远不止 hello work api。

【问题讨论】:

  • 请阅读微服务基础,你的微服务是基于有界上下文而不是动词的。

标签: web-services service architecture microservices


【解决方案1】:

将每个http动词的实现分开是个好主意吗 不同的微服务?

微服务的边界通常由可分离的业务关注点划定。这样做的主要原因是让单独的团队能够负责服务的整个生命周期,而外部依赖最少。这样可以加快复杂系统中服务的发布周期。

为了了解微服务架构风格,我推荐阅读material from Martin Fowler

【讨论】:

  • 从概念上讲,您是正确的。但是,您可能希望在不同的微服务中分离出命令和查询。在典型的实现中,命令与一些关系数据库和查询与缓存解决方案集成。因此,遵循 CQRS 原则,即使 GET 和 POST 都解决了一个业务问题,我认为它们应该驻留在不同的微服务中,并且即使它们都谈论相同的有界上下文,它们也应该具有不同的聚合根。
  • 在我看来,与任何 API 相关的不同动词具有不同的复杂性,甚至可能具有不同的底层数据库(尤其是 GET 的情况),没有充分的理由将所有东西都归入一个微服务
  • 最简单的回答方式是——问问自己:你想让不同的团队负责http服务的不同动词吗?如果是,您应该使用单独的服务,否则可能会增加复杂性。
  • 所以理由只是团队?如果我们撇开组织结构,那么在动词上进行隔离是否也有意义?
猜你喜欢
  • 2017-04-17
  • 2020-08-17
  • 1970-01-01
  • 2020-04-07
  • 1970-01-01
  • 2019-08-16
  • 1970-01-01
  • 2022-01-03
相关资源
最近更新 更多