揭秘 Google+ 技术架构

  • Abel Avram
  • 孙爱鸿

2011 年 7 月 21 日

话题:JavaJavaScriptGoogle架构语言 & 开发

谷歌的社交网络 Google Plus 主要基于 Java 和 JavaScript 语言,而其视频会议框架 Hangouts 则采用了 C/S 方式。

期待已久的 Google 社交网络Google Plus或者 Google+ 终于公之于众了,它采用邀请的形式向部分用户开放。该项目开始于 2010 年初,在其底层技术鲜为人知的情形下,秘密完成了开发。Joseph Smarr,Google+ 技术主管、Plaxo 的前 CTO,在 AnyAsk 的访谈中非针对性地透露了一些网络的技术细节。我们联系了 Smarr 试图获取有关 Google+ 架构的更多细节,但被拒绝了,他承诺更多信息会在不久的将来公布的。

按照 Smarr 的说法,Google+ 的服务端使用了 Java 语言和Guice,而客户端基于开源的跨浏览器框架Closure,采用了大量的 JavaScript。Closure 是一组 JavaScript 工具,方便开发人员编写富 Web 应用程序。Google 的 Gmail、Maps 和 Docs 均使用了该框架。有趣的是 Google 并没有采用 Wave 和 AdWords 中使用的GWT,GWT 主要面向 Java 开发者而非 JavaScript 开发者的。为了“确保即使在 AJAX 应用中,URL 也很美观(对老版本浏览器,回退 Hash-Fragment)”,添加了HTML5 的历史 API,另外,Closure 模板也常常在服务端呈现,从而做到“在 JavaScript 代码加载前显示页面,然后 JavaScript 找到正确的 DOM 节点并挂接事件处理器等,使其响应”。Smarr 进一步解释到:

Closure 模板最酷的事情是它既可以编译成 Java 也可以编译成 JavaScript。所以,我们使用 Java 服务端把模板转换成 HTML,但是也可以在客户端使用 JavaScript 动态地显示。例如,如果你直接输入详细资料页面的 URL,我们将在服务端呈现它,但是如果你进入页面流中,然后导航到某人的详细资料页面,我们将使用同一模板在客户端使用 AJAX 技术来显示。

后端采用的是 BigTable 和 Colossus,它是 Google 的实时搜索所使用的文件系统。

Smarr 承认 Google+ 团队借鉴了 Google 和其他公司的很多东西,他们是“站在巨人的肩膀上,充分学习了我们以前的和业界其他社交产品”,这里指的应该就是 Facebook 和 Twitter,而且本产品在很多方面看上去和 Facebook 很像。

Google+ Hangouts是在线云视频会议平台,基于 XMPP、Jingle、RTP、ICE、STUN、SRTP 等,它与采用 P2P 网络的 Skype 方法完全不同。Hangouts 是 C/S 及云技术,主要依赖于 Google 的基础设施。目前还没有数据表明 Hangouts 会消耗多少资源,但估计应该会很多。所有这些都是为了提供低迟延(小于 100ms)的流畅的群组沟通。

Hangouts 要求与 Google Talk 相同的插件,不过,工程师们正在努力迁移到WebRTC上。WebRTC 是视频通信的 JavaScript 框架,由 Google、Mozilla 和 Opera 提供支持的开源产品。当 WebRTC 集成到 Chrome 后,在 Firefox、Opera 或 Chrome 中运行 Hangouts 时就无需下载插件了。到时,Hangouts 将使用集成在 WebRTC 中的 VP8 编码,而不是现在使用的 H.264。

Christian Oestlien,Google+ 的项目经理,透露 Google 为企业用户提供了特别的特性,如分析及和其他企业账户的集成等,但他没有透露详细信息。他让企业先不要创建 Google+ 账户,暂且等待功能开放,否则也会被删除的。

查看英文原文Google+ Technological Details 

JavaJavaScriptGoogle架构语言 & 开发