前端早早聊大会-与掘金联合举办-全年学习
灼翎.001.jpeg

一、自我介绍

大家好,我是来自阿里巴巴菜鸟的灼翎,多年数据开发经验。目前正在负责菜鸟的相关业务以及体验应用方向。很高兴今天能够来到早早聊的直播间,能够和大家见面,再次感谢大家的一个围观。

今天我们要聊的是文挡技术。那么菜鸟这边的业务其实是一个传统加上互联网的一个数字技术公司,为什么这么来讲呢?因为菜鸟的业务其实还是比较复杂和多样性的,虽然菜鸟这边存在很多的一些系统,比如说我们有仓储运配系统,包括还有一些中后端的系统。我们又是作为一个生产型的公司,比如说我们仓储运输,线下都有大量的一些仓储工作人员,这个时候其实它存在一些大量的个性化的生产系统的需求,这个时候往往很多需要文档系统来支持。

举个例子,比如说我们有一些排生产排班、劳动力登记和故障单的收集等,这个时候我觉得表格或者说文档系统,在这些仓储的大型系统之外,可以起到很好的辅助作用。所以说今天我想给大家来分享在 WebExcel 领域,我们在菜鸟的业务当中是怎么来探索的,怎么来做一些系统集成化的,希望今天的分享能够给大家带来一些启发。

二、Why Web

首先我想先抛一个问题,就是为什么要做 WebExcel、或者说大家对 WebExcel 的定位有什么样一个认识?

首先我们是先来看一下这几个问题:

  • Excel 的优势是什么?
  • Excel 的使用对象是谁?
  • Excel 给业务的帮助是什么?

带着这些问题,我希望就是说大家对文档或者说 WebExcel 能够有更多的一些认识,不单单是看到一个Excel,可能是办公的一个神器,更多的是否可以把这些 Excel 的这种理念能够理解的更透彻一点。

灼翎.002.jpeg

Excel 的优势是什么呢?

第一,Excel 它是一个数据库。比如说一个单元格,可以是一个天然的数据库,一个可视化的模型。这个时候可以在 Excel 里面几乎可以存储或者说处理各种各样的数据。第二,运算速度很快。通过输入一些公式等于三等等,能很快的处理一些工作上的一些需求。

Excel 这边使用对象是谁呢?

其实很多包括我在我们菜鸟业务里面有各种,比如说运营、财务、技术、设计,包括这一些业务的生产管理人员,他们几乎每个人群都会用到它。

Excel 给业务带的帮助是什么?

刚才我也提到了,虽然菜鸟这边有很多高大上的一些系统,虽然它是专注于某个行业的,但是由于系统的一些复杂性,也就是说很多不能贴合一些很贴地气的功能来做,比如说刚才说的劳动力排班。很多需要大量的开发人员去做一些系统,是有些不太符合实际,这个时候能不能用一些 Excel 的轻量方案去做快速地系统化的方式。比如定制一些快速的数据的分析、或者说一些生产的系统,就很方便的满足人员的一些工作,这就是在 Excel 领域我们怎么来思考:Excel 不单单是只有办公,更多的是怎么样去赋能业务。所以带着这个问题我们想到了 WebExcel,这个是菜鸟业务在 Web 领域的一些 case,大家可以看一下。

三、菜鸟业务 WebExcel 机会点

灼翎.003.jpeg

第一个 case 就是菜鸟有很多网点,里面的一个 case 是某个网点的中心应用同学,每次分析数据要从报表平台中拉取数据,再把数据拉到本地,用本地的 Excel 来做分析,分析完之后再形成一个报表,然后最后截图发给其他运营同学。

第二个 case 就是某仓的小二同学,每天要做工作,就是从业务平台中获取数据,导出线下数据,再截图汇报给上级领导。其实这里面的一些 case 把线下的数据或者一些易购类的数据拉下来,形成到本地,再聚合做一些分析,然后发给其他的一些同学进行生产或者运营活动,这就是菜鸟业务里面大量存在的一些 WebExcel 的一些机会点。

物流场景

灼翎.004.jpeg

