У меня есть кластер c-узлов, которые подключаются к моему экземпляру erlang и должны иметь распределенные между ними сообщения. Мой текущий способ сделать это состоит в том, чтобы иметь -define
из списка атомов имени cnode и gen_server
, который просто отвечает на запрос имен, поворачивая список и отправляя обратно все, что сейчас находится спереди, и процесс запроса затем взаимодействует с каким бы узлом оно ни было. К сожалению, эти c-узлы очень сильно используются и что gen_server
значительно резервируется (оставаясь в очереди около 2k-6k сообщений).Erlang rotating/random global value
Мне интересно, есть ли другой способ «загрузить баланс» через эти c-узлы. Моя первоначальная мысль заключалась в том, чтобы просто выбрать случайный элемент из списка всякий раз, когда процесс должен взаимодействовать с ним, но это кажется мне крайне неэффективным. Есть ли другие методы, о которых я не думаю?
В моем опыте случайное распределение улучшило производительность по круговому распределению. Не отказывайтесь от случайного распределения без запуска и тестов. –