database - 发布者如何在多个订阅者之间共享数据?
问题描述
不能删除发布的每个数据项。因此,每个数据项都很重要。
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
}
任何发布者向多个订阅者发送数据的通信机制应该是什么?订阅者更喜欢收到有关新项目的通知,以避免轮询流量....
解决方案
您正在寻找的是分布式事务日志。一个固定在单个序列化流中的消息,每条消息都由一个大的递增标识符索引,比如一个 128 位整数。
当消费者离线时,它可以将自己注册为注册过程的一部分,通过提供最后处理的消息的 id 来请求自它处理的最后一条消息以来的所有消息。
生产者将他们的消息发送到日志。他们负责检查并确保他们的消息已被接受到日志中,并在被拒绝时重新尝试(这种情况很少发生但可能)。
分布式事务日志本身可以由中央数据库提供(数据库本质上是加速的事务日志),或者您可以按照RAFT等算法/协议实现自己的。.
推荐阅读
- python - 如何在pygame中更改文本?
- javascript - if 语句中未清除的清除间隔 [javascript]
- javascript - 通过更新变量来更新 Json 值
- php - 在 Laravel foreach 循环中设置变量
- nlp - 如何将长句子输入到 Transformer 模型中
- java - 应用程序在“后台并发复制 GC 释放”日志消息后空闲时冻结
- html - 如何在 HTML 的单行数据单元格中显示多个数据?
- angular - 动态添加到 RXJS Observables 的队列中
- android - 如何将 MutableList<> 放入实体(房间,Kotlin)
- visual-studio-code - 是否可以以编程方式从活动栏中选择一个项目?