使用Zookeeper存储用户权限是否有意义

sky*_*yde 6 java distributed apache-zookeeper

我正在编写一个涉及多个前端节点的分布式应用程序,除非它们是列表的一部分,否则需要拒绝对用户执行操作.

现在我们有超过4个节点,但只有一个运行DB2的数据库服务器通常需要维护.

现在我们正在轮询数据库以更新内存列表,这样如果用户从列表中删除,则更改会反映到所有4个节点.但是,如果在数据库关闭时重新启动其中一个节点,我们最终会得到一个空列表,这将拒绝我们不想要的所有用户请求.我们可以接受来自用户的请求,即使数据库已关闭,因为我们将它们缓冲在消息队列中,但我们想立即拒绝它们,如果它们需要被拒绝的话!

在我们的4个节点上运行Zookeeper实例并在Zookeeper中存储用户权限是否有意义.因此,阅读应该是快速的,并且数据具有高可用性和可靠性.我们不必再进行轮询,即使我们重新启动数据库,节点也可以从zookeeper获取配置!

Sla*_*ast 10

是的,你描述问题的方式,Zookeeper应该完全适合这个法案.虽然需要回答几个问题:

  • 我们谈论了多少数据?Zookeeper将数据保留到磁盘,但仅在数据适合RAM时才有效.

  • 数据更改频率如何?Zookeeper将确保超过一半的节点收到更新,因此写入并不完全符合要求.

  • 应该一次读取多少数据?Zookeeper的响应大小限制为1MB,但他们建议将数据保持在该限制之下.请注意,如果要列出包含大量子节点的节点,也可以达到此限制,因为子节点名称计为数据.

考虑到数据是从RAM送达,阅读它不应该是太大的问题,但你总是可以缓存结果,并就适当的节点设置观察到无效的本地数据.