Spring boot 带弹簧靴的Hazelcast

Spring boot 带弹簧靴的Hazelcast,spring-boot,hazelcast,Spring Boot,Hazelcast,我在研究hazelcast时发现了一些与springboot的良好集成。但是,我想了解是这样,还是我们需要hazelcast服务器来实现产品就绪。有人可以指出一个资源,我可以在其中查看设置您可以在嵌入式模式下运行Hazelcast,其中Hazelcast群集节点与应用程序客户端共存,或者在客户端-服务器模式下运行Hazelcast,其中Hazelcast群集与应用程序客户端分离。两者都可用于生产。嵌入式系统通常更容易快速启动和运行。如果希望能够独立于应用程序客户机调整和扩展集群,那么客户机服务器

我在研究hazelcast时发现了一些与springboot的良好集成。但是,我想了解是这样,还是我们需要hazelcast服务器来实现产品就绪。有人可以指出一个资源,我可以在其中查看设置

您可以在嵌入式模式下运行Hazelcast,其中Hazelcast群集节点与应用程序客户端共存,或者在客户端-服务器模式下运行Hazelcast,其中Hazelcast群集与应用程序客户端分离。两者都可用于生产。嵌入式系统通常更容易快速启动和运行。如果希望能够独立于应用程序客户机调整和扩展集群,那么客户机服务器可能会更好

在架构之间切换应用程序代码的唯一变化是实例化客户机的代码行

Hazelcast.newHazelcastInstance(); // creates an embedded 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>
步骤3:然后可以使用
@Cacheable
注释对方法进行注释

@Cacheable(cacheNames = "your_cache_name")
public POJO foo(Parameter1 parameter1,
        Parameter2 parameter2) {
    return pojoRepository.findByParameters(parameter1, parameter2);
}

在没有附加db层的情况下使用hazelcast嵌入式模式是否安全。我有一个要求,即我只需要存储dat的数据,并且数据不敏感。我的应用程序将部署在2个实例上。嵌入式模式适合这种情况吗?如果您有2个实例,那么每个实例的分区都将备份到另一个实例(假设1个异步备份的默认配置没有更改)。因此,您可以在不丢失数据的情况下丢失一个节点。如果“数据不敏感”,则可以在没有持久层的情况下运行。但是,如果某个节点发生故障,并且您没有准备好立即投入服务的备用设备,那么您将在不受保护的情况下运行,并且有丢失所有数据的风险。
@Bean
public CacheManager cacheManager(HazelcastInstance hazelcastInstance) {
    return new com.hazelcast.spring.cache.HazelcastCacheManager(hazelcastInstance);
}
@Cacheable(cacheNames = "your_cache_name")
public POJO foo(Parameter1 parameter1,
        Parameter2 parameter2) {
    return pojoRepository.findByParameters(parameter1, parameter2);
}