专栏名称: CSDN
CSDN精彩内容每日推荐。我们关注IT产品研发背后的那些人、技术和故事。
目录
51好读  ›  专栏  ›  CSDN

微博近几年的架构演进之路和架构师的技能素养

CSDN  · 公众号  · 科技媒体  · 2017-06-01 10:56

正文

【编者按】 每个人的成长曲线不同,有的人在研究生之时就已有相当知名的产品和框架,从而在接下来的工作中一路顺风顺水,有的人缺需要经历一个又一个的坑才能成长,不管是前者的聪明高效,还是后者的笨鸟先飞,他们都是在迈着脚步不断地向前。不妨,我们停下脚步看下一些同行,以激励自己更好地前行。CSDN与你相约SDCC 2017·深圳站讲师。



2017年6月10-11日,SDCC 2017将在创新之都深圳火热开启。据悉,新浪微博研发中心平台架构技术专家陈波将在 SDCC 2017·深圳站之互联网应用架构实战峰会 带来题为 《支持百亿级访问,微博Feed的缓存架构及其演进之路》 的分享,更多峰会嘉宾和议题请点击 「阅读原文」


以下为正文:



【嘉宾】 陈波,新浪微博研发中心平台架构技术专家。08年加入新浪,参与IM系统的后端研发。09年之后从事新浪微博的系统研发及架构工作,在海量数据存储、峰值访问、规模化缓存服务及开放平台等方面参与技术架构改进,当前主要负责微博平台的基础设施、中间件的研发及架构优化工作,经历新浪微博从起步到成为数亿用户的大型互联网系统的技术演进过程。


CSDN:请先和大家介绍下您和目前所从事的工作,以及关注哪些技术领域?


陈波: 我已经是10+年的码农了,自2008年加入新浪,最初从事新浪IM的后端研发。09年之后开始微博Feed平台系统的的研发及架构工作,深度参与最初若干个版本几乎所有业务的开发和架构改进,13年后开始从事微博平台基础架构相关的研发工作,经历了新浪微博从起步到当前月活数亿用户的大型互联网系统的技术演进过程。当前主要从事微博feed平台的基础设施、缓存中间件的研发及架构优化工作。关注的领域包括应用的服务化,缓存的服务化,分布式存储及缓存,混合云服务,大数据及高可用架构等。


CSDN:你是如何走上技术这条路的?谈谈毕业工作这些年来在工作中的收获和体验。


陈波: 大三的时候,同门师兄开发并上线了5Q校园BT网,下载速度非常快,广受欢迎,很快就把服务从华中科技大学扩展部署到武汉、西安的其他各大高校,然后还被千橡互动收购,当时这件事情挺轰动的,给我的感觉也很震撼,感受到了计算机技术的力量,于是坚定了以后从事技术开发的念头,自学了更多计算机相关知识,考程序员相关的证书,到BBS找开发兼职等。到研究生阶段,在实验室参与了几个软件系统的研发,算是正式踏入了IT行业。


07年毕业,在3G门户工作了一年,之后一直在新浪做研发至今。工作中的最大收获:一是结识了很多志同道合的技术好友;二是重度参与并见证了新浪微博从起步到成为大型互联网系统的技术演进过程,系统演进中经历了很多曲折、困难、不眠之夜,回头看却正好是进步的脚印。


我的工作体验是:把工作当成事业来做,工作是完成,事业是不仅做好,而且要做到更好,把工作做成创业,就会发现研发不仅是编码,还要考虑架构演进、业界动态、技术发展、产品创新、成本控制(存储成本、机器耗电、公有云计费)等,大公司里一样可以“创业”,而且这样的创业成本不高也很有乐趣;另外就是要保持对技术的新鲜感,不断扩展视野。


CSDN:您自08年加入新浪以来,就未曾换过工作,我们知道技术人可以通过跳槽接触更广阔的技术领域和认识更多大牛等,是企业还是团队的文化,是哪些因素吸引您留在新浪坚持近十年的呢?


陈波: 实际上,08年之前我在3G门户工作。前面也讲过,我的工作理念是把工作当做事业、当作创业来做,和一群志同道合的人,创造一个对社会进步、开启民智、大众娱乐有意义的产品,并把他做大做强,这个过程是一个艰难曲折的过程,也是一个充满欢乐和收获的过程。


