Руководство по развертыванию

Выберите форму развертывания приложения на Server SDK по масштабу, от одной машины до нескольких узлов совместного редактирования.

На этой странице описаны три формы развертывания приложения на Server SDK в порядке роста масштаба. Сначала прочитайте Collaboration SDK, импорт и экспорт и примеры, чтобы понять, как собираются модули; развертывание размещает ту же сборку на одном или нескольких узлах.

ФормаСовместное редактированиеИмпорт и экспортРекомендуемый масштаб
Одна машинаОдин узелТот же узелЛокальные приложения, разработка и тестирование, несколько внутренних пользователей
Отдельный импорт и экспортОдин узелОтдельный узелМногопользовательский онлайн-сервис в пределах емкости одного узла
Несколько узловНесколько узловОтдельный узелСверх емкости одного узла или при необходимости переключения между узлами

Одна машина

Все функции развернуты в одном процессе Node.js, браузер подключается к нему напрямую.

100%
  • Database Adapter реализует контракт IDatabaseAdapter; см. Адаптеры баз данных.
  • Хранение задач и файлов, тайм-ауты и ссылки на скачивание для импорта и экспорта описаны в разделе Интеграция обмена файлами.
  • Конвертация сильно нагружает процессор, и большой файл замедляет совместное редактирование.

Выделяйте импорт и экспорт, когда конвертации влияют на отклик совместного редактирования или сервис должен постоянно обслуживать много пользователей.

Отдельный импорт и экспорт

Импорт и экспорт переносятся на отдельный узел; совместное редактирование остается на одном узле; шлюз маршрутизирует два вида путей раздельно; оба используют одну базу данных.

100%

Узел импорта и экспорта собирает Database Adapter, UniverCollabService и модуль конвертации и работает напрямую с базой данных; точки внедрения те же, что и на одной машине.

Число документов, которые обслуживает один узел совместного редактирования, ограничено памятью процесса. Переходите к нескольким узлам, когда емкости не хватает или нужно переключение при отказе.

Несколько узлов совместного редактирования

Несколько узлов совместного редактирования выполняют один и тот же код с одной базой данных. pub/sub-адаптер передает Rooms, Presence и рассылки между узлами, ticket store делит Session Tickets, а @univerjs-pro/collaboration-cluster-redis предоставляет реализацию на Redis. Пример: Multi-node.

100%

Каждый узел совместного редактирования передает pub/sub-адаптер и ticket store Redis в Endpoint; остальная сборка остается прежней:

TypeScript
import { createClient } from "redis";import { RedisPubSubAdapter, RedisSessionTicketStore } from "@univerjs-pro/collaboration-cluster-redis";import { UniverCollabEndpoint } from "@univerjs-pro/collaboration-endpoint";const client = createClient({ url: process.env.REDIS_URL });const subClient = client.duplicate();await Promise.all([client.connect(), subClient.connect()]);const pubSub = new RedisPubSubAdapter({ pubClient: client, subClient });const ticketStore = new RedisSessionTicketStore({ client });const endpoint = new UniverCollabEndpoint(service, { pubSub, ticketStore });

Дальше

Очень большой документ замедляет запросы небольших документов на том же узле. Разделите узлы на пулы по размеру документов и направляйте большие документы через шлюз в отдельный пул; ключом маршрутизации остается unit ID, а все пулы используют общую базу данных и pub/sub.

Насколько полезно это руководство?

© 2026 DreamNum Co., Ltd.