2016-07-01 38 views
0

我们目前正在使用Hibernate作为我们的数据库访问在三个节点上使用Hazelcast创建群集。现在我们注意到,Hazelcast的默认序列化发送事件来更新Hibernate的第二级缓存需要Hibernate的CacheKey的完整序列化,在我们的例子中,由于嵌入的密钥(3.8K字节)而特别大。Hazelcast Hibernate CacheKey大小

我们想知道是否有办法通过网络发送最小数量的数据,并在接收节点上重建CacheKey。在我们当前的实现中,我们发送了关键字entityOrRoleName和tenantId,但是难以重构CacheKey的类型。

有关如何做到这一点的任何建议? Hibernate是否支持使用此数据重建CacheKey(类型)?

回答

1

其实我们使用了一个特殊的Hibernate4CacheKeySerializer。见https://github.com/hazelcast/hazelcast-hibernate/blob/master/hazelcast-hibernate4/src/main/java/com/hazelcast/hibernate/serialization/Hibernate4CacheKeySerializer.java

这比Java序列化更高效。

我们不认为有可能使这种效率更高。

+0

我会批准你的答案。在一天结束的时候,我们结束了一个非常类似的解决方案。主要区别在于,在阅读时,我没有使用UNSAFE(我喜欢这部分),而是分析了Hibernate如何生成CacheKey并构建了类似的东西。对不起,我无法提供我的解决方案 – stikku