Hazelcast集群:序列化和复制问题
问题描述:
我们的应用程序由多个微服务组成。每个微服务都有自己的hazelcast实例的配置。所有hazelcast实例形成一个具有分布式数据的集群。 Hazelcast复制的地图用作在这些微服务之间复制数据对象(DTO包括多个字段)的方式。微服务在AWS上托管。Hazelcast集群:序列化和复制问题
数据对象序列化存在问题,这就是为什么我们使用自定义序列化配置创建了分离的项目的原因。我们想要复制的所有数据对象(Java类)都在此配置代码中列出。从这个非常配置项目构建的工件作为Maven依赖项包含在每个微服务中。这有助于解决序列化问题。
如果需要添加新的数据对象,此解决方案将使我们遇到新问题。首先,我们应该将这个非常数据对象添加到配置项目中,然后重新构建该项目。之后,我们应该重新构建具有更新依赖性的所有微服务并重新部署。如果至少有一个微服务没有重建,将会出现序列化错误,因为这个微服务hazelcast实例不知道如何序列化新的数据对象。重建和重新部署所有应用程序的过程对我们来说并不方便。
请分享你的经验!有什么方法可以让它更容易吗?
答
有几个方法,你如何能解决您的问题:
- 为了新的数据类加载到集群中,你可以使用
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