gpt4 book ai didi

java - 修改 HazelcastHttpSession 实例的属性时是否需要锁定它?

转载 作者:行者123 更新时间:2023-12-01 13:09:21 25 4
gpt4 key购买 nike

我计划使用 Hazelcast 进行 Http session 集群。我读了这份文件 - http://hazelcast.org/docs/latest/manual/html/httpsessionclustering.html我知道我需要设置 com.hazelcast.web.WebFilter 过滤器,该过滤器将装饰原始 HttpSession 以将 session 数据存储在 Hazelcast 缓存中。

我的问题是,当我像对原始 HttpSession 实例那样修改其属性时,是否必须在 HazelcastHttpSession 实例上放置锁(分布式锁)。

如果我必须锁定HazelcastHttpSession实例,我计划使用Hazelcast分布式锁,获取分布式锁的关键是Session id。请参阅我的示例代码:

HazelcastInstance hz = Hazelcast.newHazelcastInstance(cfg);
Lock session_lock = hz.getLock( SessionID );

session_lock .lock();
try {
// Modify session data
} finally {
session_lock .unlock();
}

我的应用程序可能同时有 10K 个活跃用户,因此应用程序可能需要一次从 Hazelcast 获取 10K 分布式锁实例。

我的问题是 Hazel 可以一次创建太多(10K)分布式锁吗? Hazel分布式锁有什么限制?文档http://hazelcast.org/docs/latest/manual/html/lock.html没有提及任何内容。

感谢您的任何评论。

最佳答案

您不需要锁定该对象。 Hazelcast 数据结构在设计上是线程安全的。不过,您可以设置延迟写入属性,以便在请求完成后写入所有值。如果在处理请求时抛出异常,则不会写入它们。如果您不设置延迟写入,所有值都会立即存储在分布式 session 中。

关于java - 修改 HazelcastHttpSession 实例的属性时是否需要锁定它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23013944/

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