转载

【SDCC讲师专访】专访腾讯徐汉彬:日请求高达3.5亿+平台的架构设计及演变

CSDN年度技术盛宴 “SDCC 2015中国软件开发者嘉年华” 将于2015年11月19-21日在北京召开。CSDN软件研发频道将采访一些与会讲师,谈谈他们将在会上分享的内容。

本期我们采访的讲师是来自腾讯的 徐汉彬 (微博@Hansion徐汉彬),现任SNG增值产品部高级工程师,QQ会员AMS运营平台技术负责人,会员体系合作线技术负责人。曾任职于阿里巴巴、小满科技。

他也是AMS的初始研发,将AMS从日请求量百万级升级至亿级,负责该平台的架构设计和研发建设,在Web系统设计和架构拥有超过5年的经验,2010年加入阿里巴巴,2012年加入腾讯。

【SDCC讲师专访】专访腾讯徐汉彬:日请求高达3.5亿+平台的架构设计及演变

CSDN:请和大家介绍下你和目前所从事的工作。

徐汉彬: 大家好,我目前是腾讯增值产品部的高级工程师(T3),QQ会员活动运营平台(AMS)的技术负责人,主要负责AMS平台的架构设计和研发建设。AMS运营平台是一个主要用于活动运营和推广的Web系统(承载的活动运营业务包括腾讯游戏、QQ会员生活特权、QQ会员体系、QQ钱包等业务),日均CGI请求3.5亿+,每月上线400+活动项目,在应对大规模流量和运营业务研发建设方面,有比较丰富的实践经验和技术沉淀。

CSDN:你是如何走上技术这条路的?

徐汉彬: 2007年读大学时,我用jsp写了一个完整的博客系统,那是我做的第一个技术项目,完成那一刻难以言表的兴奋和激动,我仍然记忆犹新。从那个时候开始,我确信我是个热爱技术的人。我毕业之后加入阿里巴巴,然后顺着技术的路走下去了。回想起来,很多年已经过去了,不过,我对技术的热情并没有改变,坚持学习,努力尝试,希望能够做得更好。

CSDN:你对架构是怎样理解的?

徐汉彬: 我是AMS平台的初始研发人员,AMS从日请求量200-500万的阶段开始,一直增长到日请求达到3.5亿+。在三年多的时间里,我见证了一个Web系统100倍流量和业务规模的增长,同时,对它的架构进行了四次的升级和调整,走过了一段非常难忘的历程,也让我对“架构”有更深的认识和理解,对技术心怀敬畏之心。

不同的架构解决不同场景的问题,尤其对于业务系统的架构来说,解决业务场景的问题,是第一要务。我认为并不存在完美的架构,因为,随着业务的发展和变化,架构也会随着不断变化和调整,以适应新场景和解决新问题。而且,有不少的业务场景,是在架构设计之初是比较难考虑到的。当然,架构的设计也很重要,要尽量保持通用,保持可扩展性,可以在系统后期避免很多问题。因此,需要寻找一个平衡,尽量采用合适的架构来解决当前业务问题,才能达到比较优的投入产出比。

CSDN: 作为QQ会员AMS运营平台技术负责人,能否简要介绍下该平台的架构设计及演变?

徐汉彬: AMS平台的架构设计,主要的目的是为了满足活动运营的高效率开发和在线运营的业务场景。我们通过3年多的努力,从最初1个月上线20-30个活动的规模,做到1个月能够上线430多个活动(平台参与的开发人只有10多人,活动项目上线的主力人员是运营同学),平台架构设计的需要强力支持“开发效率”。另一方面,对于AMS平台的架构对可伸缩和可扩展要求极高,因为不同的活动有不同的后端接口和服务,例如100多款的游戏角色查询,涵盖1000多个后端接口。还有就是性能挑战,活动的特点又很容易带来流量暴发,例如秒杀活动。

AMS平台的架构演变分为三方面:

  1. 解决开发活动的效率问题,通过平台来优化研发流程。 在2012年的时候,我们按照常规模式开发一个活动,大概需要1周的开发时间,如果算入整个研发流程:策划、设计、重构、开发、测试、上线,每一个环节人都是独立不同人完成,整个项目下来2周的项目耗时非常常见。而实际上在今天,我们上线一个活动项目耗时,大部分只需要2-3天。我们通过平台的辅助和建设,解放了重构、开发、测试的人力耗时,最终达到项目流程级别的优化,也正因如此,我们的活动上线能够做到1个月400+个。
  2. 性能压力和可靠性。 3年多的时间里,因为上线活动的数目的暴增,带来流量以100倍速度增长。在这个过程中,最初的“简单架构”逐步演变为一个复杂的集群,我们也设计了诸多的保护策略和强大的监控体系,确保业务在平台上平稳运作。第一阶段,我们系统架构的改进方向是可扩展性,让每个类型的条件和发货服务,能够更自由和动态组合,以支持活动各不相同的需求。第二阶段,是因为前一个阶段支持了活动的动态扩展和组合,以至于活动接入数量和流量大增,逐渐增长到日请求量千万级别。这个阶段,我们架构升级的方向变为性能和可靠性,我们逐步升级原来的MySQL或者自研的存储服务为NoSQL存储(也是自研服务集群),解决单点服务,解决cache场景中的“空节点”等问题。第三个阶段,逐步设计应对秒杀场景的架构,过载保护,流量控制,部分服务异步化,业务降级保护策略等,达到支持日请求6亿+级别的高峰服务支持。
  3. 开放平台和安全保护策略建设。 平台上的每一个活动通常都有自己的接口和服务,这些服务数以百计,而开放平台的建设则是约定通信的方式,让服务能够以填写配置的方式,以更高效的方式完成服务接入。活动中的礼包和奖品,通常价值都比较高,而这些高价值的东西总是吸引更多恶意用户的目光。因此,建设更高效的安全保护系统,也是非常重要的,我们除了采用传统的IP/账号的“黑名单”(通过数据分析等方式跑出来的恶意用户库)拦截策略外,我们通过和手机QQ终端的深度融合,在“黑名单”保护的基础上,增加了新的保护策略。

