微服务架构设计

时间:2017-11-15 10:26:12

标签: mysql microservices

我对微服务架构几乎没有疑问。

假设有微服务A,B和C. A 维护工作的上下文与其他工作的区别, B,C 通过执行该工作的相应任务来完成该工作。

我有疑问。

1。数据库设计

我在这里谈论SQL。 使用外键简化了很多事情。 但据我了解微服务架构,每个微服务器都维护自己的数据,如果需要,必须从该服务中查询数据。

这是否意味着没有外键引用另一个微服务中的表?

2。数据流

我在这里看到两种方式。

所有查询都是使用 jobId 在作业的所有微服务中唯一维护的。

  • 客户端请求直接转到任务的单个服务。为了获得作业摘要,客户端查询各个微服务收集数据并传递给用户。
  • 通过协调微服务来做所有事情。客户端请求转到服务A,然后服务A将收集来自 jobId 的所有其他微服务的信息,并将其传递给用户。

必须遵循上述两项中的哪一项?为什么?

2 个答案:

答案 0 :(得分:0)

  

这是否意味着没有外键引用另一个微服务中的表?

不在数据库意义上。一个微服务可以容纳IDs个远程实体,但是不应该假设远程微服务持久性(即数据库类型,它可以是从SQL到NoSQL的任何东西)。

  

必须遵循上述两项中的哪一项?为什么?

这实际上取决于。有两种类型的体系结构:编排和编排。他们俩都很好。哪一个使用?只有你可以决定。以下是一些关于它们的博客文章:

另外,此SO question的解决方案可能很有用。

答案 1 :(得分:0)

您认为微服务应该理想地拥有自己的数据结构,以便可以独立部署。但是,有几种设计模式可以帮助您,并且这些设计模式并不一定能够转换为“没有FK"”。请参阅:

上面列出的模式可以回答您的问题。