Изучаю Elixir, для примера решил сделать приложение для пинга списка прокси. Суть такова что нужно периодически скачивать по ссылке список с прокси, и в кучу потоков пропинговать это список, оставив только живые прокси. Как я пока это вижу:
Есть супервизор процессов-пингеров. Каждый пингер знает свою конфигурацию(таймаут для пинга и прочее). После запуска пингер отправляет сообщение процессу импортера "дай мне прокси для пинга" и ждет ответа.
Есть супервизор импортера. Импортер принимает сообщение с просьбой выдать прокси для пинга, и если у него список прокси пустой, то отвечает пингеру "пока нет прокси", и скачивает список новых прокси. После этого ждет сообщений от пингеров. Получив сообщение, он отправляет инфо о прокси пингеру. Пингер сделав свое дело, отправляет сообщение импортеру с результатом пинга. Импортер сохраняет прокси.
Оптимальна ли такая схема? Планируется что пингеров будет не больше 1000, но и не меньше 500. Правильно ли строить получение прокси для пинга и возврат результата через сообщения между процессами? Или лучше пусть импортер загружает список прокси например в redis, и пингеры уже сами берут оттуда прокси для пинга и сами обрабатывают результат?