- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 Hazelcast 来缓存 JMS 主题。
在某种程度上一切都很好。在大约 30-40 分钟的运行时间后,我开始得到:
WARNING: [192.168.3.102]:5701 [devGroup] RedoLog{key=Data{partitionHash=-1465305045} size= 10, operation=CONCURRENT_MAP_PUT_IF_ABSENT, target=Address[192.168.3.102]:5701, targetConnected=false, redoCount=910, migrating=null
partition=Partition [186]{
0:Address[192.168.3.102]:5701
}
}
据我阅读开发论坛的了解,这些是重做警告,意味着 Hazelcast 无法连接到指定实例 target=Address[192.168.3.102]:5701
分发缓存。
但奇怪的是我的配置只有一个节点,即当前服务器实例:
INFO: [192.168.3.102]:5701 [devGroup]
Members [1] {
Member [192.168.3.102]:5701 this
}
我正在使用 spring 来配置它:
<hz:hazelcast id="hazelcastInstance">
<hz:config>
<hz:group
name="devGroup"
password="pass"/>
<hz:properties>
<hz:property name="hazelcast.merge.first.run.delay.seconds">5</hz:property>
<hz:property name="hazelcast.merge.next.run.delay.seconds">5</hz:property>
</hz:properties>
<hz:network port="5701" port-auto-increment="true">
<hz:join>
<hz:multicast enabled="false" />
<hz:tcp-ip enabled="true">
<hz:members>192.168.3.102</hz:members>
</hz:tcp-ip>
</hz:join>
<hz:symmetric-encryption enabled="true"
algorithm="PBEWithMD5AndDES"
salt="thesalt"
password="thepass"
iteration-count="19"/>
<hz:asymmetric-encryption enabled="false"
key-password="thekeypass"
key-alias="local"
store-type="JKS"
store-password="thestorepass"
store-path="keystore"/>
</hz:network>
</hz:config>
</hz:hazelcast>
我正在使用 Hazelcast 2.1、Spring 3.1 和 Tomcat 7
那么有人知道我为什么会收到警告吗?
谢谢,
回答评论:
我是这样使用的:
final ConcurrentMap<K, V> cachedMap = getHazelcast().getMap(region);
cachedMap.putIfAbsent(key, value);
getHazelcast()
方法返回注入(inject)的 HazelcastInstance
通过 spring(上面配置中的那个,我已经检查了 bean id,它似乎没问题)。
更新 2.
map 上有一个以编程方式添加的最大尺寸:
final MapConfig mapConfig = hazelcast.getConfig().getMapConfig(region);
.... val is calculated here ....
mapConfig.getMaxSizeConfig().setSize(val);
val
不能低于25000
我尝试过不使用尺寸配置,但仍然收到警告。
我也用map.values(SqlPredicate(""))
按日期获取值。
最佳答案
如果为 map 定义了max-size
,则 map 达到max-size
后的put
操作将进入redo
循环,直到 map 大小减小到最大大小以下,以便能够插入新条目。
您应该从 map 中删除一些值,或者您应该为该 map 定义某种驱逐。我的意思是您可以定义以下一项或多项;
eviction-policy
和eviction-percentage
time-to-live-seconds
max-idle-seconds
有关详细信息,请参阅 Hazelcast Map Eviction
关于java - 为什么会出现这些 Hazelcast 警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11541173/
我在 docs 中找不到这个或 javadocs : 我是否需要为每个线程创建一个客户端,或者是由以下人员创建的客户端: client = HazelcastClient.newHazelcastCl
据我所见,Hazelcast 的应用最常见于具有 50 多个节点的架构中。在 1 到 4 节点架构上使用 Hazelcast 是否有意义?如果是,我应该遵循的关于分区和 hazelcast 实例的最佳
在 hazelcast 文档中有一些对名为“default”的缓存的简短引用 - 例如,此处: http://docs.hazelcast.org/docs/3.6/manual/html-singl
我们正在针对我们的一个用例评估 Hazelcast,我对 Hazelcast 中的复制有疑问。 在 http://docs.hazelcast.org/docs/latest-development/
Hazelcast 是否会延迟创建主题。在下面的示例中,我们调用 getTopic('default')。如果默认主题不存在,Hazelcast 会自动创建它吗? 这是否意味着没有理由初始化宇宙中所有
我正在研究hazelcast用于以多播方式查找主节点的算法。首先我找到了查找主节点的函数:com.hazelcast.cluster.MulticastJoiner.findMasterWithMul
我正在查看 Hazelcast 的文档,我注意到驱逐政策的差异,并且我注意到其中一个我并不完全理解。 map_size_per_jvm: Max map size per JVM. partition
我已经编写了用于缓存的 hazelcast 缓存框架,并通过构造函数注入(inject)专门编写了一个用于缓存的 hazelcast 服务器。只是想知道 IMap 对象存储在哪里?它是在我的 haze
我们的服务器端解决方案利用 Hazelcast 提供的分布式数据结构来提供与居住在特定集群成员上的实体相关的可用状态。 当一个集群成员加入或离开集群时,我们需要让其他集群节点知道“发生了什么变化”:例
我的 Spring 应用程序由十几个微服务组成。每个微服务都提供不经常更改的数据。为了减少微服务之间的通信,我正在考虑开始使用 Hazelcast。 我的想法是每个微服务都会嵌入 Hazelcast。
我需要使用 csv/平面文件在 hazelcast 中加载 3 亿条记录(每条记录 60KB)。以最快的方式加载所有这些数据的最佳方法是什么?我可以逐条读取记录并在 hazelcast 中执行 map
我正在探索使用 Hazelcast(或任何其他缓存框架)在集群内宣传服务的概念。理想情况下,当集群成员离开时,其服务(或宣传它们的对象)应从缓存中删除。 这全部可能吗? 最佳答案 这是肯定有可能的。
我刚刚开始使用 hazelcast [3.3.1]。按照 hazelcast 应用程序和客户端教程,我创建了一个 hazelcast 应用程序实例和一个客户端(使用 eclipse IDE)。 从客户
出于测试目的,我想在单个节点上运行多个 Hazelcast 实例。 Hazelcast 假定它正在管理整个节点,因此它创建了足够多的线程来完全(实际上是过度)加载所有内核。在我的 8 核 Linux
我使用 IP 127.0.0.1 和端口 5701 启动 Hazelcast。为什么它尝试连接另外两个端口 5702 和 5703?它们的用途是什么,为什么无法连接? 以下是我以编程方式配置的方式:
我使用 启动了 hazelcast 服务器 java -jar hazelcast-3.10.1/lib/hazelcast-3.10.1.jar 服务器启动于 Members {size:1
最近阅读 JSR-107 和 JCache。 想知道 Hazelcast 或 Ehcache 是否遵循此 JSR? 最佳答案 JSR107 (JCache) 取得了良好的进展,我们已经通知规范委员会
背景 Hazelcast 集群的两个节点,每个节点都位于一个离散的子网上,因此多播不适合也不适合节点定位。 我想使用最简单的 XML 配置文件(例如 hazelcast.xml)来配置 Hazelca
我正在创建一个始终启动并运行的服务(ReST)。因此,在这个服务中,我从 spring 上下文中调用 init 方法,该方法会访问数据库并将所需的数据加载到 hazelcast 实例中。 现在我必须确
当我的java服务启动时,我从数据库中获取字符串列表,因此将它们缓存在hazelcast中,键是字符串列表,值(例如)100。可能有多个具有不同值的列表。这个想法是,下次当我的方法接收 String
我是一名优秀的程序员,十分优秀!