我想在双节点tomcat集群上部署servlet,它使用hazelcast缓存。设置如下:
servlet创建hazelcast客户端连接,并以hazelcast方式访问IMAP。
我在一些论坛中指出,要在tomcat中的contextInitialized()函数中实例化hazelcast。因此,每当tomcat上下文启动时,hazelcast就会启动; tomcat上下文被破坏,hazelcast也将被破坏。
我怀疑在contextInitialized()函数中实例化hazelcast是否会更有效且适合tomcat-hazelcast集成?或者,如果使用我当前的java程序创建hazelcast,实际上没有太大的不同,独立于tomcat上下文生命周期?
当多个用户访问serlvet网页时,我目前面临servlet响应时间长的问题。我还使用IMAP锁来确保适当的并发过程。所以,想知道如何调整它以获得更好的性能。感谢任何建议。
谢谢! 莱恩
答案 0 :(得分:1)
我的建议是利用Hazelcast客户端的NearCache功能,以便您可以从tomcat中分离Hazelcast节点。
Hazelcast群集: 使用IMap配置设置Hazelcast集群并实现MapStore,它应该负责将IMap加载到符合缓存条件的段。还可以使用事件处理程序来处理刷新缓存。
Tomcat Servlet Layer :在每个tomcat服务器上启动Hazelcast客户端,并在这些客户端上启用NearCache。 Hazelcast客户端启动后,NearCache设置将负责同步其群集中的内容。两个tomcat实例都将与缓存内容保持同步。
要记住的事情:
请告诉我这是否适合您的架构并且有任何疑问。