【发布时间】:2018-07-05 15:10:06
【问题描述】:
我们的微服务可以处理不同但相关的数据。例如,广告及其统计信息。我们希望能够为 UI 过滤、排序和聚合这些相关数据(而不仅仅是它)。例如,我们希望向用户展示其文字中包含“汽车”且点击次数超过 100 次的广告。
挑战:
- 可能有很多数据。部分用户过滤后有数百万行
- 服务没有所有数据。例如,对于没有统计信息的统计服务广告 == 不存在的广告。它对此类广告一无所知。但是排序和过滤无论如何都应该起作用(没有统计信息的广告应该被视为没有零点击的广告)
要求:
- 几秒钟内的最终一致性是可以的
- 不能接受数据丢失
- 5 到 10 秒过滤和排序数百万行的大客户就可以了
我们能想到的解决方案:
- 从所有服务中加载查询所需的所有数据,并在内存中过滤和排序。
- 将更新从服务推送到 Elasticsearch(或类似的东西)。 Elastic 处理查询并返回所需实体的 ID,然后从服务中加载。
- 一个包含所有服务的大型数据库
我们应该注意什么?还有其他方法可以解决我们的问题吗?
【问题讨论】:
标签: architecture microservices