【发布时间】:2025-11-27 18:15:03
【问题描述】:
我们正在运行 mongodb 实例以将数据存储在集合中,它没有问题,mongo 是我们的主要数据存储。
今天,我们将为产品开发 Oauth2 支持,并且必须存储用户会话(安全密钥、访问令牌等),并且访问令牌必须在定义的超时后才针对身份验证服务器进行验证这样不是每个请求都会等待身份验证服务器的验证。 对安全资源的首次请求(创建)应始终针对认证服务器进行认证。任何后续请求都将在内部进行验证(缓存)并检查内部超时,只有在过期时,才会向身份验证服务器发出另一个请求。
为了解决这个要求,我们必须引入某种分布式缓存,以存储(支持 TTL)用户会话等,基于 ttl 使其过期......我在上面写过。
这里有两个选项:
- 将用户会话存储在 hazelcast 中并在所有应用服务器之间共享 - 不错的选择,将所有用户会话保留在驱逐地图中。
- 在 MongoDb 中存储用户会话 - 并执行相同操作。
您是否看到使用 Hazelcast 而不是将临时数据存储在 Mongo 中的任何好处?您知道任何显着的性能改进吗?
我是 Hazelcast 的新手,所以不了解所有杀手级功能。
【问题讨论】:
-
不确定 Hazelcast,但您检查过 Couchbase 吗?其企业级 memcached 兼容实现。它的性能比 MongoDB 和 Cassandra 好很多。在这里查看:couchbase.com/couchbase-server/why-couchbase
标签: java spring mongodb caching hazelcast