写点什么

协同编辑:Google Wave 架构分析

作者:zhoulujun
  • 2023-04-09
    广东
  • 本文字数:2913 字

    阅读完需:约 10 分钟

Google Wave 的设计初衷是让人们互相发送信息,一起编辑文档,但用户对此感到困惑,很快就以失败告终。Google Wave 持续了大约一年时间,于 2010 年 8 月被关闭。

Wave“领先于时代”,而谷歌并没有有效地解释该服务的真正好处,但是谷歌高级副总裁乌尔斯·霍泽尔(Urs Holzle)说:“代码的核心部分以及驱动 Wave 创新的协议都已经开源,所以用户和合作伙伴可以继续我们的创新。很多东西是值得我们借鉴的。

google wave 是啥?

有人说,google wave 就是 email、IM、twitter、sns 和 wiki 的结合体,我实在没有办法想象也看不出来是怎么个结合法。类似的说法很难有什么说服力。

google 官方的说法是:Google Wave is an online tool for real-time communication and collaboration

google wave 的特征分析

  • online,你不 online 的时候,这个东西是不会 wave 的,不在线的时候 google wave 和 email、im 比起来是没有任何优势的。

  • tool,工具到底怎么用、到底有什么用,关键还是看人,在工具和人的互动当中,工具慢慢就被定性了,所以目前 wave 这个万金油究竟能干什么,要给个明确的回答,还要等。

  • real-time communication,时事通讯,这是在算不上什么新鲜事,实时通讯工具太多了

  • collaboration,协同,这才是最重点的。wave 和 email、IM、twitter 等服务比较而言,优势就只有一个:协同。

Google Wave 的定义:Google Wave 是基于托管型 XML 文档(称为 Wave)的新型沟通、协作平台,支持并发修改和低延迟更新

Google Wave 是一个工具 ,也是一个平台 、还是一个协议 。其架构的核心是操作转换 (Operational Transformation,OT),这是一个支持并发控制的理论型框架。

It turns out that implementing this kind of real-time collaboration is far from trivial. The most common solution responds to the name Operational Transformation (usually abbreviated OT). It originated from a research paper published in 1989 but got more recently popularized by Google Wave. Today, it powers many collaborative editors such as

These are only a few examples from a growing number of applications with realtime collaboration. I expect this number to rise even faster now that Google has published the Drive Realtime API, which is based on OT and let’s third-party apps use the same collaboration as Google Docs.

http://operational-transformation.github.io/what-is-ot.html

工具

Google Wave 是一个兼备电子邮件、即时通讯、协作文档共享和编辑的工具。在 Chrome、Firefox、Safari 等浏览器里运行的客户端中(包括移动平 台 iPhone 和 Android),Wave 使用 JavaScript 和 HTML5,Wave 在服务器端则结合使用 Java 和 Python,但服务器端可 以用用户希望的任何方式来实现。该工具用GWT 构建,并使用Google Gears 处理 HTML 5 中尚未包含的拖拽。该工具需要专门的服务器来处理并发通讯,大型团队尤其需要这样的服务器。服务器可以放在企业外的云里,也可以放置在私有企业内部,或者只是放在某人的家里。

Google Wave 上周在 Google I/O 大会期间进行了展示 。

平台

Google Wave 带有一个公共的API ,Google 公司承诺在产品正式上线之前会开源整个平台。作为平台,Wave 允许开发人员修改基础代码、使用Gadgets 和Robots 对其进行扩展。Gadgets 是运行在 Wave 中的小程序,而 Robots 则是“自动的 Wave 参与者”。Wave 还可以嵌到博客等其它媒体当中。

协议

google 在 waveprotocol.org 发布了 Federation 协议和 OT 协议,OT 协议解决协同问题,包括 wave、wavelet、blip 等。

数据模型

