【发布时间】:2016-08-15 00:29:58
【问题描述】:
我正在设计一个微服务架构的评论分析平台。
应用程序如下所示;
- 从 ecommerce-site-a (site-a) 中检索到的所有产品评论作为 excel 文件
- 评论通过excel上传到系统
- 分析代理可以列出所有评论、编辑部分评论、删除或批准
- 分析代理可以导出站点 a 的所有评论
- 基于正则表达式的自动检查适用于上传和编辑的每次审核。
我有 3 个微服务。
- 审核:负责审核 Crud 操作以及类似于批准/拒绝的操作..
- 验证:负责定义和应用审查的验证规则。
- 导出/导入:导出服务导出给定站点名称的大文件(如 site-a)
问题是在某些时候,验证服务需要获取站点 a 的所有评论,应用验证规则并生成错误(如果有)。我知道共享数据库架构和实体会破坏微服务架构。
一种可能的解决方案是
- 每当验证服务需要对站点进行评论时,它都会请求网关,网关将请求重定向到评论服务并采取响应。
这种方法的两个可能的缺点是
- 验证服务了解网关?会不会带来依赖?
- 如果我有一个网站的 1b 评论,通过休息请求获取所有评论可能是个问题。 (或者不,我可以从验证服务向网关发出分页请求..)
那么在微服务之间共享海量数据的最佳实践是什么?
- 共享实体
- 和复制数据
我阅读了很多关于使用消息队列的信息,但我认为在我的情况下,使用消息队列来共享千兆字节的数据并不好。
edit 1:不是共享实体,而是使用带有rest API的数据存储可以成为解决方案吗?假设我使用的是 mongodb,而不是在微服务之间共享我的实体对象,我可以使用 mongo (http://restheart.org/) 的 rest 接口并尽可能地查询数据。
【问题讨论】:
-
您可以尝试企业集成模式。我不知道可以解决确切用例的模式,但应该包含在其中。
标签: microservices