简介:石墨文档使用函数计算搭建文档实时编辑服务,由函数计算的智能调度系统自动分配执行环境,处理多用户同时编写文档带来的峰值负载,函数计算的动态扩缩容能力保障应用的可靠运行。

作者 | 金中茜

对石墨文档来说,“用户体验、成本消耗、上线速度”是决定能否在茫茫商海展露头角的重要因素。它需要一套弹性高可用、分布式的服务来实时处理文档编辑冲突:既要保证成本可接受,又要保证在负载突增时平滑处理峰值负载,实现毫秒级别的文档同步响应。

2021 年 7 月 20 日,一场特大暴雨打破了河南的宁静,也牵动着全国人民的心。当晚,大量河南暴雨的信息开始在各类社交媒体急速传播,“待救援人员名单”“救援现场信息”“住宿交通物资信息”......一个个在线文档承载着一条条救命信息。石墨文档在第一时间向抗汛一线的政府部门、医疗机构、公益组织、社会志愿者们提供了免费的高级版产品和服务。

两周内,全国共创建了超过 1600 个灾情协同文档,累积为数百万设备提供了在线协同服务,让抗汛的现场救援、物资运输、医疗及志愿者组织都更加高效。同时,也让石墨文档背后的 IT 系统面临着巨大挑战,尤其是:如何保证系统的平稳运行。

只有系统平稳的运行,才能让更多人参与到文档协作中,第一时间对各类救命文档进行整理、编辑、归纳,让救命信息及时传递出去。

石墨文档经受住了这次极端流量的考验,背后是五个月前便在阿里云上构建了一套智能运维系统,打通了系统全链路可观测数据,实现统一管理,智能告警和提前预检。

灾情一发生,石墨文档团队工程师就接到告警电话,语音自动播报石墨线上 K8S(Kubernetes,容器管控系统)集群资源使用率飙升,PV(Page View,页面浏览量)同比增加 200%以上;某些业务接口访问量骤增,多个资源即将到达压力位告警,原来是多个文档的读写次数和访问人数出现异常增多。

由于短期访问人数激增,且无法准确判断后续上涨趋势,工程师快速协调了数倍于往日的阿里云计算资源对基础设施进行了大规模扩容,确保这些救灾文档在数千人同时协作,数百万人次浏览的情况下也能保持稳定、流畅的体验,从而保障救灾工作顺利进行。最终,石墨文档出色完成了作为“信息载体”的任务,文档始终稳定可用。

能够快速应对极端情况下的流量压力,还有赖于石墨文档一直以来的技术积累。自 2014 年成立至今,石墨文档累计服务超过 20 万家企业,在 IT 层面主要面临两大挑战。

一是多用户实时协作。为了支持多用户多终端实时在线编写,石墨文档技术团队对 OperationalTransformation 算法进行了非常深入的探索和修改,解决了一段文字被多个客户端同时修改所引起的冲突问题。

但这会带来第二个挑战,就是多用户实时编辑对服务器带来的巨大压力。用户敲击键盘输入一个文字只需几毫秒,但如果是大量用户在石墨文档上同时编写文档,就很容易出现在一个很小时间段内数据分布不均的情况,一个直观的体现就是“写串行”。

对石墨文档来说,“用户体验、成本消耗、上线速度”是决定能否在茫茫商海展露头角的重要因素。它需要一套弹性高可用、分布式的服务来实时处理文档编辑冲突:既要保证成本可接受,又要保证在负载突增时平滑处理峰值负载,实现毫秒级别的文档同步响应。

为此,石墨文档与阿里云进行深度合作,借助公共云 Serverless 架构来应对流量挑战。

函数计算是阿里云提供的 Serverless 服务,根据请求量动态分配执行环境,毫秒级调度计算资源,确保在负载高时保持稳定的延时,在负载低时有着较高的资源利用率,且只会对代码运行时使用的计算资源付费。

石墨文档使用函数计算搭建文档实时编辑服务,由函数计算的智能调度系统自动分配执行环境,处理多用户同时编写文档带来的峰值负载,函数计算的动态扩缩容能力保障应用的可靠运行。

借助函数计算毫秒级别的资源伸缩能力,石墨文档解决了高峰期负载突增的计算资源扩容问题,相比于自建机房维护服务器,节省了 58% 的 IT 成本,目前石墨文档每月调用函数计算超过 30 亿次。

云原生时代,逐渐完善的 IT 基础设施,让企业能更高效地进行数字化创新。

由于不用再考虑 CPU 密集型计算的负载均衡问题,不仅开发的稳定性提高了,各个项目的迭代与上线的步伐也快了起来。作为中国第一款支持云端协作的企业办公服务软件,石墨文档实现了以毫秒级同步响应速度,来实现多成员多终端的在线实时协作,强大稳定的技术支撑着平台高效稳定的服务体验,也正激发更大想象空间。

借助阿里云函数计算极致弹性,石墨文档发布“远程办公版”,为企业带来一系列远程办公模板。这些模板使用方便,实现多人多地在线实时办公。更进一步,12 月 1 日,在“重塑在线办公”的主题下,石墨文档正式推出为企业和组织打造的国产企业级云端 Office——石墨办公,向更广阔的市场迈出关键一步。

石墨团队一直围绕企业文档协同的需求不断创新,这为未来的办公协同模式,进行了重要探索。

原文链接

本文为阿里云原创内容,未经允许不得转载。

