integration
Словарь ↗Петля синхронизации
Петля синхронизации возникает, когда две системы уведомляют друг друга об изменениях: запись в одну порождает событие, интеграция применяет его ко второй, эта запись порождает своё событие, и изменение отражается туда-обратно, пока что-нибудь его не остановит. Это характерный отказ двусторонних интеграций, и заметить его приближение трудно: каждый отдельный переход ведёт себя ровно так, как задумано. Симптомы приходят раньше диагноза. Журнал аудита заполняется правками, за которыми не стоит ни один человек. Лимит запросов, которого месяцами хватало с запасом, выбирается за ночь. Отметки времени изменения обновляются по всему набору данных, и следующий инкрементальный запрос — тот, что просит всё изменённое с прошлого прогона, — возвращает все записи вместо той горстки, которой действительно касался человек, а проблема объёма расползается на всех потребителей ниже по потоку. В худшем варианте петля не быстрая, а медленная — одно эхо на интервал опроса, — и потому днями выглядит как обычная активность. Разорвать петлю значит дать записи происхождение. Помечайте изменения, сделанные интеграцией, их источником — отдельная учётная запись, флаг на записи, маркер в метаданных изменения, — и пусть слушатель отбрасывает всякое событие, чей источник он сам. Сравнивайте перед записью: значение, которое уже совпадает, не должно порождать запись, а значит, и событие; одна эта привычка снимает большинство петель, потому что большинство откликов — пустые операции. Если источник отдаёт версию или ревизию записи, действуйте по версии, а не по факту того, что запись тронули. Затем поставьте границу. Потолок на число записей по одному объекту внутри окна и оповещение по объёму записей, а не по ошибкам, превращают петлю из инцидента, найденного по счёту или по жалобе, в инцидент, пойманный на первом проходе. Ту же защиту стоит иметь даже в номинально односторонней интеграции: односторонняя синхронизация плюс отдельная автоматизация на той стороне — это петля, которую никто не проектировал и за которую никто не отвечает.
Похожие термины