我正在研究hazelcast并发现了一些与springboot的良好集成。但是,我想了解是否就是这样,或者我们是否需要使用hazelcast服务器来实现prod。有人可以指出我可以查看设置的资源
您可以在嵌入模式(Hazelcast集群节点与应用程序客户端共存)中运行Hazelcast,也可以在客户端 - 服务器模式下运行Hazelcast,其中Hazelcast集群与应用程序客户端分开。两者都可以用于生产。嵌入式通常更容易启动和快速运行。如果您希望能够独立于应用程序客户端调整和扩展集群,则Client-Server可能会更好。
在架构之间切换的应用程序代码的唯一变化是实例化客户端的代码行
Hazelcast.newHazelcastInstance(); // creates an embedded client instance
而
Hazelcast.newHazelcastClient(); // creates a server client instance
我建议将参考手册作为配置选项的权威来源以及如何实现您的需求
我建议您阅读参考手册。但我还想分享我如何在生产服务器上部署hazelcast实例以及我如何使用它。
第1步:创建一个xml配置文件。
<?xml version="1.0" encoding="UTF-8"?>
<hazelcast
xsi:schemaLocation="http://www.hazelcast.com/schema/config https://hazelcast.com/schema/config/hazelcast-config-3.9.xsd"
xmlns="http://www.hazelcast.com/schema/config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<group>
<name>"your_service_name"</name>
<password>"service_password_chosen"</password>
</group>
<properties>
<property name="hazelcast.partition.count">83</property>
</properties>
<management-center enabled="true" update-interval="3">--url--</management-center>
<network>
<join>
<multicast enabled="false"/>
<aws enabled="false"></aws>
<tcp-ip enabled="true">
<member>"internal ip of your instance"</member>
<member>"internal ip of other instance</member>
</tcp-ip>
</join>
</network>
<map name="*.ttl3hr">
<max-size policy="USED_HEAP_PERCENTAGE">3</max-size>
<eviction-policy>LFU</eviction-policy>
<statistics-enabled>true</statistics-enabled>
<backup-count>0</backup-count>
<async-backup-count>1</async-backup-count>
<read-backup-data>true</read-backup-data>
<time-to-live-seconds>10800</time-to-live-seconds> <!--3 hours-->
</map>
第2步:添加@EnableCaching
并在用@Configuration
注释的文件中添加一个bean。
@Bean
public CacheManager cacheManager(HazelcastInstance hazelcastInstance) {
return new com.hazelcast.spring.cache.HazelcastCacheManager(hazelcastInstance);
}
第3步:然后您可以使用@Cacheable
注释来注释您的方法。
@Cacheable(cacheNames = "your_cache_name")
public POJO foo(Parameter1 parameter1,
Parameter2 parameter2) {
return pojoRepository.findByParameters(parameter1, parameter2);
}