节省 58% IT 成本,调用函数计算超过 30 亿次,石墨文档的 Serverless 实践的更多相关文章

  1. Javascript中只能在 HTML 输出流中使用 document.write,在文档已加载后使用它(比如在函数中),会覆盖整个文档。

    意思就是说,初次加载时如果没有加载document.write,那么再次加载的时候回覆盖掉原来的内容,只显示新加载的内容. <!DOCTYPE html> <html> < ...

  2. python函数4种类型及函数生成帮助文档

    Pyouthon中函数参数是引用传递(注意不是值传递). 对于不可变类型,因变量不能修改,所以运算不会影响到变量自身: 而对于可变类型来说,函数体中的运算有可能会更改传入的参数变量. a += a   ...

  3. oralce 超过1亿条数据的数据库表清理实践

    2018-08-18 16:58 无腿鸟 阅读(331) 评论(0) 编辑 收藏 问题:当一个表的数据量超过一亿条,要删除其中的5000w条,如何处理. 如果直接使用delete语句,会涉及到到大量的 ...

  4. Matlab中fread函数的高级使用方法及其帮助文档中容易引起歧义的地方

    参考资料:http://cn.mathworks.com/help/matlab/ref/fread.html 注意:参考资料针对的Matlab版本号R2015a,我使用的是R2013b. Matla ...

  5. 您只能在 HTML 输出流中使用 document.write。如果您在文档已加载后使用它(比如在函数中),会覆盖整个文档。

    刚刚接触JS,看到这句话时一时没搞懂,想了终于有了一些眉目,意思就是在文档加载过后,如果我们用比方说按钮的方式重新加载文档,就会把文档都覆盖: 列如: <!DOCTYPE html> &l ...

  6. 调用Microsoft.Office.Interop.Word生成自定义Word文档

    具体思路: 1.先制作Word模版,使用文本框+书签的方式来设计模版: 2.模版制作完之后,根据模版生成新文件,使用File.Copy方法,生成.doc格式新文件: 3.后台取得数据,参照网页渲染的方 ...

  7. 从函数计算架构看 Serverless 的演进与思考

    作者 | 杨皓然  阿里巴巴高级技术专家 导读:云计算之所以能够成为 DT 时代颠覆性力量,是因为其本质是打破传统架构模式.降低成本并简化体系结构,用全新的思维更好的满足了用户需求.而无服务器计算(S ...

  8. 让 Serverless 更普惠,阿里云函数计算 FC 宣布全面降价,最大幅度达 37.5%

    11月5日,2022 杭州 · 云栖大会上,阿里云宣布函数计算 FC 开启全面降价,vCPU 单价降幅** 11%,其他的各个独立计费项最高降幅达 37.5%**. 本次云栖大会上,阿里云智能总裁张建 ...

  9. 函数计算 Python 连接 SQL Server 小结

    python 连接数据库通常要安装第三方模块,连接 MS SQL Server 需要安装 pymssql .由于 pymsql 依赖于 FreeTDS,对于先于 2.1.3 版本的 pymssql,需 ...

  10. 转:在 C# 中使用 P/Invoke 调用 Mupdf 函数库显示 PDF 文档

    在 C# 中使用 P/Invoke 调用 Mupdf 函数库显示 PDF 文档 一直以来,我都想为 PDF 补丁丁添加一个 PDF 渲染引擎.可是,目前并没有可以在 .NET 框架上运行的免费 PDF ...

随机推荐

  1. idea提交时候忽略改动部分文件

    之前因为本地开发环境和线上开发环境有区别,bootstrap.xml里的log存放位置在我本地mac不存在路径,我就只能通过修改log路径才能让项目跑起来.但是,本地修改的东西每次commit时候都显 ...

  2. Google Chart API学习(三)

    书接上回: maps-charts: <html> <head> <script type="text/javascript" src="h ...

  3. Ubuntu 14.04傻瓜式安装 0@0

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  4. 专访惠众科技|元宇宙应用如何借助3DCAT实时云渲染实现流畅大并发呈现?

    当前互联网流量红利已经逐渐消失,营销同质化愈发严重.在这样的背景下,催生了以元宇宙为焦点的虚拟产业经济.元宇宙在各行各业中以不同形式快速萌生.成长,呈现出多元化的应用场景.尤其是众多品牌,将元宇宙视为 ...

  5. 地理探测器R语言实现:geodetector

      本文介绍基于R语言中的geodetector包,依据多张栅格图像数据,实现地理探测器(Geodetector)操作的详细方法.   需要说明的是,在R语言中进行地理探测器操作,可以分别通过geod ...

  6. JS(对象)

    一 对象 1.1 对象的相关概念(python中的字典) 什么是对象? 在 JavaScript 中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如字符串.数值.数 组.函数等. 对象 ...

  7. FFmpeg开发笔记(三)FFmpeg的可执行程序介绍

    ​外界对于FFmpeg主要有两种使用途径,一种是在命令行运行FFmpeg的可执行程序,该方式适合没什么特殊要求的普通场景:另一种是通过代码调用FFmpeg的动态链接库,由于开发者可以在C代码中编排个性 ...

  8. Zookeeper学习笔记-安装

    zookeeper官网地址https://zookeeper.apache.org/ 1.卸载CentOS自带的open jdk,安装oracle jdk(1.8) 2.时间同步 #安装ntpdate ...

  9. Java 枚举(Enums)解析:提高代码可读性与易维护性

    接口 在 Java 中,实现抽象的另一种方式是使用接口. 接口定义 接口是一个完全抽象的类,用于将具有空方法体的相关方法分组: // 接口 interface Animal { public void ...

  10. 6. Eigenvalues and Eigenvectors

    Keys: What are Eigenvalues and Eigenvectors? How to find Eigenvalues and Eigenvectors? Applications ...