部署指引

依規模為 Server SDK 應用選擇部署形態:單機、拆分匯入匯出、多協同節點。

本頁依規模介紹 Server SDK 應用的三種部署形態。先閱讀 Collaboration SDK、匯入匯出和範例,了解模組如何組裝;部署是把同一套組裝放到一個或多個節點上。

形態協同匯入匯出建議規模
單機一個節點同一節點本機應用、開發測試、少量內部使用者
拆分匯入匯出一個節點獨立節點多人線上服務,單節點容量以內
多節點多個節點獨立節點超出單節點容量,或需要故障轉移

單機

所有功能部署在一個 Node.js 程序裡,瀏覽器直接連線。

100%
  • Database Adapter 實作 IDatabaseAdapter 契約,見 資料庫配接器。
  • 匯入匯出的任務與檔案儲存、逾時和下載連結見檔案交換整合。
  • 一次轉換是 CPU 密集型的,大檔案會拖慢協同。

匯入匯出影響協同回應,或要面向多人持續服務時,拆分匯入匯出。

拆分匯入匯出

匯入匯出放到獨立節點;協同仍是一個節點;閘道分別路由兩類路徑;兩者連同一個資料庫。

100%

匯入匯出節點組裝 Database Adapter、UniverCollabService 和轉換模組,直接存取資料庫,注入點與單機相同。

協同單節點能服務的文件數受程序記憶體限制。超出容量或需要故障轉移時進入多節點。

多協同節點

多個協同節點執行同一份程式碼,連同一個資料庫。pub/sub adapter 在節點間中繼 Room、Presence 和廣播,ticket store 共用 Session Ticket,@univerjs-pro/collaboration-cluster-redis 提供 Redis 實作。參考範例:Multi-node。

100%

每個協同節點把 Redis 的 pub/sub adapter 和 ticket store 傳給 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.