#java #distributed-computing #hazelcast
#java #распределенные вычисления #hazelcast
Вопрос:
Я изо всех сил пытаюсь понять поведение реализации распределенной задачи в Hazelcast. Для меня распределенная задача по определению — это «Некоторая логика (в основном тяжелое выполнение), которую вызывающий хочет обработать, передается распределенным службам по сети «. Теоретически этим распределенным процессорам по сети не нужно заранее знать логику задачи. Вызывающий должен предоставить логику для выполнения и указать данные, ссылающиеся на эти службы распространения, и как только задача выполнена, вызывающий должен получить результат.
Теперь, с точки зрения hazelcast, кажется, что серверные узлы hazlecast сами должны знать логику ( распределенную задачу) заранее. Правильно ли я понимаю?
Я исходил из предположения, что вызывающий объект (простое ванильное соединение hazlecast, указывающее на любой экземпляр сервера hazlecast) должен иметь возможность передавать тело распределенной функции с сериализованными объектами на сервер и запрашивать удаленное выполнение функции, при этом узлы hazlecast ничего не знают о теле функции?
Ответ №1:
Простой ответ — вам нужно определение класса для десериализации массива сериализованных байтов. В случае Hazelcast для задачи распределенного исполнителя требуется, чтобы код выполнения присутствовал в classpath серверных узлов, поскольку серверам требуется определение класса для десериализации массива сериализованных байтов кода задачи, который был вызван вызывающим объектом.
Это то же самое, что и при использовании OBJECT in-memory-format для серверов для хранения данных в виде объекта Java. По умолчанию данные хранятся в сериализованной форме байтовых массивов.