我正在编写一个分布式应用程序,涉及多个前端节点,除非它们是列表的一部分,否则这些节点需要拒绝用户执行操作。
现在我们有超过 4 个节点,但只有一个运行 DB2 的数据库服务器,该服务器经常停机进行维护。
现在我们正在轮询数据库以更新内存中的列表,以便如果从列表中删除用户,则更改会反映到所有 4 个节点。但是,如果在数据库关闭时重新启动其中一个节点,我们最终会得到一个空列表,该列表将拒绝所有我们不想要的用户请求。即使数据库已关闭,我们也可以接受来自用户的请求,因为我们将它们缓冲在消息队列中,但如果需要拒绝它们,我们希望立即拒绝它们!
在我们的 4 个节点上运行一个 Zookeeper 实例并将用户权限存储在 Zookeeper 中是否有意义。因此,阅读应该是快速的,并且数据是高度可用和一致的。我们不再需要进行轮询,即使我们重新启动数据库,节点也能够从 zookeeper 获取配置!