шардирование обработчиков (например, с помощью консистентного хранилища) - условно говоря, пусть хэши от 1 до 10 обрабатывает первйы обработчик, от 10 до 20 - второй, и тд. Тогда мы сводим задачу к обеспечению порядка уже на одной ноде.
У нас всё еще есть открытые вопросы:
1) Что делать, если нода упала. Ну, давайте сделаем master-slave для каждого обработчика с помощью какого-нибудь внешнего механизма, типа консула, или игнайта,
2) Что делать, если мы получили 1, 2, ... 5, а 3 - не получили, в течение многих часов. Считаем, что его не существует? Или прекращаем обработку? Или включаем персистентный режим, и вместо хранения 1, 2 в памяти, перекладываем это в персистентную БД.
У меня ощущение Что в этой задаче самое важное понять где сделать правильные допущения Потому что полностью она не решается
Обсуждают сегодня