Должен ли он использовать сокеты и передачу сообщений между супервизором и рабочим?
Вы можете использовать какой-либо тип очереди, поэтому избегайте нагрузки на супервизора.Или распределенная файловая система, аналогичная HDFS, для распределения задач и сбора результатов.
Это также зависит от количества узлов, на которых вы планируете развертывать Workers.1 000 000 узлов - это очень большое число, поэтому в этом случае вам придется распределить задачи по нескольким очередям.
Осторожно, что произойдет, если все узлы завершат свои задачи одновременновремя.Было бы целесообразно внести некоторую изменчивость, когда они могут запросить новую задачу.ZooKeeper (http://hadoop.apache.org/zookeeper/) - это то, что вы также можете использовать для синхронизации заданий.