我有一个使用多个应用程序的场景,每个应用程序都处理自己的数据。但是随着业务的耦合,我们需要访问彼此的应用程序数据。
我们基本上有一个数据库依赖策略,与某些应用程序共享实体或在其他应用程序中映射视图。它创建了一个依赖地狱!
微服务如何在这种情况下为我们提供帮助?
与使用数据库JOIN相比,访问倍数url是一种更好的策略吗?
(例如,EntityA与EntityB具有映射依赖关系。如果使用微服务策略,则必须调用/ apirest / resourceA和/ apirest / restourceA / resourceB,对吗?这比从实体A中选择*更好/更快吗?内部联接entityB?)
如何在所有应用程序之间解耦数据(就像在某个时刻访问相同数据的10个应用程序)?
有任何材料/文章/技术指示吗?
最佳答案
微服务定义了明确的界限。他们不会奇迹般地使一切变得更快。
数据库联接也是可行的解决方案。如果数据微服务之间的耦合非常紧密,则可能不是正确的选择。微服务允许您的其他服务使用其余技术。假设您拥有服务A和服务B。您可以在服务A中使用关系数据库来存储高度耦合且需要事务安全性的数据,并在服务B中使用图形数据库来管理关系数据。服务A和B不在乎对方正在使用什么,因为它隐藏在服务边界的后面。
如果您可以通过最少的交互将数据划分为多个域,则这些域边界是您服务的良好起点。服务最终将不得不引用另一个服务的实体。两个可能的选择是始终调用另一个服务或保留远程数据的最小本地副本(例如,仅远程实体的主键)。本地副本需要保留最新的数据(带有事件?)。目前,我们正为此努力奋斗...
如果您使用Google微服务,则会淹没信息。我喜欢https://martinfowler.com/articles/microservices.html作为起点。
我敢肯定我没有在这里涉及微服务的所有方面,这只是一个简短的提示,指明了开始您的旅程的方向...