Google Wave数据模型 的主要元素有:

  • Wave ——每个 Wave 都有一个全局唯一的 Wave ID,并包含一组 Wavelet。

  • Wavelet ——Wavelet 在其所属的 Wave 中有一个唯一 ID,Wavelet 由一个参与者列表和一组文档组成。Wavelet 是并发控制/操作转换请求的实体。

  • 参与者 ——参与者由 Wave 地址确定,Wave 地址是文本字符串,格式与电子邮件地址相同(local-part@domain)。参与者可以是用户,也可以是组,或者是 Robot。每个参与者在参与者列表中最多可出现一次。

  • 文档 ——文档在其所属的 Wave 中有一个唯一 ID,由一个 XML 文档和一组“分离”注解组成。分离注解指向 XML 文档,不依赖于 XML 文档的结构。它们用来表示文本格式、拼写建议和超链接。文档在 Wavelet 中构成一棵树。

  • Wave 视图 ——Wave 视图是特定用户在一个 Wave 中访问的 Wavelet 子集。用户只要是 Wavelet 的参与者,或者是参与者组的成员(组可以嵌套),都可以访问 Wavelet。

操作转换

这是 Wave 技术的重要组成部分 。Google Wave 广泛使用了在服务器端执行的操作转换 (OT)。 当用户编辑多个用户同时打开的协作文档时,客户端程序会提供一个 Optimistic UI,立即显示用户输入的内容,同时将编辑操作发送给服务器,希望该操作能被服务器接收。客户端等待服务器评估该操作,在服务器应答之前会缓存其它所有的 操作。服务器应答之后,所有被缓存的操作会从客户端批量发送到服务器。服务器考虑从其它客户端接收到的操作,相应地转换操作,并将该转换通知给所有的客户 端,客户端相应地更新其 UI。操作被发送至服务器,并由特性规则根据特性传播到各个客户端,除非该操作是批量操作。服务器是文档及其版本的管理者,其中版 本被认为是“正确的”版本。最后,各个客户端会根据从服务器接收到的最终版本进行更新,该最终版本可能是很多操作转换的结果。还有很多针对通讯失败或服务 器/客户端崩溃而提供的恢复措施。为了迅速地识别误传,在客户端和服务器间交换的所有 XML 文档只带一个总和校验码。

客户端-服务器协议

操作。 Wave 的基本组成部分 Wavelet 经过一系列被称为操作转换的改变。这些改变需要传播并应用到每个客户端,否则客户端就不能同步。

操作队列。 所有对 Wavelet 的操作都按照严格的顺序发送。服务器对一个操作做出响应之后,下一个操作才会被发送。服务器基于版本号给操作排序。每个客户端都要按照合适的顺序应用操作。

打开 Wavelet。 要开始与 Wavelet 通讯,客户端要给服务器发送一个 Open 请求,里面包含 Wave ID 和 Wavelet ID。服务器响应是一个快照——Wavelet 的序列化状态,或者是相应版本的历史散列。

服务器到客户端的通讯。 服务器发送到客户端的内容是 Delta(一或多个操作的序列)、版本号和历史散列之一。

客户端到服务器的通讯。 客户端发送的内容是 Delta 或版本号。

恢复。 通讯失败时,客户端通过发送先前从服务器接收到的散列历史重新打开 Servlet。

联盟

Google Wave Federation协议 允许多个实体(Wave 提供者)彼此分享 Waves。Wave 提供者可以是在某人家里运行的服务器,为单个用户或所有家庭成员提供 Wave,也可以是一家公司、或一个 ISP,Google 只是另一个 Wave 提供者。

有用的链接:Google Wave 、Google Wave API 、Wave协议 。


参考文章:

Google Wave 的架构 https://www.infoq.cn/article/2009/06/wave/,查看英文原文: Google Wave’s Architecture


转载本站文章《协同编辑:Google Wave架构分析》,请注明出处:https://www.zhoulujun.cn/html/webfront/engineer/Architecture/8563.html

用户头像

zhoulujun

关注

还未添加个人签名 2021-06-25 加入

15年草根站长,尽在:zhoulujun.cn

评论

发布
暂无评论
协同编辑:Google Wave架构分析_Google Wave_zhoulujun_InfoQ写作社区