揭秘Google+技术架构

谷歌的社交网络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

This entry was posted in 未分类. Bookmark the permalink.

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s