当前位置: 首页 > 知识库问答 >
问题:

微服务之间的数据共享

颜阳炎
2023-03-14

当前体系结构:

问题:

我们在前端和后端层之间有一个两步流程。

    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使用B2B HTTP请求检查MS2_Data的完整性
  • 2.4 MS1使用MS2_Data和MS1_Data持久化和数据库1,并构建HTTP响应。

进路

问题是微服务1如何信任前端发送的信息。也许使用JWT以某种方式对来自微服务1和微服务2的数据进行签名将能够验证消息。

注每次微服务2需要来自微服务1的信息时,都会执行一个B2B http请求。(HTTP请求使用ETAG和缓存控制:max-age)。如何避免这一点?

体系结构目标

当前架构的缺点是每个微服务之间执行的B2B HTTP请求的数量。即使使用缓存控制机制,每个微服务的响应时间也会受到影响。每个微服务的响应时间是非常关键的。这里的目标是存档一个更好的性能和一些如何使用前端作为网关在多个微服务之间分发数据,但使用推力通信。

MS2_Data只是一个实体SID,类似于产品SID或供应商SID,MS1必须使用它来维护数据完整性。

可能的解决办法

其思想是将网关用作api网关请求处理,该处理将缓存来自MS1和MS2的一些HTTP响应,并将它们用作对MS2 SDK和MS1 SDK的响应。这样,MS1和MS2之间就不会直接进行通信(同步或异步),也避免了数据重复。

    null

共有1个答案

闻人望
2023-03-14

请查看“我的问题的可能解决方案

其思想是将网关用作api网关请求处理,该处理将缓存来自MS1和MS2的一些HTTP响应,并将它们用作对MS2 SDK和MS1 SDK的响应。这样,MS1和MS2之间就不会直接进行通信(同步或异步),也避免了数据重复。

灵感来源:https://aws.amazon.com/api-gateway/和https://getkong.org/

 类似资料:
  • 我正在设计一个微服务架构中的评审分析平台。 应用程序如下所示; null null 问题在于,验证服务需要获取site-a的所有评论,应用验证规则并生成错误(如果有的话)。我知道共享数据库模式和实体打破了微服务体系结构。 一个可能的解决方案是 每当验证服务需要对站点进行审查时,它就会请求网关,网关会将请求重定向到审查服务并采取响应。 这种方法的两个可能缺点是 验证服务是否知道网关?是否会带来依赖?

  • 问题内容: 有没有办法在AngularJS中的服务之间共享数据? 用例:来自不同服务的数据聚合 例如,我想要一个service1从REST服务加载一些数据。然后,另一个service2将来自另一个REST API的其他数据添加到service1数据中,以创建数据聚合服务。 我基本上是想根据它们使用的API来分离服务,但是仍然有一个服务来最终保存所有数据。 问题答案: 创建使用延迟库的第三项服务,以

  • 我正在构建一个基于Spring云的微服务ML管道。我有一个数据摄取服务,它(当前)从SQL接收数据,这些数据需要被预测服务使用。 普遍的共识是写入应该使用kafka/Rabbitmq使用基于异步消息的通信。 我不确定的是如何编排这些服务? 我是否应该使用API网关来调用启动管道的摄取?

  • 我将非常感谢任何答复以及文章,在您的意见可能有助于这里。提前谢谢你。

  • 我不清楚如何取回购买服务不保存的数据--例如:用户的全名。当试图通过购买用户名进行更复杂的搜索购买时,问题会变得更严重。 我认为,显然可以通过在两个服务之间同步用户来解决这个问题,方法是在用户创建时广播某种类型的事件(并在购买服务端只保存相关的用户属性)。在我看来,这远非理想。当你有数百万用户时,你如何处理这个问题?您会在每个使用用户数据的服务中创建数百万条记录吗? 另一个明显的选择是在用户服务端

  • 在所有情况下,重要的是,如果允许用户Y访问该公司,微服务本身仍然必须检查是否允许用户Y对该公司进行某种操作。因此,此用户到公司的匹配仅用于确保用户对公司有访问权限。 我并不是真的很喜欢这些方法,因为将消息放入队列(1)意味着每个服务都必须被告知一个更改。使用Zuul验证(2)也不是真正实用的,因为它应该只是一个网关。