пожалуйста, помогите нам принять Cadence: D
Вот текущий дизайн. Некоторые работники без сохранения состояния извлекают сообщения из централизованной очереди для их обработки. Сложная бизнес-логика задействована в worker, а также в функции Deduper, которая использует отдельный кластер Redis в качестве удаленного распределенного кеша (высокая согласованность с использованием консенсуса). В этом кэше хранятся только идентификаторы сообщений и их статусы «в процессе», «завершено» и «не начато». Очевидно, что ожидается, что воркер обработает незавершенное сообщение.
Лично мне хотелось бы переосмыслить все возможные решения. Мне на ум приходит модель рабочего процесса, потому что у меня есть приятный опыт работы с AWS SWF. Поскольку все наши сервисы написаны на ходу и работают в нашем собственном центре обработки данных, я хотел бы попробовать Uber Cadence (открытый исходный код SWF).
Я смотрел много видео от пользователей Uber, и я думаю, что первым делом нужно включить одно действие в новый рабочий процесс в качестве начала, а затем разбить его на несколько действий, или, возможно, лямбда AWS позже, когда мы перенесем его на AWS.
Итак, я перечисляю все требования здесь
- избегайте обработки сообщения дважды несколькими рабочими.
- 50 тыс. Запросов / с, поэтому необходимо масштабируемое решение
- низкая задержка на p99, <300 мс, надеюсь
Только первое требование на данный момент является головной болью, поскольку кеш Redis - это кластер удаленного кеша. В prod есть некоторые проблемы с подключением, и мы действительно хотим избавиться от них, чтобы избежать сложности и дополнительных сетевых переходов.
Вопросов:
- Вот и интересно, как спроектировать дедупер при переходе на Cadence?
Читая документ, Cadence предоставляет возможность уникальности идентификатора рабочего процесса внутри домена. Возможно, я могу использовать идентификатор сообщения как часть идентификатора рабочего процесса, например, WF-00001, чтобы гарантировать отсутствие дубликатов внутри домена. Пока я использую только один домен, проблем не будет. Тогда я не знаю ограничений этого подхода. например, количество рабочих процессов, разрешенных внутри домена. у нас скорость обработки сообщений 50к / с (пиковая)
Я не уверен, что это правильный подход. Приветствуются новые идеи.
- Есть ли веб-страница со списком всех ограничений Cadence? он нужен нам для оценки Cadence.
Спасибо
SWF Step Function Uber Cadence