spring hazelcast 缓存集群显示警告

spring hazelcast cache cluster showing warning

我有微服务架构,所有的微服务都使用同一个数据库。现在我想在我的架构中使用分布式缓存。目前我选择 Hazelnut 作为分布式。作为开始,我在我所有的微服务中加入了以下配置。

@Configuration
@EnableCaching
@AutoConfigureBefore(value = { DatabaseConfiguration.class })
public class CacheConfiguration {

    private final Logger LOG = LoggerFactory.getLogger(CacheConfiguration.class);

    @Value("${cache.timeToLiveSeconds:3600}")
    private final int timeToLiveSeconds = 3600;

    @Value("${cache.backupCount:1}")
    private final int backupCount = 1;

    @Autowired
    private Environment env;

    @PreDestroy
    public void destroy() {
        LOG.info("Closing Cache Manager");
        Hazelcast.shutdownAll();
    }

    @Bean
    public CacheManager cacheManager(final HazelcastInstance hazelcastInstance) {
        LOG.debug("Starting HazelcastCacheManager");
        return new HazelcastCacheManager(hazelcastInstance);
    }

    @Bean
    public HazelcastInstance hazelcastInstance() {
        LOG.debug("Configuring Hazelcast");
        final HazelcastInstance hazelCastInstance = Hazelcast
                .getHazelcastInstanceByName("caching_service");
        if (hazelCastInstance != null) {
            LOG.debug("Hazelcast already initialized");
            return hazelCastInstance;
        }
        final Config config = new Config();
        config.setInstanceName("caching_service");
        config.getNetworkConfig().setPort(5701);
        config.getNetworkConfig().setPortAutoIncrement(true);

        // In development, remove multicast auto-configuration
        if (env.acceptsProfiles(Constants.DEV)) {
            System.setProperty("hazelcast.local.localAddress", "127.0.0.1");

            config.getNetworkConfig().getJoin().getAwsConfig().setEnabled(false);
            config.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(false);
            config.getNetworkConfig().getJoin().getTcpIpConfig().setEnabled(false);
        }

        config.getMapConfigs().put("default", initializeDefaultMapConfig());
        return Hazelcast.newHazelcastInstance(config);
    }

    private MapConfig initializeDefaultMapConfig() {
        final MapConfig mapConfig = new MapConfig();

        /*
         * Number of backups. If 1 is set as the backup-count for example, then all
         * entries of the map will be copied to another JVM for fail-safety. Valid numbers
         * are 0 (no backup), 1, 2, 3.
         */
        mapConfig.setBackupCount(0);

        /*
         * Valid values are: NONE (no eviction), LRU (Least Recently Used), LFU (Least
         * Frequently Used). NONE is the default.
         */
        mapConfig.setEvictionPolicy(EvictionPolicy.LRU);

        /*
         * Maximum size of the map. When max size is reached, map is evicted based on the
         * policy defined. Any integer between 0 and Integer.MAX_VALUE. 0 means
         * Integer.MAX_VALUE. Default is 0.
         */
        mapConfig.setMaxSizeConfig(
                new MaxSizeConfig(0, MaxSizeConfig.MaxSizePolicy.USED_HEAP_SIZE));

        return mapConfig;
    }
}

现在我开始了我的第一个微服务,日志行是