CSDN:通过您的博客,了解到您比较钟情于的编程语言是PHP?能否结合实践谈谈原因?另外,你还喜欢什么什么其它的语言?

徐汉彬: 其实,我是一个多语言的使用者,我用过的开发语言有PHP、Java、C、JavaScript。不过,因为工作内容的原因,最多的当属PHP,而且,我也算是比较资深的PHP使用者(8年的PHP编程经验)。AMS采用PHP语言来实现,既有历史的原因,也有业务特性所致。活动运营业务,是一个逻辑复杂,需求非常多变,并且需要频繁扩展的业务,而PHP的简单性非常契合这个需求。如果采用C/C++来实现这频繁改动的业务,会增加不少的工作量,开发效率上会打一定的折扣。

PHP是一门比较容易熟练掌握的语言,它屏蔽了内存管理、指针,甚至变量类型等复杂的语言特性,让程序员的精力集中在业务实现上,这个也是它开发效率比较高的原因之一。不过,充分理解这些被PHP语言本身屏蔽的技术点,对于更好地使用PHP也是很有帮助的。一个大的项目是长期运作的,几年的时间里,参与的开发人员总会有变动,而PHP写的代码很容易被后来的新同学轻松接手,接手成本比C/C++实现的服务成本要低一些。而且,我对PHP7的后续发展,也充满期待。

JavaScript也是我很喜欢的语言,我在工作上也时常有使用。

CSDN:您作为技术人员,可否分享下学习新知识或技能的方法?

徐汉彬: 每个人有各自的学习方法,并没有最优的方法,采用适合自己的就好。

我有一个学习的小建议,就是学习新技术的时候,多看看“官方文档”。

多年来的学习和工作经历,让我比较深刻认识到一点: 看“官方文档”非常重要 。我们很多的问题和技术细节,其实,只要我们认真将官方文档过一遍,会发觉大部分的问题和认识模糊的地方都消失了。甚至,你还能发现自己之前通过搜索获得的到一些资料,可能是不准确或者已经过时的。官方文档是真正的好东西,因为编写文档的人群,通常就是这些技术或者软件的开发者,他们才是对这些东西最了解的人,因此,他们写的文档质量是很高的,通常也是最新的。

官方文档的不足的地方,大概是中文版本不多,看起来可能会比较吃力。不过,请相信我,下载一个翻译辅助软件,慢慢看还是可以的。另一方面,就是这些文档编写者,通常是技术界大牛,他们编写文档有时候是基于他们自己的技术认知水平,跳过了很多基础概念,也增加了阅读难度。不过,这个我们也可以通过多查资料,慢慢看来解决,并且通常会带来额外的学习收获。

CSDN:在本次SDCC 2015大会上想分享的话题是?

徐汉彬: 我分享的话题是:QQ会员活动运营平台的架构设计演变,会结合这个平台在过去3年多的时间里,业务规模和流量在百倍的增长过程中,我们遇到的挑战和问题,以及我们解决这个问题的过程。

CSDN:最期待在SDCC 2015大会上看到哪些内容?

徐汉彬: 我希望看见关于Web方面的高并发和大流量方面的技术实践和应用,或者具有创新性质的其他技术内容。

(责编/钱曙光,关注架构和算法领域,寻求报道或者投稿请发邮件qianshg@csdn.net,交流探讨可加微信qshuguang2008,备注姓名+公司+职位) 

值得一提的是,由CSDN举办的 SDCC 2015中国软件开发者嘉年华 将于11月19-21日在北京举行,本次大会涵盖:新型数据库、编程语言、工具与平台、产品与设计、前端开发、算法、微信开发、架构实践、安全等九大分 论坛,届时国外知名讲师将分享所在领域的最佳实践。 【点击这里抢票】

【SDCC讲师专访】专访腾讯徐汉彬:日请求高达3.5亿+平台的架构设计及演变

正文到此结束
Loading...