Первоначально это был небольшой проект, всего 150 учетных записей, которые я написал программу selenium на python, чтобы выполнить небольшую задачу с ними. Он использовал один компьютер и занял около 5 часов. Теперь, однако, я рассчитываю масштабировать до 1000 учетных записей. По очевидным причинам я не хочу делать это на одном компьютере, эту задачу нужно выполнять один раз в день, и для выполнения этой задачи на одной машине потребуется около 30-35 часов. Я хочу использовать несколько машин, но также хочу иметь возможность легко масштабировать до трех, четырех и более.Дизайн системы Python. Мастер-раб? Или несколько мастеров?
Я переместил данные всех учетных записей в базу данных облаков amazon и могу легко подключиться к ней из моей программы python. Однако, как я упоминал ранее, я хочу, чтобы этот проект был легко масштабируемым. Я не хочу жестко задавать значения, так как один компьютер делает учетные записи 1-500, а другой - 501-1000 (что, если я добавлю еще 500 учетных записей и 2 машины? Я бы хотел, чтобы каждая машина выполняла 1500/4). Я думаю о подходе мастера. Где на каждой машине у меня есть программа, которую можно вызвать с некоторым количеством учетных записей в виде массива. И главная программа, которая запускается на моей машине, которая однажды в течение 24 часов может отправить команду с учетными записями, каждая машина должна использовать.
Затем я хочу, чтобы программа вернула мне данные, и когда каждое подчиненное устройство завершено, основная программа объединит данные, отправленные каждым ведомым и соответствующим образом обновит таблицу. ИЛИ каждый подчиненный, чтобы обновить таблицу самостоятельно, но я не уверен, что это возможно из-за блокировок таблиц (если кто-то мог бы прокомментировать это, это также было бы полезно)
Спасибо за чтение!
Редактировать: Если вы считаете это слишком широким, я не ищу точного ответа. Просто пытаюсь найти кого-то, кто сделал что-то подобное раньше. Просто перечислить технологию или способ сделать это, что я могу исследовать, мне очень помогло бы
Возможно, стоит проверить [CoreOS] (https://coreos.com/). Тривиально выделять еще один контейнер с помощью Fleet, а etcd можно использовать для хранения глобальной информации, например, где находится база данных, кто главный (если вы идете с подходом master/slave). Делает поддержку/управление распределенной системой намного проще. – willnx
Большое спасибо! Я обязательно начну исследовать это сейчас – k9b