微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在群集和FT模式下,NATS流提供什么消息持久性保证?

如何解决在群集和FT模式下,NATS流提供什么消息持久性保证?

我正在寻找一种具有消息持久性保证的流服务器,即在服务器确认向生产者发布之前,保证生产者发布的消息可以持久存储的地方。

我的用例要求我们减少丢失任何产生的消息的可能性。生产者可以根据需要重播消息,但是他们需要确保ACKed消息能够持久保存,并由流服务器将其传递给消费者。

NATS Streaming服务器似乎在这些方面做了一些工作,但是clusteringfault tolerance的文档并未明确说明在每种情况下都提供了什么持久性保证。 producer integration上的文档确认服务器将同步或通过回调主动确认已发布的消息,但并不清楚ACK是否意味着该消息已持久存储。

有关存储配置的文档,特别是SQL options简要地提到了服务器的ACK意味着持久的存储保证,但是尚不清楚在群集和容错以及不同的持久性后端的情况下,它的适用性如何(文件sql)。

解决方法

NATS流将在发送回发布者ACK之前保留该消息。存储区的实现(文件存储区/ SQL)可能会使用一些缓存,但是无论如何,写入会在发回ACK之前进行同步(除非禁用)。

但是,在集群模式下,文件存储同步被禁用,因为我们依赖于将数据复制到集群的每个节点这一事实,因此一次丢失多个消息将需要多次失败。 (请注意,文件存储实现有一个选项,可以定期执行自动同步:请参见auto_sync here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。