Oracle NoSQL DB Streams 如何处理故障?

问题描述

今天早上我设置了几个 Nosql 流。中午时分,部署 Oracle Nosql 数据库的环境中出现网络连接问题。我在我的应用程序中发现了一些异常。

Oracle Nosql DB Streams API 如何处理网络连接不稳定、主传输和服务器重新平衡等故障?

请指教。

解决方法

感谢您试用 Oracle NoSQL 数据库流 API。

Oracle NoSQL Streams 根据故障的性质以不同的方式处理故障。在网络连接不稳定的情况下,Streams API 会重新连接到 Streams API 中缓存的主机和端口上每个分片的主节点,因此,当网络连接恢复时,Streams API 将成功重新连接并从上次开始继续流式传输流式操作。如果 3 次后重新连接尝试失败,Streams API 将从 Oracle NoSQL 数据库刷新拓扑,并重新连接到在最新存储拓扑中找到的主节点。当 master 转移并且旧的 master 不再可访问时,就会发生这种情况。

处理 store rebalancing 类似于处理 master 传输,Streams API 会从 store 中拉取新的拓扑结构,并定位每个分片的新 master 以重新连接。重新平衡完成且新拓扑准备就绪后,Streams API 将能够重新连接并恢复流式传输。

以上描述适用于最新版本的 Oracle NoSQL Database 21.1。在以前的版本中,Stream API 有一个限制重新连接的次数,如果它用完最大尝试次数,Streams API 将终止流并发出 NoSQLSubscriber.onError() 信号。在 21.1 中,默认情况下删除了此类限制,Streams API 将继续重新连接,直到连接恢复。用户可以通过设置 NoSQLSubscriptionConfig.Builder.setMaxReconnect(long maxReconnect)

来覆盖默认行为