首页 > 解决方案 > 发布者如何在多个订阅者之间共享数据?

问题描述

不能删除发布的每个数据项。因此,每个数据项都很重要。

3 个发布者和 60 个订阅者,分布。

第一个发布者向 20 个订阅者提供数据项,其数据项类型为:

type struct{
   name  string
   age integer
   gender boolean
}

第二个发布者向另外 20 个订阅者提供数据项,其数据项类型为:

type struct{
   ledStatus  boolean
   socketStatus boolean
}

第三个发布者向另外 20 个订阅者提供数据项,其数据项类型为:

type struct{
   range integer
   boundary integer
}

任何发布者向多个订阅者发送数据的通信机制应该是什么?订阅者更喜欢收到有关新项目的通知,以避免轮询流量....

标签: databaseipcpublish-subscribegraph-databasesdistributed-system

解决方案


您正在寻找的是分布式事务日志。一个固定在单个序列化流中的消息,每条消息都由一个大的递增标识符索引,比如一个 128 位整数。

当消费者离线时,它可以将自己注册为注册过程的一部分,通过提供最后处理的消息的 id 来请求自它处理的最后一条消息以来的所有消息。

生产者将他们的消息发送到日志。他们负责检查并确保他们的消息已被接受到日志中,并在被拒绝时重新尝试(这种情况很少发生但可能)。

分布式事务日志本身可以由中央数据库提供(数据库本质上是加速的事务日志),或者您可以按照RAFT等算法/协议实现自己的。.


推荐阅读