最新消息: 生命不止,奋斗不息……

微信后台存储架构——许家滔

互联网 admin 1189浏览 0评论

“微信产品在两三年内快速崛起,创造移动互联网增速记录,2012年时任微信技术总监的harvey做过一次公开分享,把微信的成功归结于腾讯式的“三位一体”策略:即产品精准、项目敏捷、技术支撑;并且对微信后台架构是如何支撑产品特性的快速敏捷迭代做了介绍。 对于互联网后台,人们往往聚焦于高可用性,平行扩展等等,但是微信追求极致的用户体验,业务逻辑非常复杂细腻,在高可用的基础上也对强一致性有很高的要求,基础设施如何面对这些挑战呢。 本分享我将会带着大家深入微信架构内部,深度解析存储分布方面的基础设施。”——许家滔

许家滔,微信架构师,2005年加入腾讯,见证QQ邮箱从百万到数亿用户的整个敏捷开发过程以及架构变迁。2011年微信起飞期创立KV存储平台,承载整个微信后台核心数据存储。秉承用户体验做到极致的理念,配合微信后台快速迭代开发的节奏,KV存储提供强一致的数据存储,灵活而丰富的数据接口,多数据中心容灾,具备就近快速访问能力。2013年,推动微信后台异步化,大幅提升后台柔性抗抖能力,三年来伴随微信一起成长。

 

 

微信技术总监周颢:一亿用户背后架构秘密

 

微信架构

协议。手机终端跟后台服务器之间的交互协议,这个协议的设计是整个系统的骨架,在这一点做好设计可以使得系统的复杂度大大降低。容灾。当系统出现了若干服务器或若干支架(宕机的时候),仍然需要让系统尽可能的提供正常的服务。轻重。如何在系统架构中分布功能,在哪一个点实现哪一个功能,代表系统中间的功能配置。监控。为系统提供一个智能仪表盘。

在协议设计上,移动互联网和常规互联网有很大的区别。首先有CMWAP和CMNET的不同,在中国现在有相当多的手机用户使用WMWAP连接,还有就是在线和离线的概念,当QQ下线的时候叫离线,当你登录的时候叫在线。但是在移动互联网这两个概念比较模糊。从微信的设计中,不管在线还是离线系统表现都应该是一致的。还有一个是连接不稳定的问题,由于手机信号强弱的变化,当时信号很好,5秒钟走到信号不好的地区,连接就必须断掉。这个中间带来不稳定的因素为协议设计带来较大困难。此外就是资费敏感的问题,因为移动互联网是按照流量计费的,这个计费会使得在协议设计中如何最小化传输的问题。最后就是高延迟的问题。

对此,业界标准的解决方案:Messaging And Presence Protocol:1)XMPP;2)SIP/SIMPLE。它的优点是简单,大量开源实现。而缺点同样明显:1)流量大:状态初始化;2)消息不可靠。

微信在系统中做了特殊设计,叫SYNC协议,是参考Activesyec来实现的。特点首先是基于状态同步的协议,假定说收发消息本身是状态同步的过程,假定终端和服务器状态已经被迟了,在服务器端收到最新的消息,当客户端、终端向服务器对接的时候,收取消息的过程实际上可以简单的归纳为状态同步的过程,收消息以及收取你好友状态更新都是相同的。在这样的模式之下,我们会也许会把交互的模式统一化,只需要推送一个消息到达的通知就可以了,终端收到这个通知就来做消息的同步。在这样的简化模式之下,安卓和塞班都可以得到统一。这样的系统本身的实现是更为复杂的,但是获得很多额外的好处。

让剩下系统实现的部分更加简单,简化了交互模式,状态同步可以通过状态同步的差值获得最小的数据变更,通过增量的传输得到最小的数据传输量。通过这样的协议设计,微信可以确保消息是稳定到达的,而且是按序到达。引用一句俗话:比它炫的没它简单,比它简单的没它快,没谁比他更快,哪怕在GPRS下,微信也能把进度条轻易推到底。

 

转载请注明:IT世界 » 微信后台存储架构——许家滔

您必须 登录 才能发表评论!