【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

Google Wave 的架构

  • 2009-06-03
  • 本文字数:1866 字

    阅读完需:约 6 分钟

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

首先需要看看 Google Wave 的定义:

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

工具

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 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’s Architecture

2009-06-03 00:546118
用户头像

发布了 151 篇内容, 共 59.8 次阅读, 收获喜欢 18 次。

关注

评论

发布
暂无评论
发现更多内容

GitHub-标星过万!腾讯技术官发布的,腾讯Java社招面试经验

Geek_f90455

Java 程序员 面试 后端

J2EE基础集合框架之Map集合,公司初级程序员Java面试题

JVM调优资料

Java 程序员 面试 后端

java springboot,大专生面试阿里P7居然过了

JVM调优资料

Java 程序员 面试 后端

C#索引器的实现,黑马程序员Java基础入门

Geek_f90455

Java 程序员 面试 后端

ELK性能优化实战总结:我强任我强,美的Java面试题

Geek_f90455

Java 程序员 面试 后端

2021最新版SpringCloud高频面试题分享,【性能优化实战

欢喜学安卓

Java 程序员 面试 后端

20位大厂面试官推荐的《Java面试八股文,高级架构师百度云资源

欢喜学安卓

Java 程序员 面试 后端

404,【大牛系列教学

欢喜学安卓

Java 程序员 面试 后端

C#位运算,面试要掌握这几个关键点

Geek_f90455

Java 程序员 面试 后端

【设计模式】适配器模式

Andy阿辉

C# 后端 设计模式 8月日更

apk瘦身;如何缩小体积呢,Java面试笔试题及答案

欢喜学安卓

Java 程序员 面试 后端

Git-如何优雅地回退代码,字节跳动内部学习资料泄露

Geek_f90455

Java 程序员 面试 后端

JavaScript是解释型语言--V8、JIT,Java重点知识大全

JVM调优资料

Java 程序员 面试 后端

Dagger2源码分析(二,深入理解Java虚拟集百度云

Geek_f90455

Java 程序员 面试 后端

Vue深入学习3—数据响应式原理

魁首

HashMap源码解析,Java黑马程序员资源

Geek_f90455

Java 程序员 面试 后端

ArrayList(Java8,阿里大牛把「服务雪崩」玩到了极致

Geek_f90455

Java 程序员 面试 后端

java 通过 SmbFile 类操作共享文件夹,膜拜大牛

JVM调优资料

Java 程序员 面试 后端

Java 集合容器篇面试题(上,Java中高级程序员进阶

JVM调优资料

Java 程序员 面试 后端

Apache APISIX 2.8 正式发布,带来更多新功能!

API7.ai 技术团队

开源 网关 APISIX

Hystrix-服务容错处理:什么是Hystrix,鲁班学院二期

Geek_f90455

Java 程序员 面试 后端

数据缓存历险记(三)--老头的LRU很带劲

卢卡多多

redis LRU 8月日更

Vue深入学习2—虚拟DOM和Diff算法

魁首

DOM Vue 3 Diff

常见的静态负载均衡算法

Albert

算法 8月日更

保持信心

Nydia

异或位算法的高效玩法

陈皮的JavaLib

Java 面试 算法 8月日更

IDEA的中文注释引起的程序报错!,那些被大厂优化的程序员们

JVM调优资料

Java 程序员 面试 后端

Java 反射 getClass(),最新Java大厂高频面试题

JVM调优资料

Java 程序员 面试 后端

Dubbo如何支持本地调用?InJvm方式解析,阿里官方推荐

Geek_f90455

Java 程序员 面试 后端

Java-进阶:集合框架2,熬夜整理华为最新Java笔试题

JVM调优资料

Java 程序员 面试 后端

Java个人学习之旅(第十天),黑马程序员Java全套视频

JVM调优资料

Java 程序员 面试 后端

Google Wave的架构_架构_Abel Avram_InfoQ精选文章