Durable Objects
Что это такое
Durable Object — это крошечный сервер с состоянием, который Cloudflare гарантированно поддерживает существующим ровно в одном месте в каждый момент времени. У каждого объекта есть уникальный ID, собственное постоянное хранилище, и он обрабатывает запросы по одному за раз, поэтому это естественный дом для координации — счётчики, блокировки, игровые комнаты, чат-сессии. Если Worker не имеет состояния и работает повсюду, то Durable Object имеет состояние и единственен.
Сильные стороны
- Гарантия единственного экземпляра — никаких гонок между репликами.
- Встроенное постоянное хранилище (теперь на основе SQLite), расположенное вместе с объектом.
- Идеален для приложений реального времени: WebSockets, присутствие, живая совместная работа.
- Строгая согласованность: чтение после записи внутри объекта происходит немедленно.
- Будильники (alarms) позволяют объекту планировать собственную будущую работу.
Компромиссы
- Однопоточность на объект — «горячий» объект может стать узким местом; шардируйте по ключу.
- Больше моментов для обдумывания, чем у обычного Worker'а; границы объектов проектируете вы.
- Хранилище на объект ограничено; это не замена D1 или R2 на масштабе.
- Избыточен для обработки запросов без состояния.
Когда это использовать
Прибегайте к Durable Objects, когда нужна координация или состояние на сущность: чат-комнаты, состояние многопользовательской игры, ограничители частоты, выбор лидера или живой документ, который множество клиентов редактируют одновременно.
Соответствие vibe coding
Durable Objects блистают на функциях реального времени, которые иначе капризны в реализации, и агент может сгенерировать класс, привязку и обработку WebSocket. Скажите ему, как шардировать — обычно по одному объекту на комнату, пользователя или документ, — чтобы один объект не сериализовал весь ваш трафик. Конфиг ниже объявляет класс Durable Object с миграцией.
# wrangler.toml
[[durable_objects.bindings]]
name = "ROOM"
class_name = "ChatRoom"
[[migrations]]
tag = "v1"
new_sqlite_classes = ["ChatRoom"]
npx wrangler deploy