总结一下:菜鸟在业务里面,物流场景里面可以归纳为这么一些场景,比如说配送域的、仓储域的、运输域的。还有一些比如说中后台的一些管理系统里面,它其实都是一些 WebExcel 的机会点。这就允许我们可以用 WebExcel 来解决大量的一些业务场景。

系统

灼翎.005.jpeg

归纳一下:我们要求做的系统能够满足千仓千面的,或者说能满足千人千面的,Excel 又能代表一个生产型系统的数字化转型,即线下到线上的一个过程。最后,我们怎么样把一些数据从线下的收集到发送给同学,存在一个沟通的过程,这个是一个沟通的数据流转。在这个里面菜鸟业务系统(WebExcel 系统),我们需要具备这样的一些能力。

效率

灼翎.006.jpeg

对人的要求有 2 点:有大量的一些工作人员,比如仓储里面的,比如说调货的,要求能够能快速上手,操作能快的,满足以前日常传统型的操作模式。所以说 Excel 到 WebExcel 的这种转型是非常切合菜鸟一些业务的产品,所以我们也在尝试着去做一些平台的方式来解决线下化的一些业务场景。

四、业务核心痛点

我们系统或者说我们作为一个菜鸟的 WebExcel 架构,要解决什么样的一个问题?

灼翎.007.jpeg

这里主要有三个问题:

  • 第一个是人与人之间沟通效率问题。怎么样更好的一个协作起来。
  • 第二个是人与人之间数据协同管理问题。怎么样把数据管理起来,人与人沟通完之后的数据怎么协同存储下来。
  • 第三个是数据与业务平台的协同问题。当我把这些数据收集回来之后,怎么样把这些数据再回流到业务系统当中去。比如说排班系统、劳动力系统,如果一些数据的登记完之后,我们可以跟菜鸟的财务系统进行挂钩,把这些数据回流到财务系统上去,作为结算系统的一部分。

这是我们通过线下化数据的一个收集,跟菜鸟业务数据的一个良好的结合,这是业务的一些痛点。那怎么来做呢?

格新

灼翎.008.jpeg

这边有一个小视频,大家可以看一下,主要是结合钉钉机器人、钉钉微应用,主要的方式上传,通过线下到线上的一个过程。这里面有一个协作的能力,数据的沉淀,怎么样把搜集数据变成一个系统,可以看到通过数据的一键导入,通过格式化的输出,就变成了一个系统。

大概讲一下多人编辑协同的一些难点,包括 Smart 系统、表单技术的一些思考。可以看到很多操作习惯其实跟 WebExcel 是非常类似的。如果通过一些拖拽、下拉、地址字段、人员字段,通过表单的技术融合到 WebExcel 里面,使 WebExcel 更具有操作性,数据能够直观的表达出线下到线上的含义。这是菜鸟在沉淀的格新系统,这款系统未来能够帮助业务从 Excel 转型到 WebExcel。

五、沟通即协作,协作即创作

其实上面可以归纳为 10 个字:沟通即协作协作即创作

沟通即协作

灼翎.009.jpeg

沟通器协作的含义:我们在沟通过程中,在日常的工作方式中,把数据沉淀下来,这是沟通的一个过程。比如说你跟两个运营同学说,我今天要做一个什么活动,你们能不能帮我把一些数据沉淀一下?这个时候我们通过一些沟通的方式,目前我们是通过钉钉的这种生态方式来做,刚才讲到的钉钉的微应用,钉钉的就是机器人,从这两方面就是进行了一个沟通,然后帮助解决线下数据的一个数据快速线上化的一个过程,我们称为沟通即协作的过程。当然我们这里沟通即协作,还有就是多人协同,数据的分发,这个时候就能帮助线下业务快速线上化。

协作即创作

灼翎.010.jpeg

第二个刚才提到的协作即创作,创作什么意思?我把数据沉淀下来,沉淀为一个系统,这个系统未来的数据又能对接到业务平台当中去。我们协作即创作的理念是解决业务数据管理以及线下数据的对接,业务平台的一些能力。有了这些能力之后,我们才能更好的把这些数据汇合到业务平台里面去。所以说我们要做得就是 10 个字:沟通即协作协作即创作。这个是菜鸟在 WebExcel 的一个思考。

钉钉工作沟通工具

