LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

Univer 协同引擎性能测试

freeflydom
2024年7月25日 11:49 本文热度 251

引言

在当今快节奏的商业环境中,实时协作编辑已成为现代生产力应用不可或缺的核心功能。它让远程团队能够高效协作,共同完成创作和编辑任务。本报告深入评估了 Univer 协同引擎在处理多人实时协作编辑时的性能表现,并将其与市场上其他领先产品进行对比。

Real-time Collaborative Editors Performance.pdf

A Research for real-time collaborative editor performances.

在这篇论文中,提出了市场上流行的实时编辑服务中延迟性能测量。提出了协同编辑人数是影响实时编辑系统性能的主要因素,以下是主流实时编辑产品表现:


Office 365腾讯文档石墨文档Google Sheet飞书表格
协同编辑人数上限365200200200200

注:上述数据截止于 2022 年。

Univer GitHub 地址:github.com/dream-num/u…

介绍 Univer 协同引擎

为了更好理解测试过程,让我们简要介绍一下 Univer 协同引擎的实现方案。

Univer 协同引擎非常注重扩展性,已支持分布式方案。但为便于叙述,我们将暂时采用单机部署方案来描述。

Univer 协同引擎主要使用两种编程语言:Golang 和 JavaScript。

  • Golang 擅长处理高并发和快速网络 I/O,使 Univer 协作引擎能够轻松处理大量客户端连接请求;

  • JavaScript(Node.js)使得后端与前端之间的代码共享变得容易,并极大减少了处理冲突错误的可能性。同时也为未来服务器端计算和渲染奠定了重要基础。

Univer 使用 OT(操作转换)作为协同冲突处理的方案。

为了加快单个请求处理速度,协同引擎被设计为有状态服务,即每篇活跃文档在内存中都有一份最新的拷贝,客户端的编辑请求会迅速应用和写入。

有状态服务 Collaboration-server 采用 Node.js 实现,与前端编辑器共享相同的冲突处理代码,包括两个核心方法:

  • Transform:实施表格或文档的 OT 算法,对 changeset 进行操作转换;

  • Apply:将转换后的 changeset 应用到表格/文档。

无状态服务 Universer 使用 Golang 实现,主要负责调度和网络

  • Comb:基于 WebSocket 实现房间服务,用于广播和分发协同事件;

  • Snapshot:基于 EventSourcing 模式提供文档快照服务,并高效还原任意版本文档。

以下是用户编辑事件如何被协同引擎处理的过程:

changeset 指的用户编辑后产生的一组变更,通常简称为 cs

性能测试

为全面评估 Univer 协同引擎的性能,我们精心设计了一系列测试,涵盖了关键指标和典型场景。

为方便叙述,介绍几个关键术语:

通俗讲,衡量协同体验最直接的指标是,A 的编辑多久后被 B 应用并展示。

这个过程涉及的变量很多,为简化压测过程,这里提取最关键的变量,并称为“协同延迟”。

协同延迟能有效地衡量 CS 的 transform, apply 的性能。

在当前协同引擎模型下,影响协同延迟的直接因素为 CS 的处理数量,不妨称为 协同并发数。

测试环境:

  • ECS 配置为 4 核 8GB 内存

  • 采用单机部署模式(docker compose)

预设条件:

  • 每个客户端平均发送编辑事件频率约为 0.15 次每秒;

  • 当协同编辑人数达到 200 时,协同并发数约为 30(CS QPS=30);

测量方法:

  • 逐步增加协同编辑人数,观察并记录协同延迟情况;

  • 测量总时长为 5 分钟;

预期结果:研究协同编辑人数与协同延迟 (pct99) 之间的关系。

测量结果:

Number of Users50100150160170180190200210220230240250
Latency pct99 (ms)3280.4281.9413.4506654.8862.41352.82051.22706.73662.84674.65409.7

总结

  • 图表显示,在一台普通的 4 核 8GB 服务器上处理 200 个并发用户时,协同引擎协作延迟保持在约 1.3 秒左右;

  • 随着协同编辑人数变多,协同延迟逐渐出现非线性的增长,下面是对其指数拟合:y = 3.92e^(0.03x)

凭借这些基准结果,Univer 协同引擎在实时协作中展现出不俗的性能,处理 200 个并发用户时,协同引擎成功将协作延迟保持在约 1.3 秒左右,接近业界主流产品水平。

同时随着协同人数增加,协同延迟出现指数增长的趋势。我们将继续改进引擎支持大量并发用户的能力,并尽量降低延迟。


作者:阳络
链接:https://juejin.cn/post/7355439624100855843
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。



该文章在 2024/7/25 11:49:10 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved