【问题标题】:spring hazelcast cache cluster showing warning春季榛树缓存集群显示警告
【发布时间】:2017-12-20 23:06:09
【问题描述】:

我有微服务架构,所有微服务都使用同一个数据库。现在我想在我的架构中使用分布式缓存。目前我选择榛子分发。首先,我将以下配置放入我的所有微服务中。

@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.) 如果我不想使用像 Cacheable 等这样的 spring 缓存注释...我可以删除 EnableCaching 或者这不是一个好主意。我想要 以编程方式创建缓存并以编程方式管理缓存,而不是 通过注释。

【问题讨论】:

  • @Marged 是的。这不是一个答案。这个问题的作者询问榛树。你的 geode 插头不合适。谢谢
  • @VicGamov:这就是我将其作为评论的原因 ;-) 我只是想“警告” OP,因为我尝试了与他相同的方式,并在我学会时结束切换到 Gemfire / Geode关于 Hazelcast 的不足

标签: spring-boot hazelcast spring-cache


【解决方案1】:

hazecast 绝对可以在您的用例中使用。 检查类似问题的答案 https://stackoverflow.com/a/38247515/27563

检查此blogpost 与 Spring Boot 的缓存示例。

【讨论】:

    猜你喜欢
    • 2015-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 2018-12-11
    相关资源
    最近更新 更多