编者按:每个人的成长曲线不同,有的人在研究生之时就已有相当知名的产品和框架,从而在接下来的工作中一路顺风顺水,有的人缺需要经历一个又一个的坑才能成长,不管是前者的聪明高效,还是后者的笨鸟先飞,他们都是在迈着脚步不断地向前。不妨,我们停下脚步看下一些同行,以激励自己更好地前行。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年之后您就从事新浪微博的系统研发及架构工作,也经历新浪微博从起步到成为数亿用户的大型互联网系统的技术演进过程,可否分享下您对架构的理解?以及您对于架构师是如何定义的?他的能力,以及职责。
陈波:我个人对架构的理解是这样的:
从开发人员的角度,架构是系统整体结构的规划设计,也是系统实现的一个草图,主要包含抽象出来的模块、交互协议及设计决策。因为架构的模块、协议、决策是抽象层面的规划,所以具体实现跟业务相关,要考虑业务的需求与特性,还跟业务发展阶段相关,要考虑业务当前的规模及发展阶段,选择合适的实现方案,必要时对当前的架构做适当的修改和演进。所以,架构是设计出来的,更是演进出来的;另外没有最好的架构,只有更适合(当前业务场景和阶段)的架构。
关于架构师如何定义:
架构师负责设计系统整体架构,确定系统实现的行动纲领,使设计的项目尽量高性能、高可用、易实现,并且在上线后运维方便,在新功能加入时扩展性良好。
架构师的能力要求:
架构师的主要职责
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也能及时处理,并不会影响整体服务的可用性。
当前阶段,微博进一步进行服务化、云化的改进。当前微博对外主要以移动客户端、web主站、开放平台三种方式提供服务,并通过平台接入层访问微博Feed平台体系。其中平台服务层把各种业务进行模块化拆分,把诸如feed计算、微博内容、关系、用户、评论、短链、私信等分解为独立的服务模块,对每个模块实现服务化架构,通过标准化协议进行统一访问。中间层通过各种服务组件来构建统一的标准化服务体系,如motan提供统一的rpc远程访问,configService提供统一的服务发布、订阅,cacheService提供通用的缓存访问,SLA体系、Trace体系、TouchStore体系提供系统通用的健康监测、跟踪、测试及分析等。存储层主要通过Mysql、HBase、Redis、分布式文件等对业务数据提供落地存储服务。整体服务的稳定性、安全性大幅提升。
CSDN:可否请您简单介绍一下微博整体架构的一些架构特点?
陈波:目前微博架构特点:
CSDN:您作为技术人员,可否分享下学习新知识或技能的方法?
陈波: 我个人的看法是,希望对一些人有所帮助和借鉴:
CSDN:您最期待在SDCC 2017·深圳站大会上看到哪些内容?
陈波:大数据场景下,对业界具体的应用问题,各厂的解决之术及解决之道。
SDCC 2017•深圳站将于2017年6月10-11日登陆深圳,拥有互联网应用架构实战峰会、大数据技术实战峰会两大峰会,秉承干货实料的内容原则,汇聚业内顶尖架构师和数据技术专家,共话架构、大数据热点话题,深度解析技术难点和落地思考,带你高台起步,走近技术圈的浮生万象。八折抢票通道倒计时最后4天,票务火爆,欲购从速,详情点击注册参会。