Hazelcast和定制序列化程序的需要;在创建服务器时有效,但在连接到现有服务器时无效

Hazelcast和定制序列化程序的需要;在创建服务器时有效,但在连接到现有服务器时无效,hazelcast,Hazelcast,我们正在使用Hazelcast在分布式地图中存储内容。我们的远程服务器有问题,我需要一些关于我们能做些什么来解决这个问题的反馈 我们创建了服务器-WORKS 我们在应用程序的JVM中创建一个新的服务器Hazelcast.newhazelcast实例。我们传入的hazelcast配置对象有一组自定义序列化程序,这些序列化程序是为我们将要放入映射中的所有类型定义的。我们的对象是Protobufs、普通java对象以及两者的组合。服务器启动后,我们可以将对象放入地图中,稍后再将对象取出。我们最近决定在

我们正在使用Hazelcast在分布式地图中存储内容。我们的远程服务器有问题,我需要一些关于我们能做些什么来解决这个问题的反馈

我们创建了服务器-WORKS 我们在应用程序的JVM中创建一个新的服务器Hazelcast.newhazelcast实例。我们传入的hazelcast配置对象有一组自定义序列化程序,这些序列化程序是为我们将要放入映射中的所有类型定义的。我们的对象是Protobufs、普通java对象以及两者的组合。服务器启动后,我们可以将对象放入地图中,稍后再将对象取出。我们最近决定在自己的专用服务器上开始运行Hazelcast,因此我们尝试了下面的场景

服务器已经存在于外部,我们作为客户端连接-不工作 我们连接到一个已经运行的远程实例,而不是创建Hazelcast实例。我们使用之前使用的所有序列化程序传入配置。我们成功地连接到Hazelcast,我们可以把东西放在地图上,就我所知,但我们没有得到任何回报。不会触发任何事件,让侦听器知道对象已添加到映射

我希望能够连接到已经在JVM之外运行的Hazelcast实例。它不适用于我们的用例,我不确定它应该如何工作

外部运行Hazelcast的JVM在其类加载器中是否需要我们可能放入映射中的所有类类型?这似乎是问题所在,但这是否会使使用Hazelcast变得非常有限? 您通常如何管理这些类加载器问题? 假设上述情况属实,有没有办法告诉Hazelcast我们将在将对象放入地图之前序列化它们?基本上,我们会给Hazelcast一个ID和字节数组,这就是我们所期望的回报。如果是这样的话,就可以避免整个类加载器问题,我认为我们正在遇到。我们不需要能够根据对象的字段搜索对象。我们只需要知道对象的来去以及它们的ID是什么。
@Jonathan,当使用客户机-服务器体系结构时,除非您使用需要在集群上序列化数据的查询或其他操作,否则成员不需要了解任何有关序列化的信息。他们只是存储已经序列化的数据并提供服务。如果您提到的这些侦听器在客户端应用程序上,那么它应该可以正常工作

Hazelcast有一个称为用户代码部署的功能,但它主要用于用户类。与序列化相关的配置应该出现在成员上,或者您应该稍后添加&执行滚动重启


如果你可以分享一些例外/设置等,我也可以给出具体的答案

根据您的回答,我不必担心服务器上的序列化程序。我们在解决方案中使用Kubernetes和OSGi。我们回去,清理所有东西,重新编译,创建新的容器,然后重新运行测试。这一次,客户机工作没有问题,没有任何代码更改。因此,您是正确的,客户机可以创建自己的自定义序列化程序,而服务器不必为此烦恼。在我们的情况下,我们所有的客户都会在任何操作发生之前进行完全相同的序列化注册,所以我认为我们可以继续。请注意,除了缓存put/get之外,如果您使用查询或条目处理器等,那么成员需要知道如何反序列化数据。