2017-07-16 10:38:06.581  INFO 13084 --- [           main] c.h.instance.DefaultAddressPicker        : [LOCAL] [dev] [3.7.7] Picked [127.0.0.1]:5701, using socket ServerSocket[addr=/0:0:0:0:0:0:0:0,localport=5701], bind any local is true
2017-07-16 10:38:06.595  INFO 13084 --- [           main] com.hazelcast.system                     : [127.0.0.1]:5701 [dev] [3.7.7] Hazelcast 3.7.7 (20170404 - e3c56ea) starting at [127.0.0.1]:5701
2017-07-16 10:38:06.595  INFO 13084 --- [           main] com.hazelcast.system                     : [127.0.0.1]:5701 [dev] [3.7.7] Copyright (c) 2008-2016, Hazelcast, Inc. All Rights Reserved.
2017-07-16 10:38:06.595  INFO 13084 --- [           main] com.hazelcast.system                     : [127.0.0.1]:5701 [dev] [3.7.7] Configured Hazelcast Serialization version : 1
2017-07-16 10:38:06.769  INFO 13084 --- [           main] c.h.s.i.o.impl.BackpressureRegulator     : [127.0.0.1]:5701 [dev] [3.7.7] Backpressure is disabled
2017-07-16 10:38:07.171 DEBUG 13084 --- [           main] c.h.internal.cluster.ClusterService      : [127.0.0.1]:5701 [dev] [3.7.7] Updating members [Member [127.0.0.1]:5701 - b2e3c44d-0392-4813-a2c8-d648695e8f1d this]
2017-07-16 10:38:07.171 DEBUG 13084 --- [           main] c.h.i.p.InternalPartitionService         : [127.0.0.1]:5701 [dev] [3.7.7] Adding Member [127.0.0.1]:5701 - b2e3c44d-0392-4813-a2c8-d648695e8f1d this
2017-07-16 10:38:07.293  INFO 13084 --- [           main] c.h.s.i.o.impl.OperationExecutorImpl     : [127.0.0.1]:5701 [dev] [3.7.7] Starting 8 partition threads
2017-07-16 10:38:07.295  INFO 13084 --- [           main] c.h.s.i.o.impl.OperationExecutorImpl     : [127.0.0.1]:5701 [dev] [3.7.7] Starting 5 generic threads (1 dedicated for priority tasks)
2017-07-16 10:38:07.302  INFO 13084 --- [           main] com.hazelcast.core.LifecycleService      : [127.0.0.1]:5701 [dev] [3.7.7] [127.0.0.1]:5701 is STARTING
2017-07-16 10:38:07.302 DEBUG 13084 --- [           main] c.h.i.p.InternalPartitionService         : [127.0.0.1]:5701 [dev] [3.7.7] Adding Member [127.0.0.1]:5701 - b2e3c44d-0392-4813-a2c8-d648695e8f1d this
2017-07-16 10:38:07.303  INFO 13084 --- [           main] c.h.n.t.n.NonBlockingIOThreadingModel    : [127.0.0.1]:5701 [dev] [3.7.7] TcpIpConnectionManager configured with Non Blocking IO-threading model: 3 input threads and 3 output threads
2017-07-16 10:38:07.305 DEBUG 13084 --- [           main] c.h.n.t.n.NonBlockingIOThreadingModel    : [127.0.0.1]:5701 [dev] [3.7.7] IO threads selector mode is SELECT
2017-07-16 10:38:07.317  WARN 13084 --- [           main] com.hazelcast.instance.Node              : [127.0.0.1]:5701 [dev] [3.7.7] No join method is enabled! Starting standalone.
2017-07-16 10:38:07.351  INFO 13084 --- [           main] com.hazelcast.core.LifecycleService      : [127.0.0.1]:5701 [dev] [3.7.7] [127.0.0.1]:5701 is STARTED

现在我开始了我的第二个微服务

