【发布时间】:2015-12-13 01:09:35
【问题描述】:
我想规划一个解决方案,在我的架构中管理丰富的数据。
更清楚一点,我有几十个微服务。
假设 - 国家、建筑物、楼层、工人。
全部运行在一个单独的 NoSql 数据存储上。
当我从工作人员服务获取数据时,我还想提供楼层名称(工作人员正在工作)、建筑物名称和国家/地区名称。
解决方案 1。
客户端将查询所有微服务。
问题 - 多个请求并让客户了解结构。
我知道多个请求不应该打扰我,但我相信在一次调用中返回描述实体的 json 会更好。
解决方案 2。
创建一个从多个服务中检索数据的编排。
问题 - 如果数据(例如实体名称)未存储在数据库中的同一文档中,则很难按这些字段进行排序和过滤。
解决方案 3。
在保存实体之前,例如工人,调用所有其他服务并填写相关数据(建筑物名称,国家名称)。
问题 - 更改建筑物名称时,它不会反映在工作人员服务中。
解决方案 4。
(这是我能想到的最好的一个)。
创建一个订阅代理并接收所有实体更改的流程。
对于每个实体,它都会更新所有相关实体。
当实体发生变化时,比如建筑物名称发生变化,它会更新所有包含建筑物名称的文档。
问题:
每个服务都必须知道可以更新什么。
当发生尾随更新时,它不应再次更新代理(递归更新),因此这可能会使微服务变得复杂。
解决方案 5。
保持一切正常化。在 ElasticSearch 中过滤和排序。
问题:在 ES 中保存规范化数据在性能方面过于昂贵
【问题讨论】:
标签: microservices