【问题标题】:NServiceBus, sharded master-dataNServiceBus,分片主数据
【发布时间】:2013-02-15 23:19:31
【问题描述】:

说 Service1 管理一些对象类型的 A-Z。然后,Client1 和 client2 可以向 Service1 发送查询和更新命令。如果 Service1 发布事件,则客户端可以订阅。

如果 Service1 被分片,Service1a 有 A-M,Service1b 有 N-Z,应该如何处理?

【问题讨论】:

  • 我有点困惑。请求去源头?我认为事物来自源头并到达目标/目的地。是这样吗,有时 ErpId 是未知的,消息必须发送到所有 ERP 系统?或者,客户端是进行所有处理的实际位置吗?
  • 是的,第一个。多个 erp 执行相同的业务步骤,应作为一个提供给客户。如果只有一个 erp 系统,我会发送回复数据,然后 erp 系统可以发布。这是不可能的,因为数据是传播的。消息类型和 erp-endpoint 之间没有 1:1 的关系。
  • 您需要提供更多详细信息。您是否试图仅集成现有的 ERP(即只能在 ERP 系统之外进行更改,并且永远不会有任何修改 ERP 系统的意图)?每个部门是否有一个 ERP 系统(每个部门都有一个具有不同数据的同一系统的副本)?
  • 感谢您的反馈。我已经尽我所能更新了这个问题。我现在发现了过载Bus.Send(string destination, params IMessage[] msgs);。我看看是否适合1和2。
  • 每个 ERPS 是否会有订阅特定消息类型的服务?您是否会有一个服务发布消息类型,并且每个订阅者都会收到消息并将结果返回给发起者?

标签: soa nservicebus


【解决方案1】:

如果我理解正确,并且您想要一个与客户端的通用接口,那么应该向客户端公开一个端点,并且该端点应该负责处理存储数据的方式和位置。听起来这可能是某种基于内容的路由。

只要事件不重叠,就会从任一服务发布事件。这意味着只有一个逻辑发布者。客户端会订阅所有事件并丢弃他们不关心的事件。

【讨论】:

  • 嗯,一个端点将成为单点故障。可以将路由移动到单个客户端吗?如何将两个实体出版商合二为一?
  • 您可以将 2 个 Publishers 放在 Distributor 后面。在这种情况下,发布者不会对数据进行分片,而是简单地分发它。另一个想法是,公共端点也可以是负载平衡的 HTTP 端点,它处理路由以提供更好的可用性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-03
相关资源
最近更新 更多