下面来看一下主要的功能架构是怎么样子的。

灼翎.011.jpeg

首先从左边来看:首先是一个导入/接入/新建的一个过程。这个时候我们可以导入一个线下 Excel。接入就是表示接入就是业务的一些 API,或者说第三方系统。新建的就是说新建一空白的,然后可以从无到有的去收集一些数据。有了这些能力之后,借助钉钉的新型工作方式来进行两方面的创作:第一个是沟通协作,第二个是协作创作。

第一个沟通主要在打造一个分发功能,大家可以想象一下,比如说你要收集一份数据,可能会通知 A、B、C 三个同学来帮你做一些数据的收集。比如疫情期间可能同学每天都在打卡,比如说健康问题,这个时候我们可以通过一些分发的能力,让同学更好的来填写一些数据,称作为一个数据的收集。

第二个就是系统的创作,我们具体的是做一些业务的管理,我们怎么样把这些数据结合起来管理起来。怎么把一些数据可以做成一个报表。

第三个就是我们有了这些数据之后,怎么样嵌入或者提供给第三方系统的集成,这时候我们可以从到最右边,其实我们可以称之为两块:一块是权限,一个是数据服务。权限的主要解决包括刚才说的沟通编辑的这些权限,还有一些创作时候编辑系统的编辑权限。这个时候打造就是说多人沟通边际,全线收拢这个过程。数据服务主要是为第三方系统提供一个数据的数据服务能力,我们可以提供一些比如本地的数据透视分析、evel 的一些数据分析、智能图表,还有一些通过服务的方式把这些数据分享出去,让第三方系统能够在文档系统里面所沉淀的这些数据,能够服务到业务系统当中去,这个是我们格新平台大概的功能介绍。

SMART 模式

灼翎.012.jpeg

这个模式的一个转变,其实也是在解决一个异构表变同构表的概念。什么叫做异构表?就是之前很多数据,比如说我从 A 系统拿一份数据,从 B 系统拿一份数据,从线下拿一份数据,大量的数据分散在各个系统里面,我们称为一个异构的过程。目前我们要做的事情就是说把这些异购的数据变成同购的数据。

在这里可以看到一个异构变同构的过程,就是线下数据表格的一些进来,通过一些前端的解析引擎,再做一些表单的处理,数据流转到我们 Smart 系统里面。在这个里面我们通过一些系统化的解决方案,数据的一些沉淀,给用户提供一个系统级的解决方案。这样将异构表变成了一个同构表,将线下变成了一个线上化的过程,这个就是我们 Smart 系统在未来继续深耕的过程,帮助业务进行一个数字化的转型。

技术难点:多人协同

刚才也讲到一个技术难点,大家可以看一下。我这边做了一次编辑,同步到另外一个用户当中去,这个技术怎么来做,这里也分享下。

灼翎.013.jpeg

技术难点其实是要解决三个问题:

  • 第一个是所有操作可以协同
  • 第二个是操作传输的及时性
  • 第三个是操作数据的一致性

这三个是在菜鸟做文档协同时候,最主要的三个难点,怎么来做的呢?主要的难点,大家可以理解为是一个 op 的概念。什么叫 op ?就是一个操作,比如我删除了一条数据、插入了一条数据、更改了一个文字和更改了一个单元格的类型,这个都称为一个单元格的 op,就是一个表格的 op。怎么来做表格的 op ?比如说有两个用户在同时操作,那一个用户他的 op 就是自己会在本地进行维护一个 op,然后会把所有的用户的 op 也会在本地缓存一下,这样的话他就知道了,我现在操作的 op 在所有的里面是怎么样的一个情况。具体来看,他首先会发起一个操作的一个 op 请求,这个时候我们会通过 socket 的方式,跟后端做一些服务虚拟化操作,还有一种就是我们会广播给我们所有的一些用户。

