Лучший способ сделать связь между 2 сервисами
Это вопрос на статью от Яндекса на хабре.
Задача, которую делает эта схема: разбивка фильма на части(segmenter), кодирование(tcoder), сборка частей в фильм (combiner).
Нас как раз интересует только связь tcoder -> combiner. Как сделать правильно эту связь?
Варианты:
tcoder после того как завершил кодирование и пометил в базе что фрагмент готов, потом проверяет по базе "готова ли все фрагменты"? Если да , то отсылает сообщение combiner'y.
Проблема такого варианта: если tcoder работают параллельно на N машин, то одновременно могут войти в участок кода такой проверки, которая будет = true(все сегменты готовы), и отослать N дубликатов сообщений combiner'y одного и того же фильма.
Если после кодирования фрагмента, помечаем в базе и сразу посылаем без проверок сообщение combiner'y, а combiner на каждое сообщение делает проверку в базе "все ли фрагменты готовы?"
Проблема такого варианта: если combiner'ы работают на N машин, то допустим два параллельно вычитавших сообщения combiner'ов о одном и том же фильме, столкнуться лбами.
