gpt4 book ai didi

jakarta-ee - 关于使用 HazelCast 缓存的解决方案的建议

转载 作者:行者123 更新时间:2023-12-02 03:21:10 30 4
gpt4 key购买 nike

需要一些关于应用架构方面的建议。

我正在开发一个使用 Hazelcast 作为缓存解决方案的应用程序。该应用程序的技术堆栈包括 Hibernate、Spring。我的要求是最终用户应该能够从缓存中获取数据。作为数据加载过程的一部分;所有表都在各自的缓存中一个一个地转储到 Hazelcast

最终用户所需的数据是经过处理的数据形式,即基于外键列连接表后的数据。此连接是通过使用谓词查询缓存来完成的。操作缓存后,需要创建数据并将其呈现给用户。我需要一些关于如何设置我的应用程序架构以使其具有可扩展性的建议。以下是我能想到的方法。

a) 创建一个 HazelCast 集群实例 (Hazelcast.newHazelcastInstance() ) 并让它在 JVM 上运行。让不同的最终用户通过使用在他们的客户端机器上运行的“hazelCastClient”(HazelcastClient.newHazelcastClient(clientConfig))连接到实例,并从缓存中获取数据,在客户端上操作并使用它。一次可以有近 150 个客户端查询缓存,这意味着我需要建立 150 个 hazelCastClient 连接。这似乎是一个瓶颈。请建议建立大量连接是否有问题?

b) 创建一个 HazelCast 集群实例 (Hazelcast.newHazelcastInstance() ) 并让它在 JVM 上运行。创建一个在单独的 JVM 上运行并具有 hazelCastClient 对象 的 REST 服务器,让所有最终用户访问 REST 服务器并获得 JSON 格式的响应。我可以将数据作为 REST 调用的一部分进行操作,并且将被操纵的数据作为输出呈现给最终用户。由于 REST Server 有一个 hazelCastClient 连接,它可以连接到运行在不同 JVM 上的 HazelCast 集群并查询它。我可以通过让“n”个 REST 服务器在负载均衡器后面运行来扩展它,其中每个 REST 服务器都与集群保持连接。问题是这个架构似乎有两个跃点,一个从最终用户到 REST 服务器,另一个从 REST 服务器(托管 hzCastClientConnection)到 HazelCast 集群。此外,如果多个请求命中 REST 服务器,多个请求是否可以通过单个客户端连接作为服务器?

还有其他我可以遵循的方法吗?

最佳答案

Hazelcast 的推荐设置通常是一个单独的集群 + 连接到该集群的客户端。这样您就可以独立扩展 REST API 服务器和缓存。

甚至不需要在本地运行 Hazelcast 节点来连接,因为并非所有节点都拥有所有数据。这意味着您很有可能获得网络往返。

根据缓存数据的更改频率(目前听起来相当稳定),您可能希望在客户端激活近缓存以将最近或经常使用的元素保留在本地(当数据更改时,这些元素会自动失效) ,但是它增加了一点机会在短时间内读取陈旧数据)。

希望对您有所帮助。

关于jakarta-ee - 关于使用 HazelCast 缓存的解决方案的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33298512/

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