可靠的客户端保存到 zeromq 中的磁盘

Reliable client saving to disk in zeromq

ZeroMQ中有Request-Reply,还有Titanic模式是关于将消息保存到磁盘的。据我了解 Clients 是可靠的,但不能保存到磁盘。客户端总是会崩溃并丢失一些数据。

我有一个想法将保存到磁盘,从泰坦尼克号模式中的 broker 移动到客户端。客户的可靠性将得到扩展,因此在经纪人方面将不再需要。

问题是这样的设计可能存在哪些问题?

过去的一个高科技项目进入了这个领域,因为需要避免在有限的本地主机设备上出现任何阻塞 DiskIO 操作,解决方案导致了分布式模式使用构建在分布式日志记录单元云之上的控制平面和整合平面服务的操作。

虽然动机不同,但经验可能会帮助您完成此任务。

如果我可以给你一些提示,这两个将是最重要的。完成这一对后,剩下的就更容易管理了,也更容易快速又好地完成工作:


首先,定义需求列表

没有已知目标,任何条路通向“那里”。

说明必须具备的和最好具备的。

每个项目都符合要求的 PASS/FAIL 绩效指标

例子

任何 DiskIO 操作都允许以小于 200 毫秒的时间延迟/偏差执行,因为 aRemoteEventMessageArrivalTIME.

例子

每当aNumberOfAliveLoggingAGENTs小于aProfileSpecifiedREDUNDANCY时,触发aRedundancyALARM

不要犹豫,花 "a lot" 时间彻底做好这件事。迟到的 add-on(s) 可能会完全破坏您的时间计划并使您之前的工作变得毫无用处 and/or 临时重新使用是危险的 "extended" (理解为 "a-too-late added feature the original design/architecture decisions were absolutely not aware of" ) 版本。


其次,消除 "Reliable" 对您的项目的意义

好消息是,理论控制论证实,人们可以基于不可靠的组件设计和运行可靠的系统。

坏消息是,您必须从头开始自下而上地设计复杂的容错能力才能实现。

所以,要小心,什么是真正必须拥有的,什么是可有可无的,以便在合理的时间和预算内实现您的项目目标。


Nota Bene:记住 Pieter HINTJENS 在他的好书中关于可靠性的评论