除此之外,吸引我留在新浪近十年,还有几点:



CSDN: 09年之后您就从事新浪微博的系统研发及架构工作,也经历新浪微博从起步到成为数亿用户的大型互联网系统的技术演进过程,可否分享下您对架构的理解?以及您对于架构师是如何定义的?他的能力,以及职责。


陈波: 我个人对架构的理解是这样的:


从开发人员的角度,架构是系统整体结构的规划设计,也是系统实现的一个草图,主要包含抽象出来的模块、交互协议及设计决策。因为架构的模块、协议、决策是抽象层面的规划,所以具体实现跟业务相关,要考虑业务的需求与特性,还跟业务发展阶段相关,要考虑业务当前的规模及发展阶段,选择合适的实现方案,必要时对当前的架构做适当的修改和演进。所以,架构是设计出来的,更是演进出来的;另外没有最好的架构,只有更适合(当前业务场景和阶段)的架构。


关于架构师如何定义:


架构师负责设计系统整体架构,确定系统实现的行动纲领,使设计的项目尽量高性能、高可用、易实现,并且在上线后运维方便,在新功能加入时扩展性良好。


架构师的能力要求:


1. 较强的代码能力,对日常问题有丰富的阅历及解决之道,设计不是空谈,需要实践,代码能力、解决问题的能力是系统实践的一个副产品;


2. 较好的抽象能力,业务需求在架构师消化后,需要转化为设计蓝图,这中间需要大量的抽象。


3. 良好的沟通和组织能力,架构设计出来,需要组织讨论、频繁沟通,让项目组成员理解架构组成及设计取舍的原因,明白架构设计中的how和why,在遇到疑问、反对、建议时,能进行良好的沟通并有序的推进。


4. 较好的团队协作能力和领导能力,架构师需要得到项目组成员的认可,在关键时刻对技术的选择作出及时、有效的决定,并为决定负责。


架构师的主要职责:


1. 把业务需求转换为实现架构,定义每个组成模块的外部特性,比如它的依赖、性能、异常处理等,并确定模块之间如何通信,最终形成可以指导业务开发的行动图;


2. 组织讨论,组织更多的人来了解、讨论架构,能够让大家理解架构整体方案、模块特性及边界、决策权衡点,进而可以自行进行组件服务的设计及实现;


3. 协助项目经理制定开发计划和控制项目进度;


4. 确定系统的基础架构、实现技术,必要时组织技术调研和攻关。


CSDN:这几年的微博,有哪些技术架构的节点性事件?能否就各阶段从稳定性、可用性、性能、安全、监控等多方面来阐述快的高可用架构。


陈波: 微博技术架构的节点性事件非常多。从feed分发策略上,有最初的推(push)模式,到后来的拉(pull)模式,到目前的hybrid(推拉结合)模式。从feed平台系统实现上,从最初的大一统实现结构,到11年的模块拆分,到13年构建motan RPC框架,进而14年开始服务的拆分、服务化,到目前基于混合云架构的微服务化。还有很多其他重要的节点性事件,如feed content存储及缓存结构从json/xml 改为更高效的protocol Buffer结构;首次在国内大规模使用和推广使用Redis;大数据处理引入Hadoop;系统部署采用混合云架构等等。


初期阶段 ,微博主要采用LAMP架构,feed采用push模式推送,存储放在MySQL,缓存采用memcached。这一阶段,微博用户快速增加,整体服务的稳定性不够,遇到突然事件或核心资源宕机时,可能会出现“暂时无法访问”的页面。此阶段,所有数据和请求在一个大的逻辑IDC,严重的缓存故障可能会导致DB被打满并雪崩,进而导致整个系统异常;因为运维人员不够,开发需要自行部署、切换服务,资源缺乏统一监控,容易出现故障。


中高级阶段 ,后台实现从PHP改为java,微博采用统一的Feed平台架构,对Feed平台业务进行模块化、平台化改造,feed采用推拉结合的hybrid模式;将服务部署到多个物理IDC,构建了统一的降级策略,任何资源的异常和宕机,只影响某个业务的不稳定,而不会影响其他业务;所有的业务、资源进行监控全覆盖,出现宕机、部分服务crash也能及时处理,并不会影响整体服务的可用性。







请到「今天看啥」查看全文