[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"glossary-event-ordering::ru":3,"gloss-cluster-event-ordering::ru":26,"gloss-next-event-ordering::ru":9},{"slug":4,"category":5,"name":6,"definition":7,"meta_desc":8,"faq":9,"schema_markup":9,"related":10},"event-ordering","integration","Порядок событий","Порядок событий — это гарантия (чаще её отсутствие) того, что потребитель видит события в той последовательности, в какой они произошли. Семантика доставки отвечает на вопрос, сколько раз придёт сообщение; порядок отвечает на вопрос, в какой очерёдности, и эти два свойства независимы. Система может быть строго-однократной и всё равно выдать вам обновление раньше создания, от которого оно зависит. Порядок теряется по будничным причинам. Повтор отбрасывает сбойное событие за более поздние. Параллельные потребители разбирают партиции с разной скоростью. Вебхук, разлетающийся по интернету, идёт через сети с разной задержкой. Большинство очередей гарантирует порядок только внутри партиции или ключа, то есть порядок держится по клиенту или по записи тогда и только тогда, когда производитель партиционирует по этому ключу. Сбой тихий и имеет форму данных: запись остаётся в старом состоянии, потому что старое событие пришло последним, и нигде не возникает ошибки. Лечение не в том, чтобы требовать глобального порядка — это дорого и обычно не нужно. Лечение в том, чтобы сделать потребителя независимым от порядка прихода. Носите в каждом событии монотонную версию или отметку времени источника и отбрасывайте любое обновление старше уже сохранённого, ориентируясь на часы источника, а не на свои. Делайте обработчики идемпотентными, чтобы повтор был безвреден. Там, где событие действительно зависит от предыдущего, либо ненадолго отложите его и прогоните заново, либо считайте событие сигналом и перечитайте текущее состояние из источника вместо доверия к полезной нагрузке. Последний приём — тонкие события плюс авторитетное перечитывание — обходит почти все проблемы порядка ценой одного лишнего вызова на событие.","Порядок событий — гарантия, которой у потребителя обычно нет: как повторы и партиции переставляют события и как версия делает обработчик независимым.",null,[11,14,17,20,23],{"slug":12,"name":13},"delivery-semantics","Семантика доставки (delivery semantics)",{"slug":15,"name":16},"eventual-consistency","Согласованность в конечном счёте (Eventual Consistency)",{"slug":18,"name":19},"idempotency","Идемпотентность (Idempotency)",{"slug":21,"name":22},"message-queue","Очередь сообщений (Message Queue)",{"slug":24,"name":25},"publish-subscribe","Публикация\u002Fподписка (Pub\u002FSub)",[27,31,34,37,40,44,47,50,53,56,59,62],{"slug":28,"category":5,"name":29,"updated_at":30},"backend-for-frontend","Backend for Frontend (BFF)","2026-08-24T02:46:38+00:00",{"slug":32,"category":5,"name":33,"updated_at":30},"concurrency-limit","Лимит параллельных запросов",{"slug":35,"category":5,"name":36,"updated_at":30},"field-mapping","Сопоставление полей (field mapping)",{"slug":38,"category":5,"name":39,"updated_at":30},"function-schema","Схема функции",{"slug":41,"category":5,"name":42,"updated_at":43},"grpc","gRPC","2026-08-24T02:46:37+00:00",{"slug":45,"category":5,"name":46,"updated_at":30},"integration-marketplace","Каталог интеграций (integration marketplace)",{"slug":48,"category":5,"name":49,"updated_at":30},"ip-allowlist","IP-allowlist (список разрешённых адресов)",{"slug":51,"category":5,"name":52,"updated_at":30},"json-web-token","JSON Web Token (JWT)",{"slug":54,"category":5,"name":55,"updated_at":30},"mcp-server","MCP-сервер",{"slug":57,"category":5,"name":58,"updated_at":30},"mutual-tls","Взаимный TLS (mTLS)",{"slug":60,"category":5,"name":61,"updated_at":30},"oauth-scopes","OAuth-скоупы",{"slug":63,"category":5,"name":64,"updated_at":30},"openapi-specification","OpenAPI Specification"]