gpt4 book ai didi

hibernate - Zookeeper适合对象缓存吗?

转载 作者:行者123 更新时间:2023-12-01 22:08:35 25 4
gpt4 key购买 nike

开发云系统时着眼于可扩展性,这意味着系统沿着功能边界(usermgmt、ordermgmt、customermgt 等)组成基于 REST 的服务,每个服务都有自己的底层数据库并根据负载而定,我们可能会启动 ordermgmt 服务的多个实例。当 ordermgmt 服务处理添加订单的请求(代表“客户”)时,它将对 customermgmt 服务进行 REST 调用以验证客户等...

由于客户实体不会经常更改,我想知道像 ZooKeeper 这样的东西是否适合缓存特定客户的实例,customermgmt 服务的多个实例可能会在访问数据库之前询问该实例。我查看了 Zookeeper 使用的各种列表,但没有看到任何人使用它进行对象缓存。似乎建议的 znode 字节大小约为 1K,这使得它不适合存储脱水的对象。另外,不支持开箱即用的 GC 或 LRU,因此我还需要添加它。

如果不是Zookeeper,还有更合适的建议吗?我们使用 Hibernate 作为 ORM,但我们对此没有太多经验,虽然它支持一级和二级缓存,但我不确定它们是否以分布式/复制的方式跨多个服务实例工作.

谢谢斯科特

最佳答案

Zookeeper 不太适合对象缓存。

Zookeeper 将整个数据库保存在 java 堆的内存中。一旦 java 堆超过千兆字节左右,您将开始遇到 gc 暂停的问题。这对于 Zookeeper 来说尤其麻烦,因为 Zookeeper 节点不断地互相发送心跳,如果在节点忙于GC时错过了足​​够多的心跳,则会触发领导者选举,从而使集群立即关闭。

使用zookeeper作为缓存的另一个问题是zookeeper集群中的所有节点都将具有相同的数据,而您通常不需要缓存。

由于这些限制,您的 3 台服务器(每台服务器有 8 GB 内存)能够为大约 1 GB 的总工作集提供服务。最好使用 memcache,或 Sebastien 列出的其他缓存系统之一。

关于hibernate - Zookeeper适合对象缓存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10986702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com