问题:
我需要实现多个共享序列生成器,它们将被 50-100 个 Tomcat 服务器使用。每个序列生成器应从 1 开始,并在每次请求后递增 1。序列生成器实现应该有原子增量命令。Java 客户端应该可用。
规模:
多达 50000 个积极使用的序列生成器,对于每个生成器,我们预计在 5-10 秒内有一个增量请求。每秒最多 20000 个请求
50-100 个 Java 客户端(Tomcat 服务器)。对序列生成器的访问在这些服务器之间共享。重要提示:只有 2 个客户端使用相同的序列生成器。
50-100 次 - 每个序列生成器的平均使用次数。
24 h TTL - 一个生成器最多应在创建后 24 小时后被清理 - 因此实际上可能有超过 50000 个序列生成器,但预计最多只有 50000 个会同时主动接收请求。
性能:
<1ms 优选平均响应时间。平均超过 2ms 绝对不够好。
我们排除了 Oracle 的 Sequence 对象。
我们目前正在考虑 Redis 和 Memcached。
两者都很快。
推荐/足够好的实现是什么?
为此目的还有其他更好的技术吗?
另一个重要的问题:
incr、Redis 或 Memcached 哪个性能更好?
谢谢