举个例子,比如说我要插入一个单元格。首先我会发一个请求告诉后端,这个时候服务端会通过一些权限的验证、通过服务端对 op 的一些处理,然后返回一个 Ack。Ack 什么意思?就是你对所做的这些请求,必须是要有一个正确地返回。不像之前有的系统,比如说我做了一个命令,可能后端认为只要返回 200 就够了。这个时候我觉得是不可靠的,必须让后端正确的返回一个 Ack 的概念。这个时候可能 Ack 里面会包含一些时间戳,为什么要时间戳?待会我也会讲一下,会返回一些时间戳,一个正确的结果。有了这个之后,才会认为用户所拿到的这个操作是正确的。当插入成功之后,它会把用户 A 的 op 报入到所有的 op 队列里面。这个时候 B 用户进来之后,比如他也正在刚刚操作,刚才 A 用户是增加一个单元格子,B 用户是要删掉一行。这个时候怎么来做呢?是谁先开始,这个时候刚才我说得时间序列号,即 Ack 里面就是两个时间顺序的一个概念。

首先 A 用户也会广播一份数据给到所有正在这个文档里面的所有用户,所有的用户都监听到之后,他们会进行一个序列跟时间戳的对比。当用户发现他要操作的 Ack 或者是时间戳之后,它的顺序是小于他广播的时间之后,首先我们要做是什么?就把 A 用户的这些 op 在它的那个文档里面进行一次相当于视频播放一样,就先播放一次。把 A 用户的一些对队列都执行一遍,然后他再会通过发请求的方式,将他自己的 op 再通过服务端的一些请求,这个时候收到 Ack。

如果说他接收失败了,他会进行再尝试一次 op 的一个操作。这样的话它会把所有的一些对队列,通过一个队列的方式,通过 Ack 的方式形成一层良好的链接,这个时候大家都能感受到所有的队列就是一致性的,操作数据是一致性的。所有的操作都是可以协同的,这就是我们在做 op 思考到的一些技术难点,大家也可以到我们的培训平台里面来体验一下,其实目前的 op 我们进行了大量一些测试,目前它准确率非常高的,它的传输机制性也非常高,因为我们现在后端的这些性能非常高的。这个大概的给大家演示一下。看一下我们这边的一个多人协同技术,大家可以拿到这个图,后面应该也会开放出来,大家可以再仔细看一下。

产品建设技术架构

第二个刚才讲到的 Smart 系统,或者说整体的一个理念的解读我们怎么来做 Smart 系统。这个系统我们的一个技术架构是什么?首先我们看一下我们的基础。基础里面主要是大家可能会比较关心的是这个背后的引擎到底是什么?

灼翎.014.jpeg

引擎我们现在是有两块:一块是表格引擎,一块是表单引擎。今天就讲一下表格引擎,表格引擎现在用的是外部的一个商业化开源引擎,未来我们是刚才后面待会同学也会在讲,做钉钉和语雀,他们也在做表格的一些底层的引擎建设,未来我们是希望能够借助表格引擎的统一,打造阿里一个底层表格引擎,然后在上面我们来做一些引擎的向上建设,这个里面可以看到我们主要是往上做了一个 Smart 系统的概念。Smart 系统我们是分为三个态:设计态运行态数据态

第一是设计态我们是要解决就是说怎么样来结构化一个数据。

第二是怎么样来做一个运行态的数据。设计态怎么来自动解析字段、表格的解析、模型的生成,这里面我们还做了一些表单引擎的一些融入,比如是否必填、字段类型是什么,都会进行了一些扩展。给别人去使用时,我们会做一些什么事情?比如说模型的渲染、字段的校验和权限的校验,这个里面包含了沟通和写作的两方面的一些能力,帮助业务能够更好的在 Smart 系统里面做数据的流转、沟通和分享。

第三是数据态。有了这些数据之后,我怎么来做数据能力的沉淀。更多的我们是想有了这些数据之后,在我们自己系统里面沉淀一套数据的分析能力,对外做一个数据的集成,对外开放。

Smart 系统向上是指怎么来把这些数据进行一个协同的,比如说做一些权限控制、协同编辑、数据分发、表格协作,还有一些数据的分发技术,刚才说了我把数据分发给 A 同学、B 同学、C 同学是怎么来做分发的,还有一些权限控制。有了这两个系统之后,就称作为我们整个平台的一个技术能力架构,办公协同加上 Smart 系统,刚才又回到上面 10 个字:沟通即协作协作即创作这样一个过程。

