我正在设计一个微服务架构中的评审分析平台。
应用程序如下所示;
问题在于,验证服务需要获取site-a的所有评论,应用验证规则并生成错误(如果有的话)。我知道共享数据库模式和实体打破了微服务体系结构。
一个可能的解决方案是
这种方法的两个可能缺点是
那么在微服务之间共享巨大数据的最佳实践是什么
我读过很多关于使用消息队列的文章,但我认为在我的例子中,使用消息队列共享千兆字节的数据是不太好的。
编辑1:不是共享实体,而是使用带有rest API的数据存储可以是一个解决方案?假设我正在使用mongodb,而不是在微服务之间共享我的实体对象,我可以使用mongo的rest接口(http://restheart.org/)并在可能的情况下查询数据。
我假设评审是相互独立的,因此验证评审只需要该评审,而不需要其他评审。
您不希望共享实体,这就排除了像共享数据库、Hadoop集群或像Redis这样的数据存储的东西。您也不希望复制数据,从而排除了数据库级别上的纯文件副本或基于触发器的复制。
总之,我认为你的目标应该是一条小溪。让验证器从关于站点A的评论中请求所有内容,但不是在一个批量中,而是在单个或小的评论包的流中。
验证器不持久化此流,它只生成错误并将其存储或发送到某个地方;这应该可以满足您的无共享、无重复的要求。
当前体系结构: 问题: 我们在前端和后端层之间有一个两步流程。 null 微服务2(MS2)需要验证I1的完整性,因为它来自前端。如何避免对MS1进行新的查询?最好的办法是什么? 我试图优化的流删除了步骤1.3和2.3 流程1: null 流程2: 2.1用户X已在本地/会话存储中存储了数据(MS2_Data) 2.2用户X在MS1上保留数据(MS2_Data+MS1_Data) 2.3 MS1使
如果您在组织中使用微服务架构,它们可以通过zookeeper或其等价物共享配置。但是,不同的服务应该如何共享一个公共的db模式呢?公共常数?和常用的公用设施? 在微服务之间共享代码和模式的一种可伸缩、高效、实用且有希望是美丽的方法是什么?
我不清楚如何取回购买服务不保存的数据--例如:用户的全名。当试图通过购买用户名进行更复杂的搜索购买时,问题会变得更严重。 我认为,显然可以通过在两个服务之间同步用户来解决这个问题,方法是在用户创建时广播某种类型的事件(并在购买服务端只保存相关的用户属性)。在我看来,这远非理想。当你有数百万用户时,你如何处理这个问题?您会在每个使用用户数据的服务中创建数百万条记录吗? 另一个明显的选择是在用户服务端
在所有情况下,重要的是,如果允许用户Y访问该公司,微服务本身仍然必须检查是否允许用户Y对该公司进行某种操作。因此,此用户到公司的匹配仅用于确保用户对公司有访问权限。 我并不是真的很喜欢这些方法,因为将消息放入队列(1)意味着每个服务都必须被告知一个更改。使用Zuul验证(2)也不是真正实用的,因为它应该只是一个网关。
我试图理解微服务。我想知道如何解决微服务架构中的一对多/多对多关系问题,以及最佳实践是什么。假设我想将学生课程应用程序转换为学生服务,将课程服务和学生服务对话转换为同一数据库中的学生表和课程服务对话课程表。 示例:学生可以注册许多课程,而且许多课程可以有许多学生(多对多关系)。我有2个微服务1:学生服务2:课程服务 学生服务有学生对象 课程服务具有课程对象 我知道学生服务部必须致电课程服务部才能获
微服务AppCity,实体类City城市 微服务AppCountry,实体类Country国家 在AppCountry的Service层中写一个接口 那这个City应该放在哪,所有的微服务都把自己的实体类放在common模块中不太合适吧,那这两个微服务之间怎么传递这个City呢?DTO和Converter又该怎么写