考虑在线商店项目的以下微服务:
用户服务保存有关商店用户的帐户数据(包括名字、姓氏、电子邮件地址等)
购买服务跟踪有关用户购买的详细信息。
每个服务都提供了一个用于查看和管理其相关实体的 UI。购买服务索引页面列出了购买。每个采购项目应包含以下字段:
id、采购用户全名、采购项目名称和价格。
此外,作为索引页面的一部分,我想要一个搜索框,让商店经理通过购买用户名搜索购买。
我不清楚如何取回购买服务不保存的数据 - 例如:用户的全名。当尝试通过购买用户名进行搜索购买等更复杂的事情时,问题会变得更糟。
我想我显然可以通过在用户创建时广播某种事件来在两个服务之间同步用户来解决这个问题(并且只在购买服务端保存相关的用户属性)。在我看来,这远非理想。当您拥有数百万用户时,您如何处理这个问题?您会在每个使用用户数据的服务中创建数百万条记录吗?
另一个明显的选择是在用户服务端公开一个 API,它会根据给定的 id 返回用户详细信息。这意味着在购买服务中加载每个页面时,我都必须调用用户服务以获取正确的用户名。不理想,但我可以忍受。
那么如何实现基于用户名的购买搜索呢?好吧,我总是可以在接收查询词的用户服务端公开另一个 API 端点,对用户服务中的用户名执行文本搜索,然后返回所有符合条件的用户详细信息。在购买服务中,将相关 ID 映射回正确的名称并在页面中显示它们。这种方法也不理想。
我错过了什么吗?是否有另一种实现上述方法的方法?也许我面临这个问题的事实有点代码味道?很想听听其他解决方案。