最外边是能力集成。刚才说得第三方系统怎么来用我们的一些数据,包括怎么跟钉钉生态怎么做集成的,我们主要是用了钉钉的一些组织架构、权限、钉钉的一些开发生态。未来还要做一些工作,比如说我们财务系统,可以通过一些审批,A 到 B,B 到 C,可以选一些通过自定义工作的方式来更好的服务我们群体,从线下到线上的一个过程,这个是我们产品建设的一个技术架构。

沟通即协作,协作即创作

灼翎.015.jpeg

这样看下来菜鸟的格新主要是解决了三个方面的问题。

  • 代码研发来讲,之前的研发角度是什么?都需要一些代码,或者说技术同学来做一些研发,这个时候会存在一个响应速度慢交付速度成本比较高的一个问题,现在我们是想解决面向业务的无代码产品。近几年包括今年,在阿里无代码的思维,正在火热的进行当中,我们是否也可以通过无代码的这种方案来解决一些业务系统。我们口号是什么?只要会用 Excel 不懂编程也可以快速上手,这是我们一个初心。这边我们想通过工作流、跨单的操作、数据的分析、架构权限来打造这种系统间的一个能力。
  • 工作效率来讲,我们想解决菜鸟的业务系统能够减少大家的一些重复劳动,比如说每天员工把数据导下来,然后再分发出去,这个时候工作内容非常重复,效率非常低,我们想做什么?我们能不能有一个非常好的消息通知或者工作模式,跟钉钉结合起来,我们是简单易学的、具有通知能力的、账号权限是非常安全的、交互是非常简洁的,这是从员工的能效方面来讲。
  • 数据资产方面来讲,之前系统无人维护的状态,就是线下数据导出然后分发了,但是当一个同学可能离职之后怎么办?可能这部分数据就丢失了,或者说过了一年之后,我都忘了有这样一份数据,能不能把这些数据跟系统联合起来,连通我们现在的一些业务系统。这个时候我们要尝试去思考,就是怎么样用一些我们的技术手段来做系统的一个串联。让数据不再成为一个孤岛,这也是格新要解决的三个问题,也是我们菜鸟文档系统 WebExcel 系统要解决三个问题。从代码研发到工作效率,再到数据资产的一个管理这三方面来思考。

六、多种方式对接业务数据分析

灼翎.016.jpeg

下面我还是想讲一下我们数据对接的一个方式,上面几个点主要还是解决了一个办公或者说协同的问题。其实我觉得数据最后的一个对接,我觉得是目前来看最重要的,我们大概再讲一下。第一个就是我们怎么样来将数据服务到业务系统当中去,我们这边提出了三个概念,有三种方式:

  • 第一个就是服务接口的一个对接方式,通过服务接口方式,就我提供了一个接口,提供了 API 能够让数据能够有处理分析数据分享这个方式。
  • 第二个就是有一个第三方系统嵌入的方式,这样我们可以提供一个前后端的一个 SDK 化的概念。前端表格提供一个 SDK 化,后端其实也可以提供一个 SDK 化,这样的话就第三方系统可以很方便的享受到这个业务系统,表格系统或者说是文档系统能够嵌入到第三方系统里去,能够帮助他解决一些业务问题。
  • 第三个我们未来可能直接提供一些数据源对接的一个过程。比如说有同学比如说想做一些私有化部署,这个时候都可以将一些数据直接对接过去,这个是三个方式的一个对接过程,这边也可以看到是怎么来对接的。

七、SMART 系统与业务平台对接

灼翎.017.jpeg

我们目前提供的主要是先是两块:一个是数据服务,一个是 SDK 服务化。目前和未来都是可以慢慢提供给到大家,或者给菜鸟业务系统里面去。第一个解决数据服务,我们提供一些字段模型的映射、配置监听(我数据新增了、删除了,可以把这些能力开放出去)。第二个就是数据服务的一个开放,API SDK 化,刚才也提到了前后端的一个 SDK 化,前端我找一段 SDK 就可以享受到表格,后端我加一个 SDK,我就可以享受增删改查,就把这些能力通过数据服务化、SDK 服务化之后,将格新的 Smart 系统对接到业务平台里面去。从业务角度来讲,怎么将线下的到线上的一个过程,从我们的系统怎么再把数据回馈到业务平台里面去。

