今天早上我设置了几个 NoSQL 流。中午前后,部署 Oracle NoSQL 数据库的环境中出现了网络连接问题。我在我的应用程序中看到了一些异常情况。
Oracle NoSQL DB Streams API 如何处理网络连接不稳定、主传输和服务器重新平衡等故障?
请指教。
今天早上我设置了几个 NoSQL 流。中午前后,部署 Oracle NoSQL 数据库的环境中出现了网络连接问题。我在我的应用程序中看到了一些异常情况。
Oracle NoSQL DB Streams API 如何处理网络连接不稳定、主传输和服务器重新平衡等故障?
请指教。
感谢您试用 Oracle NoSQL 数据库流 API。
Oracle NoSQL Streams 根据故障的性质以不同的方式处理故障。在网络连接不稳定的情况下,Streams API 会重新连接到 Streams API 中缓存的主机和端口的每个 shard 的主节点,因此,当网络连接恢复时,Streams API 会重新连接成功并从上一个恢复流式传输流式操作。如果 3 次后尝试重新连接失败,Streams API 将从 Oracle NoSQL 数据库刷新拓扑,并重新连接在最新存储拓扑中找到的主节点。当主控转移并且旧主控不再可访问时,就会发生这种情况。
处理 store rebalancing 与处理 master transfer 类似,Streams API 将从 store 中提取新的拓扑,并找到每个 shard 的新 master 以重新连接。在重新平衡完成并准备好新拓扑后,Streams API 将能够重新连接并恢复流式传输。
以上描述适用于最新版本的 Oracle NoSQL Database 21.1。在以前的版本中,Stream API 中有一个限制重新连接次数的限制,NoSQLSubscriber.onError()
如果超过最大尝试次数,Streams API 将终止流并发出信号。在 21.1 中,默认情况下删除了此类限制,Streams API 将继续重新连接,直到连接恢复。用户可以通过设置覆盖默认行为NoSQLSubscriptionConfig.Builder.setMaxReconnect(long maxReconnect)