2017-07-16 10:41:30.841  INFO 17936 --- [           main] c.h.instance.DefaultAddressPicker        : [LOCAL] [dev] [3.7.7] Picked [127.0.0.1]:5702, using socket ServerSocket[addr=/0:0:0:0:0:0:0:0,localport=5702], bind any local is true
2017-07-16 10:41:30.854  INFO 17936 --- [           main] com.hazelcast.system                     : [127.0.0.1]:5702 [dev] [3.7.7] Hazelcast 3.7.7 (20170404 - e3c56ea) starting at [127.0.0.1]:5702
2017-07-16 10:41:30.855  INFO 17936 --- [           main] com.hazelcast.system                     : [127.0.0.1]:5702 [dev] [3.7.7] Copyright (c) 2008-2016, Hazelcast, Inc. All Rights Reserved.
2017-07-16 10:41:30.855  INFO 17936 --- [           main] com.hazelcast.system                     : [127.0.0.1]:5702 [dev] [3.7.7] Configured Hazelcast Serialization version : 1
2017-07-16 10:41:31.017  INFO 17936 --- [           main] c.h.s.i.o.impl.BackpressureRegulator     : [127.0.0.1]:5702 [dev] [3.7.7] Backpressure is disabled
2017-07-16 10:41:31.451 DEBUG 17936 --- [           main] c.h.internal.cluster.ClusterService      : [127.0.0.1]:5702 [dev] [3.7.7] Updating members [Member [127.0.0.1]:5702 - db64274e-73bd-4aa2-ae67-f626433b25c6 this]
2017-07-16 10:41:31.452 DEBUG 17936 --- [           main] c.h.i.p.InternalPartitionService         : [127.0.0.1]:5702 [dev] [3.7.7] Adding Member [127.0.0.1]:5702 - db64274e-73bd-4aa2-ae67-f626433b25c6 this
2017-07-16 10:41:31.582  INFO 17936 --- [           main] c.h.s.i.o.impl.OperationExecutorImpl     : [127.0.0.1]:5702 [dev] [3.7.7] Starting 8 partition threads
2017-07-16 10:41:31.583  INFO 17936 --- [           main] c.h.s.i.o.impl.OperationExecutorImpl     : [127.0.0.1]:5702 [dev] [3.7.7] Starting 5 generic threads (1 dedicated for priority tasks)
2017-07-16 10:41:31.590  INFO 17936 --- [           main] com.hazelcast.core.LifecycleService      : [127.0.0.1]:5702 [dev] [3.7.7] [127.0.0.1]:5702 is STARTING
2017-07-16 10:41:31.591 DEBUG 17936 --- [           main] c.h.i.p.InternalPartitionService         : [127.0.0.1]:5702 [dev] [3.7.7] Adding Member [127.0.0.1]:5702 - db64274e-73bd-4aa2-ae67-f626433b25c6 this
2017-07-16 10:41:31.591  INFO 17936 --- [           main] c.h.n.t.n.NonBlockingIOThreadingModel    : [127.0.0.1]:5702 [dev] [3.7.7] TcpIpConnectionManager configured with Non Blocking IO-threading model: 3 input threads and 3 output threads
2017-07-16 10:41:31.592 DEBUG 17936 --- [           main] c.h.n.t.n.NonBlockingIOThreadingModel    : [127.0.0.1]:5702 [dev] [3.7.7] IO threads selector mode is SELECT
2017-07-16 10:41:31.633  WARN 17936 --- [           main] com.hazelcast.instance.Node              : [127.0.0.1]:5702 [dev] [3.7.7] No join method is enabled! Starting standalone.
2017-07-16 10:41:31.633  WARN 17936 --- [           main] com.hazelcast.instance.Node              : [127.0.0.1]:5702 [dev] [3.7.7] Config seed port is 5701 and cluster size is 1. Some of the ports seem occupied!
2017-07-16 10:41:31.663  INFO 17936 --- [           main] com.hazelcast.core.LifecycleService      : [127.0.0.1]:5702 [dev] [3.7.7] [127.0.0.1]:5702 is STARTED

所以我想知道我是否在这里做事,因为我在启动第二个微服务后得到了这条线

[127.0.0.1]:5702 [dev] [3.7.7] Config seed port is 5701 and cluster size is 1. Some of the ports seem occupied!

我有以下疑问

1.) 是创建 Hazelcast spring 分布式缓存机制的正确方法吗?

2.) 当我说分布式是否意味着如果我在两个微服务中有相同的实体缓存,在一个微服务中对实体进行 CRUD 服务将更新其他微服务中的缓存 实体也是。

3.) 如果我不想使用 spring 缓存注释,如 Cacheable 等...我可以删除 EnableCaching 吗,否则这不是一个好主意。我想 以编程方式创建缓存并以编程方式管理缓存而不是 通过注释。

hazecast 绝对适用于您的用例。 检查类似问题的答案

检查此 blogpost 以及 spring 引导的缓存示例。