Web服务 – 微服务架构:跨服务数据共享

Web服务 – 微服务架构:跨服务数据共享,第1张

概述考虑以下微服务在线商店项目: 用户服务保存有关商店用户的帐户数据(包括名字,姓氏,电子邮件地址等) 采购服务跟踪用户购买的细节. 每个服务都提供了一个用于查看和管理相关实体的UI. 采购服务索引页面列出了采购.每个购买项目应具有以下字段: id,采购用户的全名,购买的商品标题和价格. 此外,作为索引页面的一部分,我想有一个搜索框让商店经理通过购买用户名搜索购买. 我不清楚如何收回采购服务所不具备的 考虑以下微服务在线商店项目:
用户服务保存有关商店用户的帐户数据(包括名字,姓氏,电子邮件地址等)

采购服务跟踪用户购买的细节.

每个服务都提供了一个用于查看和管理相关实体的UI.
采购服务索引页面列出了采购.每个购买项目应具有以下字段:
ID,采购用户的全名,购买的商品标题和价格.
此外,作为索引页面的一部分,我想有一个搜索框让商店经理通过购买用户名搜索购买.

我不清楚如何收回采购服务所不具备的数据,例如:用户的全名.
当尝试通过购买用户名进行更多复杂的事情,如搜索购买时,问题变得更糟.

我想通过在用户创建之间广播某种事件(并且仅在采购服务端保存相关的用户属性),我可以明显地通过同步两个服务之间的用户来解决这个问题.这在我看来远非理想.当您有数百万用户时,您如何处理?您将在每个消耗用户数据的服务中创建数百万条记录?

另一个显而易见的选择是在用户服务端暴露一个API,它会根据给定的ID带回用户的详细信息.这意味着在采购服务中加载每一页,我必须打电话给用户服务才能获得正确的用户名.不理想,但我可以和它一起生活.

如何根据用户名实施购买搜索?那么我可以随时在用户服务端收到另一个API端点,该端点接收到查询项,对用户服务中的用户名进行文本搜索,然后返回与条件匹配的所有用户详细信息.在采购服务中,将相关的ID重新映射到正确的名称,并将其显示在页面中.这种做法也不理想.

我错过了什么吗?是否有另一种实现上述方法?也许我正在面对这个问题的事实是一种代码气味?很乐意听到其他解决方案.

解决方法 在进入微服务时,这似乎是一个非常常见的核心问题.我希望有一个很好的答案:-)

关于这里已经提到的建议模式,我将使用术语Data Decormalization而不是polyglot Persistence,因为它不一定需要使用不同的持久性技术.关键是每个服务都处理自己的数据.是的,您有数据重复,您通常需要某种事件总线来跨服务共享数据.

还有另一种选择,这是一种首选 – 将搜索本身作为单独的服务.

所以在您的示例中,您有用于管理用户的用户服务.采购服务管理采购.每个都处理自己的数据,并且只处理它所需要的数据(因此,例如,采购服务并不真正需要用户名,只有ID).而且,您有第三个服务 – 搜索服务 – 消费其他服务生成的数据,并从组合数据创建搜索“视图”.

总结

以上是内存溢出为你收集整理的Web服务 – 微服务架构:跨服务数据共享全部内容,希望文章能够帮你解决Web服务 – 微服务架构:跨服务数据共享所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1090126.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存