设为首页收藏本站客户端下载

老榕树社区

 找回密码
 立即注册
社区推荐
 
任务统计:
发布数/完成数/奖励数:
0/0/0
承接数/奖励数/收入数:
0/0/0

3495

主题

4230

帖子

2997

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2997
扫一扫,手机访问本帖
跳转到指定楼层
楼主
发表于 2015-3-4 09:04:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
【如内容违法或虚假,请联系上述邮件删除】

微信腾讯战略级产品,发明移动互联网增速记载,10个月5000万手机用户,433天之内完成用户数从零到一亿的增长过程,千万级用户同时在线,摇一摇每天次数过亿...在技术架构上,微信是如何做到的?日前,在腾讯大讲堂在中山大学校园宣讲活动上,腾讯广研助理总经理、微信技术总监周颢在两小时的演讲中揭开了微信背后的秘密。

  周颢,2001年毕业于华南理工大学,计算机专业硕士。2005年参与腾讯广州研发部,历任QQ邮箱架构师,广研技术总监,T4技术专家,微信中心助理总经理。

  周颢把微信的胜利归结于腾讯式的"三位一体"战略:即产品精准、项目矫捷、技术支撑。微信的胜利是在三个方面的分离比较好,能够超出绝大多数同行或对手,使得微信走到比较前的位置。所谓产品精准,浅显的讲就是在恰当的机遇做了恰当的事,推出了重量级功用,在适合的时间以最契合大家需求的方式推进来。他以为在整个微信的胜利中,产品精准占了很大一部分权重。

  矫捷是一种态度矫捷就是试错

  微信研发团队里鼓舞一种试错的信仰:他们深信,在互联网开发里,假如能够有一个团队在更短的时间内尝试了更多机遇(并能改进过来),就能有(更多的)机遇胜出。矫捷是一种态度,在软件开发过程中,项目管理者都会十分忌讳"变卦"这个词,但是在微信的项目运作中是不能够的。由于微信必需求容忍说哪怕在发布前的十分钟,也要允许他变卦。这是十分大的应战,由于突破了一切传统项目开发的常识。一切人都说不可能做到的,但微信做到了。研发团队所做的一切都是要给产品决策者有最大的自由度,而这个决策正是微信能够胜出的关键。

  海量系统上的矫捷无异于悬崖边的跳舞

  矫捷有很多困境,假如做一个单机版程序,是能够做到很矫捷的,但是腾讯正在运作的是一个海量系统,有千万级用户同时在线,在一个单独的功用上每天有百亿级的访问,同时还要保证99.95%的可用性。在海量系统上应对项目开发会有很严谨的规范,都说要尽可能少的变化,由于90%-95%的错误都是在变卦中产生的,假如系统不时不变卦会取得十分高的稳定度,但是微信就是要在悬崖边跳舞。微信的研发团队要做一些事情,让矫捷开发变得更简单。

  如何做到这一切?周颢以为,首先,必需树立起一种狂热的技术信心,就是一定是能够做到的。然后,需求用一些稳定的技术(理念)来支撑,例如大系统小做、让一切可扩展、必需有基础组件、轻松上线(灰度、灰度、再灰度;精密监控;疾速响应) ...等等来支撑。

  四大法器:大系统小做、让一切可扩展、要有基础组件、轻松上线

  大系统小做:当设计庞大系统的时分,应该尽量分割成更小的颗粒,使得项目之间的影响是最小的。一切可扩展:在高稳定度、高性能的系统中间,为了稳定性能把它设计成不变化的系统,但为了支持矫捷需求让一切的东西都要变得能够扩展。必需树立基础组件:要处置复杂问题的时分,需求将已有的阅历固化下来,固化下来的东西会成为系统中的一部分。轻松上线:当做了变化并把它从开发环境中部署到现有的运营环境中去,在这个过程中,"灰度"这个词十分关键,就是在黑和白之间的选择,必需求变成一种小范围尝试,再逐步扩展到海量过程中的一个问题。

  大系统小做仅仅把模块变得更为明晰,这在海量系统设计开发中是不够的,还需求在物理环境上中止分别部署,呈现问题的时分能够快速发现,并且在最快的状况下处置掉。

  大系统小做混搭方式

  将不同的应用逻辑物理分割独立出来,用户注册登录、LBS逻辑、摇一摇逻辑、漂流瓶逻辑、音讯逻辑独立开来。把关键的逻辑混搭在一同,当一切的逻辑部署在同一个效劳器上,的确也会带来很大矫捷上的益处,由于不需求额外的思索部署和监控的问题。在整个微信的逻辑中,可能往常曾经有上百种不同的逻辑,由于会在逻辑的分割上拆分红8-10种做分别部署。

  一切可扩展网络协议可扩展、数据存储可扩展

  扩展的关键点有两块。一个是网络协议需求扩展,当要升级一个新功用的时分,会有一些比较大的艰难,所以一切协议设计都比较向前兼容,但是向前兼容还是不够的,由于网络协议设计自身有十分多的功用也会有比较大的字段,相关的代码可能会有数千行,这一块不能经过手写方式完成。能够经过XML描画,再经过工具自动生成一切的代码,这是微信取得快速开发的一个重要的点。

  另外一块就是在数据存储方面是必需可扩展的。在2005年绝大多数海量系统的设计都是采用固定字段的存储,但是在现代系统中会认识到这个问题,会采用KV或者TLV的方式,微信也做了不同的设计。

  把复杂逻辑都固化下来,成为基础软件。在微信后台会有几种不同的基础组件。大致包括:

  SvrkitClient/Server自动代码生成框架:10分钟搭建内部效劳器LogicServer逻辑容器:随时添加新逻辑OssAgent监控/统计框架:所见即所得的监控报表存储组件屏蔽容灾/扩容等复杂问题

  灰度、灰度、再灰度

  在变卦后的部署方式上,微信在一些规则会限定不能一次把一切的逻辑变卦上去,每一次变卦一小点察看到每一个环节没有问题的时分,才干规划到全网上去。微信后台每一天能够支撑超越20个后台变卦,在业界来说,通常做到5个曾经是比较快了,但是微信能够做到快4倍。

  腾讯内部的上线系统

  而所谓灰度发布,是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,让一部用户继续用A,一部分用户开端用B,假如用户对B没有什么反对意见,那么逐步扩展范围,把一切用户都迁移到B上面来。灰度发布能够保证整体系统的稳定,在初始灰度的时分就能够发现、调整问题,以保证其影响度。(在腾讯,灰度发布是最常采用的发布方式之一)

  孙子兵法:古之所谓善战者,胜于易胜者也

  常识上,处置一个复杂问题的时分,会用高明的技巧处置复杂的问题,这个不是微信团队的目的,他们追求的要做到让一切问题很自然和简单的方式处置掉。在周颢看来,微信架构的技术复杂点在四个要点:协议、容灾、轻重、监控。



(关注老榕树网络旗下“网络思维”微信公众号:wlsw360 (每天都有好文章)

 

                                                   本帖如有虚假或违法,请联系邮箱删除,本社区删贴不收任何费用,欢迎举报。老榕树社区属老榕树网络旗下网站,旨在为老榕树用户提供创业咨询、网站建设技术交流、源码下载、提供各种实用工具。如有部分帖子涉及违法、虚假,请你第一时间与社区联系,把需要删除的社区链接提供给我们,我们核实之后,第一时间删除。邮箱:125175998@qq.com

相关帖子

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 关于我们| 企业文化| 备案编号:滇ICP备13002355号
  • Copyright 2013 最新最精彩-社区论坛 版权所有 All Rights Reserved
快速回复 返回顶部 返回列表