首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在一个微服务中创建实体时如何更新相关微服务中的表

在一个微服务中创建实体时如何更新相关微服务中的表
EN

Stack Overflow用户
提问于 2021-07-19 15:56:56
回答 1查看 467关注 0票数 1

我正在学习一个微服务体系结构,并创建了3个微服务。每个ms都有自己的数据库。

就像下面这样,

  1. Business ms
  2. Customer ms
  3. Tax ms

我通过在所有微服务中复制Business表的方式来设计它。每当在business中创建新业务时,我都希望更新客户ms中的业务Idname以及税务ms,以创建引用。

我试着用下面的方式来达到这个目的,

  1. 承载服务--这将作为业务微服务的一部分注册,当在业务表中添加新行时,我将该行添加到System.Threading.Channels中。HostedService将读取队列,然后调用Customers ms和Tax ms更新业务Id和名称.

  1. Event-Driven API -我还没有达到这个目标。

的理念是,以企业经理为生产者,以客户ms为客户,以税收ms为消费者。

实现这一目标的最佳途径是什么?对此有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-20 10:56:56

我们有与您提到的相同的要求,我们采用事件驱动的体系结构来解决这个问题。

Apache是满足此类需求的最佳消息传递系统。

在实现时,您需要考虑的东西不多。

  1. 假设CRUD微服务(与DB交互并将主实体持久化)将数据保存到DB和Kafka服务器(任何消息系统),则数据将不一致。解决此问题的方法是,您需要创建新表,以跟踪发布时失败的事件。在后台,玉米作业将获取所有失败事件,并尝试再次发布.

  1. 您成功地发布了关于主题的事件,但是消费者已经下降了。在这种情况下,您不需要做任何事情,因为一旦用户结束,它将开始读取消息。(注意,考虑消息的保留期)

  1. 您成功地发布了主题上的事件,并且使用者已经启动并运行,但是由于数据格式问题,消息没有被消耗,然后在微服务之间再次发生数据不一致的情况。在这种情况下,需要将事件数据推送到DLQ,并需要再次解析它。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68443560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档