我对微服务架构几乎没有疑问。
假设有微服务A,B和C. A 维护工作的上下文与其他工作的区别, B,C 通过执行该工作的相应任务来完成该工作。
我有疑问。
1。数据库设计
我在这里谈论SQL。 使用外键简化了很多事情。 但据我了解微服务架构,每个微服务器都维护自己的数据,如果需要,必须从该服务中查询数据。
这是否意味着没有外键引用另一个微服务中的表?
2。数据流
我在这里看到两种方式。
所有查询都是使用 jobId 在作业的所有微服务中唯一维护的。
必须遵循上述两项中的哪一项?为什么?
答案 0 :(得分:0)
这是否意味着没有外键引用另一个微服务中的表?
不在数据库意义上。一个微服务可以容纳IDs
个远程实体,但是不应该假设远程微服务持久性(即数据库类型,它可以是从SQL到NoSQL的任何东西)。
必须遵循上述两项中的哪一项?为什么?
这实际上取决于。有两种类型的体系结构:编排和编排。他们俩都很好。哪一个使用?只有你可以决定。以下是一些关于它们的博客文章:
另外,此SO question的解决方案可能很有用。
答案 1 :(得分:0)
您认为微服务应该理想地拥有自己的数据结构,以便可以独立部署。但是,有几种设计模式可以帮助您,并且这些设计模式并不一定能够转换为“没有FK"”。请参阅:
上面列出的模式可以回答您的问题。