八、全面拥抱 WebExcel

灼翎.018.jpeg

讲到这么多,我还是再总结一下或者说未来的一个展望。刚才讲到我们目标是将线下的数据,或者说异构的一些数据,通过格新的平台形成一个同购或者说线上化的一个过程。这个过程当中我们要解决这 5 大类的问题,进行一个沟通能力的升级。

目前来看,我们未来是要全面拥抱 Web Excel,字面来看,我们主要是未来发展方向,可能就是下面这 5 个,大家可以看一下。

  • 钉钉化。钉钉其实也要多端,比如说 PC 端、H5 端当然基本后面都需要去做的,还有一些比如说微应用,创建收集、查看报表,这些能力都会在钉钉化里面进行做一些新型的工作方式打造。我们想打破之前,比如说我们做一个系统需要在浏览器访问的一个瓶颈,钉钉化的一个概念。
  • 服务化。服务化就是怎么样把数据更好地能够融入到第三方系统里面去,一方面是比如说我们系统的一些服务,还有一些比如说我们在做一些小而美的一些东西,比如说我们导入导出对吧?大家也可能再日常的工作当中可能会做很多导入导出的一些概念,能不能通过一些模板画化、服务化,把这些小而美的东西都做起来。
  • 业务化。我们首先最主要的还是要能够对接业务起来,我们做的东西肯定是要服务业务的,所以我们做的东西未来还是想能够通过跟一些业务的关联,比如说一些业务数据的管理,业务数据的对接,数据进来,能不能从业务系统里面去拿数据,把异构变成同购,还有一些业务数据的分析能力,
  • 平台化。刚才我也讲到我们格新,或者说我们希望未来能够朝着一个平台化的方向去走,能够开放给大家让大家能够来享受 WebExcel 除了办公之外,还能做一些业务的尝试。
  • 智能化。其实有很多点,比如说数据的智能解析,未来比如说我们再做一些政企的时候,比如说发票、快速模板化,其实都可以去做,这个时候我们未来还是会朝着很多一些智能化的方向进一步的探索,这是我们未来格新,包括菜鸟这边全面拥抱 WebExcel 的一个思考,会朝着五大化的一个方向进一步来加速 WebExcel 这样的一个发展。

九、结尾

用户体验-好书推荐

最后我来推荐一本书,因为我在负责菜鸟的一些相关业务,还有一些体验应用方向,就是做一些体验的增长。我今天推荐给大家的是增长的一本书,名字叫做《硅谷增长黑客实战笔记》,这本书大家可以去看一下。主要的理由就是我们既然作为前端,其实很多就是站在用户的最前端,这是阿里大佬说的话。什么叫做前端?就是站在用户的最前端,不是说你做的一个系统,做了一个界面,我觉得这个不叫做前端。就是说你是怎么懂用户体验的,推进理由就是说怎么来找出用户增长的北极星指标,怎么来驱动业务跟产品的用户增长?这本书的主要理念就是说做任何事情做用户增长,你要有一个很明确的北极星指标,比如说我拿我们下面我们菜鸟这边其实在做的北极星的就是一个用户增长的系统,我们都会去进行一些拆解,比如说我们菜鸟这边其实有一个驿站,菜鸟驿站大家应该也听说过,今年可能比如说我们扩展驿站的规模是我们的一个北极星指标,怎么来做,怎么来拆解,希望有这些一些体验的理念,怎么来帮助到业务进行快速的增长,所以这本书大家如果有兴趣的话,可以去思考一下看一下,好吧?

灼翎.019.jpeg

感谢

最后这个是个二维码群,然后这个二维码群其实一方面大家如果对格新系统或者说参考业务感兴趣的话,可以申请加入到这个群里面来,然后进行更多的一些学习跟沟通。如果它想加入那个菜鸟加入到我们这边来,其实也可以通过这个群联系到我,然后跟大家作进一步的交流跟沟通,今天我就分享到这里。

灼翎.020.jpeg

QA

请问灼翎:为什么用 websocket 而不用长轮询?那么这二者有什么优缺点?

