我知道服务之间的同步通信是一种反模式,所以我正在为我的用例寻找一个好的解决方案。
我有这两项服务:
Location Service
Score Service
现在,我必须构建另一项服务:Users Feed Service
(UFS)。它必须返回给定位置附近的用户,按得分(降序)排序。
同步解决方案
有什么替代方案?我一直在考虑这样的事情:
事件排队解决方案
这样,当客户端请求用户提供时,用户提要服务不必执行任何网络请求(它拥有必要的数据)
这是一个很好的解决方案吗?我怎样才能改进它?它会在大量用户中扩展吗?
答案 0 :(得分:1)
也许你有一些额外的要求你没有列出,但在我看来,在这种情况下,一个基于事件的解决方案可以复制来自其他服务的大量数据,这种方式超过了工程。
如果UFS在位置服务发生变化时获取位置,那么将其调用与来自位置服务的事件相关联的位置变化是有意义的
关于分数服务,我会保持同步,但让其界面接受客户列表,而不是让它成为“获得客户分数”的调用。