Hazelcast 集群:序列化和复制问题

Posted

技术标签:

【中文标题】Hazelcast 集群:序列化和复制问题【英文标题】:Hazelcast cluster: serialization and replication issue 【发布时间】:2017-09-08 11:08:51 【问题描述】:

我们的应用程序由几个微服务组成。每个微服务都有自己的 hazelcast 实例的配置。所有 hazelcast 实例形成一个具有分布式数据的集群。 Hazelcast 复制映射被用作在这些微服务之间复制数据对象(DTO 包括几个字段)的一种方式。微服务托管在 AWS 上。

数据对象序列化存在问题,这就是我们使用自定义序列化配置创建单独项目的原因。我们要复制的所有数据对象(java 类)都列在此配置代码中。从这个非常配置项目构建的工件作为 maven 依赖项包含在每个微服务中。这有助于解决序列化问题。

这个解决方案让我们遇到了一个新问题,如果需要添加新的数据对象会出现什么问题。首先我们应该将这个数据对象添加到配置项目中,然后重建这个项目。之后,我们应该用更新的依赖关系重建所有微服务并重新部署。如果至少有一个微服务没有被重建,就会出现序列化错误,因为这个非常微服务 hazelcast 实例不知道如何序列化新的数据对象。重建和重新部署所有应用程序的过程对我们来说不是那么方便。

请分享您的经验!有没有办法让它变得更容易?

【问题讨论】:

【参考方案1】:

有几种方法可以解决您的问题:

为了将新的数据类加载到集群中,您可以使用User code deployment 功能。在 3.8 中,它仅适用于成员。在 3.9 中,它将支持从客户端加载。这里有更多信息:http://docs.hazelcast.org/docs/latest/manual/html-single/index.html#user-code-deployment-beta 您还可以拥有一组众所周知的***对象,并在需要时对它们进行相应的修改。为了更轻松地对这些对象进行版本控制,您可以使用便携式序列化格式。有关更多信息,请参阅以下链接:Portable Serialization & Versioning for Portable Serialization

【讨论】:

以上是关于Hazelcast 集群:序列化和复制问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 Hazelcast readUTF 时字符串索引超出范围

Hazelcast集群服务——Hazelcast介绍

Hazelcast集群原理分析

Hazelcast集群服务——Hazelcast基本配置

Hazelcast 客户端与整个集群断开连接

openfire集群集群插件hazelcast配置