带弹簧靴的 Hazelcast
Hazelcast with springboot
我正在研究 hazelcast,发现它与 springboot 有一些很好的集成。但是,我想知道是否就是这样,或者我们是否需要 hazelcast 服务器来实现产品就绪。有人可以指出我可以查看设置的资源吗
您可以 运行 Hazelcast 处于嵌入式模式——其中 Hazelcast 集群节点与应用程序客户端位于同一位置——或处于客户端-服务器模式,其中 Hazelcast 集群与应用程序分开客户。两者都可以用于生产。嵌入式通常更容易起床并且 运行ning 很快。如果您希望能够独立于应用程序客户端调整和扩展集群,则客户端-服务器可能会更好。
用于在体系结构之间切换的应用程序代码的唯一变化是实例化客户端的代码行
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>
第二步:添加@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);
}
我正在研究 hazelcast,发现它与 springboot 有一些很好的集成。但是,我想知道是否就是这样,或者我们是否需要 hazelcast 服务器来实现产品就绪。有人可以指出我可以查看设置的资源吗
您可以 运行 Hazelcast 处于嵌入式模式——其中 Hazelcast 集群节点与应用程序客户端位于同一位置——或处于客户端-服务器模式,其中 Hazelcast 集群与应用程序分开客户。两者都可以用于生产。嵌入式通常更容易起床并且 运行ning 很快。如果您希望能够独立于应用程序客户端调整和扩展集群,则客户端-服务器可能会更好。
用于在体系结构之间切换的应用程序代码的唯一变化是实例化客户端的代码行
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>
第二步:添加@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);
}