考虑以下与在线商店项目相关的微服务:
用户服务保存商店用户的帐户数据(包括名、姓、电子邮件地址等)。
购买服务跟踪有关用户购买的详细信息。
每个服务都提供了一个用于查看和管理其相关实体的用户界面。购买服务索引页面列出了购买内容。每个购买项目应具有以下字段:
id,购买用户的全名,购买物品的标题和价格。
此外,作为索引页面的一部分,我想添加一个搜索框,让商店经理按购买用户名搜索购买。
对于购买服务不持有的数据如何获取不是很清楚-例如:用户的全名。 当尝试执行更复杂的操作(例如按购买用户名搜索购买)时,问题变得更加严重。
我想可以通过在用户创建时广播某种事件来解决这个问题(并仅在购买服务端保存相关用户属性)。在我看来,这远非理想。如果您有数百万用户,该怎么办?您会在每个消耗用户数据的服务中创建数百万条记录吗?
另一个明显的选项是在用户服务端暴露API,根据给定的ID返回用户详细信息。也就是说,在购买服务中的每个页面加载中,我将不得不调用用户服务以获取正确的用户名。虽然不理想,但我可以接受。
那么如何基于用户名实现购买搜索呢?嗯,我总是可以在用户服务端公开另一个API端点,该端点接收查询术语,在用户服务中对用户名执行文本搜索,然后返回与条件匹配的所有用户详细信息。在购买服务中,将相关ID映射回正确的名称并在页面上显示它们。这种方法也并不理想。
我错过了什么吗?是否有其他方法来实现上述目标?也许我面临这个问题就是一种代码异味?希望听到其他解决方案。
每个服务都提供了一个用于查看和管理其相关实体的用户界面。购买服务索引页面列出了购买内容。每个购买项目应具有以下字段:
id,购买用户的全名,购买物品的标题和价格。
此外,作为索引页面的一部分,我想添加一个搜索框,让商店经理按购买用户名搜索购买。
对于购买服务不持有的数据如何获取不是很清楚-例如:用户的全名。 当尝试执行更复杂的操作(例如按购买用户名搜索购买)时,问题变得更加严重。
我想可以通过在用户创建时广播某种事件来解决这个问题(并仅在购买服务端保存相关用户属性)。在我看来,这远非理想。如果您有数百万用户,该怎么办?您会在每个消耗用户数据的服务中创建数百万条记录吗?
另一个明显的选项是在用户服务端暴露API,根据给定的ID返回用户详细信息。也就是说,在购买服务中的每个页面加载中,我将不得不调用用户服务以获取正确的用户名。虽然不理想,但我可以接受。
那么如何基于用户名实现购买搜索呢?嗯,我总是可以在用户服务端公开另一个API端点,该端点接收查询术语,在用户服务中对用户名执行文本搜索,然后返回与条件匹配的所有用户详细信息。在购买服务中,将相关ID映射回正确的名称并在页面上显示它们。这种方法也并不理想。
我错过了什么吗?是否有其他方法来实现上述目标?也许我面临这个问题就是一种代码异味?希望听到其他解决方案。