Hazelcast 上的 DistributedTask,Hazelcast 上需要的任务实现或调用者可以实现它

DistributedTask on Hazelcast, Task implementation needed on Hazelcast or caller can implement it

我很难理解 Hazelcast 中 DistributedTask 实现的行为。 对我来说 - 分布式任务,根据定义是 "Some logic (mostly heavy execution) which a Caller wants to process , is handed over to distributed services across network "。理论上,这些网络上的分布式处理器不需要提前知道任务逻辑。调用者应提供执行逻辑和对这些分布式服务的数据点引用,一旦任务完成,调用者应获得结果。

现在,从hazelcast的角度来看,似乎hazlecast服务器节点本身需要提前知道逻辑(DistributedTask)。我的理解正确吗?

我假设 调用者(指向任何 hazlecast 服务器实例的普通 hazlecast 连接)应该能够将带有序列化对象的分布式函数体传递给服务器并请求远程执行函数,没有 hazlecast 节点对函数体一无所知 ?

简单的答案 - 您需要一个 class 定义来反序列化序列化的字节数组。在 Hazelcast 的情况下,分布式执行程序任务要求执行代码存在并且在服务器节点的 class 路径中,因为服务器需要 class 定义来反序列化由任务代码调用的序列化字节数组呼叫者。

这与服务器使用 OBJECT in-memory-format 以 Java 对象的形式存储数据时相同。默认情况下,数据以字节数组的序列化形式存储。