【问题标题】:Topic based Services [closed]基于主题的服务[关闭]
【发布时间】:2012-10-24 04:07:49
【问题描述】:

我正在向 SOA/ESB 专家寻求一些架构设计方面的帮助。如果问题不是很清楚,请道歉。

我们有几个业务案例,我们目前正在使用 P2P 通信或大量代码块,例如

       if(...)
               Update System 1
               Then Update System 2
               Then Update System 3
       Else If (...)
                Update System 1 in a different Way
                 Don't Update 2 at all
                 Update 3 but differently

现在到处都是样板代码和数据库更新代码。有趣的是,我们从一个面向客户端的界面开始,然后继续添加更多并获得“快速获胜”,并不断复制代码。现在,当需要进行小改动时,它就变成了一项艰巨的任务。

这是一个典型的 ESB 类型案例恕我直言,我们正在考虑采用主题 - 发布 - 订阅模型来满足这种情况。这样所有参与的客户端都可以将消息发布到主题,然后我们只需在需要时随时随地连接订阅者。所有 Db 或系统更新代码都是通用的,并用于单个集群部署。

但是,应该在所有系统中更新数据。例如如果 1 个订阅者的更新失败,我们应该回滚其他系统中的更新,或者至少在失败的地方进行审计。 实现上述目标的最佳方法是什么?是否有我们可以使用的标准工具/实用程序?

仅供参考 - 我们正在使用 Java 技术和 Mule ESB,并希望充分利用它的潜力。 提前致谢。如果需要更清晰,请告诉我

【问题讨论】:

    标签: java soa esb mule


    【解决方案1】:

    使用主题是将服务联系在一起的一种非常有效的方式。这是我称之为Saga 的模式。你应该确保你的主题设计应该同时传达事件和上下文,因为同一事件可能需要根据上下文路由到不同的接收者(因此主题可能看起来像 context.evetnType 并且订阅者可以订阅所有类型的事件 (*.eventType) 或仅在特定上下文中)

    请注意,将此行为从服务外部化的另一种选择是使用Orchestration。编排使查看和监控预定义的业务流程变得更加容易,但代价是偶然性和一定的灵活性(与 saga 相比)。也可以鼓励nano-services

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-14
      • 2012-04-19
      • 2014-08-28
      • 2017-04-14
      • 2021-09-12
      • 2019-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多