长轮询跟后端之间可能会做一些更多地交流,做一些长轮询的方案。我们现在其实就是说更多的想通过一些 socket 做轻量的做多人的一个通讯,这个时候其实我们可能更多的跟更多的人协同,这个时候我们通过 socket 方案,肯定是对于后端的长轮询方案来讲,它的性能可能是更优的。所以这个可以大家再去具体的测试数据,就是说这两者肯定也基于后端的一些性能跟一些客户端性能可能会有一些差异,但是总体我们也做了一些技术评估,socket的一个能力是优于长轮询的一些方案的,而且我们现在是想在这边可以看一下所有 op 之间,基于客户端的一个 socket 一个通讯,这个时候它的效率肯定是会比长轮询的效率会更高一点。比如说我做一次广播之后,大家通过 socket 的一个链接之后,它的成本是非常低的。因为在一个中间层的 socket 的服务,只要做一个监厅、一个广播和一个分发就可以了,不像长轮询,因为文档系统里面所有的很多的操作,它是大大规模的、批量化的。大家可以看到,比如说我们这边背后存储的 mySQL,其实里面的存储量是非常大的,这个时候如果说通过一个长轮询来做的话,其实它的一个性能说法是非常大。所以也基于这种思考,我们是想是用一个轻量的 socket 的方案来做,是这样的一个解答。

请问灼翎:socket 会不会对服务端的负担比较重,一些 ip 的长链接通话、长轮询是不是也可以适用?

我们现在做的是不同机器做不同的事情,会保障做一些机器集群,比如说有 4 台机器,2 台机器可能就是专门来做 socket 的通讯的服务,负责这一块的一些能力,还有几台机器都专门做一些存储的,所以说我们首先在这个层面上,我们是做了一些机器的不同职责的一个划分,就集群的能力划分。刚才我也讲到 socket 主要做一些监听跟分发,从架构层面上来讲,它更加清晰。我监听了,然后做一些分发就行。长轮询其实就是说一直就是占在那边。我了解到当然我们也做过一些测试,长轮询性能是 socket 能力是要弱一点的。而且在当我们也测了一下,好像一台普通机器可能就是差不多四五十人在访问的时候可能会存在一些问题了。这个时候我们也是想通过一些 Websocket 轻量的解决方案来做一些沟通。未来其实我们通过更多的技术、更好的一些扩展,其实它的扩展性其实也是比长轮询方案是要更优一点的。

请问灼翎:钉钉文档除了 webSocket 以外,具体还用到了哪些技术栈,以及为什么要使用这些技术栈?

我们从前后端一起来看,后端会做一些 socket 服务器、做一些数据的存储、做一些数据的结构化的一些概念,当然还有一些数据的分析,后端会有数据的通讯、数据的存储还有数据的查询能力,这个是服务端的。前端这块,刚才系统也给大家演示了,第一是钉钉端怎么做数据融合。第二是说做办公协同。还有一些就是一个表格的性能方面,怎么样做一些大规模数据的存储,性能的优化,做一个快照的概念,什么叫快照?就是说把 50 个 op 形成一个快照,比如说我做了 50 步,一个新用户进来之后,不是说我拿了这 50 步重新一步一步去播放,这个时候性能会变的非常差,这个时候我们通过一些快照的方式来沉淀,这个时候用户进来之后快速地形成多人协作之间的一些能力。所以概括下,钉钉这个表格其实也不是说我们自研的,底层是通过一些基础的控件,当然我在集团里面其实也在主导 WebExcel SDK 的一个建设,所以说我们这一块前端的技术方向主要是就是说底层的 SDK 的一个能力,这个时候现在我刚才也说了,我们是借助外部的开源的 SDK,向上进行了一些 SDK 的业务化或者能力化的包装。第二个刚才说的我们 socket 的通讯,怎么来做一些技术的串联,怎么把沟通协同这一块做起来。第三个就是我们表格的一些性能,性能方面是一个研究,怎么把这些能力快速地,能够通过高性能的一些质量,就是线下 Excel 能做的,线上Excel 能不能做、怎么来做,这个也是一个研究方向,这个也是一个技术栈。后端也说了,socket 和 olap 的一些分析,这些能力我们都会进行串联,主要是这些技术能力。


别忘了点下方送稻谷哈