当前位置:首页 > 热点资讯 > 正文

新浪微博升级(新浪微博注册系统维护中)

新浪微博升级(新浪微博注册系统维护中)

采访者|刘道如

三年前,当红花旦和柳丁·萧声突然结婚,我没有幸免,但现在微博上出现了他们离婚的热点。

"一个可靠的架构从来不是设计出来的,而是逐渐发展的."这句话可以用来形容微博的系统架构的转变过程。

截至2020年10月,微博月活跃用户达到5.23亿。微博作为当今中国社交媒体的领导品牌,一直是传播社会热点事件的最重要平台。而热点事件往往具有不可预测性和突发性,可能会导致10分钟内流量翻倍甚至更大的增长。如何快速应对突发流量的冲击,保证在线服务的稳定性,是一个很大的挑战。

在过去的几年里,微博遭遇了无数次突发热点事件引发的流量冲击,虽然一开始确实暴露了很多稳定性问题,导致大量网友调侃“微博挂了吗”、“微博又挂了吗”、“微博这次没挂”等等。但与此同时,微博中的R&D团队也在不断升级,微博背后的技术方案和系统架构经过多次调整和优化也越来越稳定。自2020年爆发以来,微博出现过多次极端热点事件,整体流量翻了一倍甚至三倍,都顺利挺了过来。在本文中,我们有幸采访了微博中多次后端架构升级的见证者和负责人——新浪微博R&D中心R&D总监刘道如,请他和我们谈谈团队是如何围绕微博中“极端热点”这一独特场景,展开架构改造和高可用保障的。

1微博后端架构十年三次升级。

刘道儒2010年加入微博,2011年开始参与并负责微博核心系统的改造和优化。据他介绍,过去十年,微博经历了三次大的后端架构升级。

微博当前整体架构图

分布式平台架构(2011 -2014):为了应对快速增长的流量,R&D团队将微博的核心系统从PHP架构改造为平台Java架构,搭建了分布式缓存、千亿级存储、异地多活动、监控和服务等基础设施。转型后,微博拥有支持数亿DAU和数千亿存储的高可用架构。

弹性云架构(2015-2019):2015年以来,微博流量持续增加且热点频繁,流量随时可能成倍增长。为了以可控的成本应对热点,微博R&D团队构建了基于Docker和公有云的弹性混合云架构。从核心业务开始,用了三四年时间,逐渐扩散到微博所有业务,最后各大业务都具备了快速扩张的能力。最新的弹性扩张速度是10分钟5000个单位。同时还完成了微博热点联动机制和服务网状技术架构WeiboMesh的建设,并扩展到所有业务。(延伸阅读:《从观望到落地:新浪微博服务Mesh自研实践全过程》)

智能云原生架构(2020年至今):随着灵活性的提升,微博中单个操作和DBA所能保障的服务和资源规模大幅增加,微博中DBA人均管理超过10000个资源端口。然而,随着体系结构的日益复杂,如何提供通用的、高质量的保障服务成为新的挑战。R&D团队开始对数据库、缓存、消息队列等进行智能灵活的调度改造。,完成了基于阿里云和神龙服务器的整租零售方案,可以降低50%的单位成本。同时,运维团队和DBA团队也在升级为DevOps团队。由于云原生架构改造建设工作量巨大,相关工作仍在进行中。

除了微博的核心系统,R&D团队还与搜索、热门微博、广告、直播、视频等业务合作,对混合云和云的原生架构进行升级改造,大幅提升了微博站的热点和稳定保障能力。

虽然成功的架构升级改造确实能给企业带来巨大的收益,但是改造的成本也是不得不提前考虑的。

在刘道儒看来,架构转型不仅消耗了架构师团队大量的时间,还需要业务R&D团队抽出大量的时间和精力来支撑,甚至会拖慢业务R&D速度。所以,如果问题不具有致命性和普遍性,或者能带来十倍以上的效率提升,就不要轻易启动大的架构改造项目。

由于架构升级成本巨大,2 ~ 3年只能进行一次大的架构改造。选择一个架构转换,必须放弃其他所有可能的架构转换,这就要求选择的架构转换必须是唯一的、技术先进的、具有很强的扇出效应。

独特性意味着结构转换所要解决的问题应该具有很强的差异性。如果唯一性很差,那么大家都做的很快,结构转型的成果就会大打折扣。以微博为例,在选择架构转型方向时,R&D团队会主要围绕微博中“极端热点”这一独特场景,包括Web自动化的扩展和收缩,数据库自动化的扩展和收缩,都是围绕这一场景展开的,这样就容易在这一场景中保持领先。

先进的技术对技术品牌、 *** 和R&D的竞争力都有很大的价值。扇出效应是指所选方向由点到面的能力。比如微博在业务治理、在线发布、快速研发、压力测试、快速故障排除等方面的能力都有所提升。借助云原生能力,具备产品化、异地多活动、资源上云、整租零售、线下融合等能力。这些能力交织在一起,形成一个完整的云原生基础架构系统。

刘道儒补充道,为了进一步摊销结构转型的高成本,结构转型选择的方向应该是产品化的,一般支持公司的各种业务场景,只对某个业务场景有价值的方向不适合规模化运营。中的业务失败和问题的记录可以作为参考,看看所选架构转型方向在过去一年中对失败和问题的覆盖程度。先选择高频的方向,不仅能解决很多具体问题,还能得到业务的大力支持。

2应对“极端热点”

部署混合云架构,使业务拥有灵活的扩容能力,是微博在面对热点事件频发带来的突发流量时,解决内部资源冗余不足的有力武器。

微博里有很多不同类型的热点。其中地震、游戏等热点主要打Feed流,明星等热点主要打热搜、热门微博流。热点不同的接入路径对应的技术环节略有不同,但一般来说,从 *** 入口、四七层、接入层到业务层、平台层、资源层,就像现实中的洪峰一样,各层都会逐渐承担流量高峰。

区别在于不同层的扩容难度,维持高冗余的成本,更大峰值等等。通常 *** 入口、四七层和接入层更容易扩展,维持高冗余的成本更低。在平台层,由于服务器规模庞大,维护高冗余的成本非常高。热搜、热门微博等服务的流量上升非常快,3分钟可以提升5 ~ 10倍的流量。资源层的缓慢扩展需要持续保持高冗余。另外,由于需要一层一层的处理热点,一个业务一个业务的处理,所以还没有管理好的系统或者业务,如果遇到热点,压力会更大。

因为热点有很多业务环节和技术环节,不可能一两点就高枕无忧。但是所有系统和服务覆盖的服务器成本和改造的人力成本会很高,这也是微博热点面临的挑战。

刘道儒表示,经过多年的实践和研发,最有效的手段是对热点频繁的业务和链路进行热点联动覆盖,通过动态扩容收缩,量化流量,保持业务冗余,进而对热点进行实时判断和联动扩容。具体来说,会有一个服务实时检测服务流量的变化。如果流量快速增加并达到预定的之一级热度阈值,检测服务将向外界广播之一级热度消息。不同的服务和模块会根据不同的热度做出不同的反应。例如,报警和通知模块将通过IVR *** 、电子邮件、内部网IM消息等通知学生开发、操作和维护。各业务系统收到消息后,会按照预定的方案进行扩容降级。

同时,在日常工作中,所有业务都支持动态扩容和收缩,这样即使一个业务之一次遇到热点,也能快速扩容和恢复服务。对于 *** 和专线等公共基础设施,基础设施团队将持续监控并保持足够的冗余。

相比五年前,微博现在已经建立了完整的热点响应机制,包括热度等级、强度等级、热点预测和高冗余维护、热点联动扩展、热点联动动员等。可在2分钟内发现热点并进行系统降级、扩容等联动响应,具备7*24小时10分钟5000台弹 *** 器的极速弹性扩容能力。核心业务全部纳入热点联动范围,建立了覆盖四七年的体系。

自2020年爆发以来,微博出现了多次极端热点事件,整体流量翻了一倍甚至三倍。热点联动机制很好的保证了热点发生时全站的稳定性,单次更大弹性扩容服务器达到了上万台。

3高可用性保证的挑战

除了极具挑战性的热点场景,微博的系统架构的可靠性保障还面临着来自其他方面的挑战,其中之一就是异地多活动。

早在十年前,微博就开始尝试异地部署,这项工作已经进行了十年。

从2010年到2014年,微博中的R&D团队探索并构建了初步的异地多活动技术体系,最终基于多种因素采用了核心业务同城多活动的框架。期间团队也走了一些弯路。起初,团队选择了基于MySQL触发器的解决方案,但后来,由于来自库的延迟和消息到达的无序,该解决方案之一次失败。2012年,参考雅虎的方案,开发了微博中的多机房消息分发服务wmb,解决了异地消息同步的问题。微博核心系统实现了京广异地双活动架构。但在2014年,随着微博内的业务越来越复杂,异地多活动的共同成本已经非常巨大,微博的核心系统从广州撤离,回到北京的双活动架构。后来有了混合云架构,变成了同城多活动架构。

从2015年开始,微博中的R&D团队逐步构建了灵活混合云系统、WeiboMesh系统、统一运维平台、数据备份恢复平台、指标治理和AIOps系统、资源云系统、整租零售技术等一系列前端技术体系,并逐步统一了基础架构体系。如今,该团队正在推广领先的技术和架构能力,如5分钟内8万台服务器(Pod)的灵活性、10分钟内数据传输和恢复的能力、跨语言智能服务的管理、数据库的灵活扩展和收缩,以使业务能够支持低感知甚至无感知的异地多活动。到2020年底,随着微博云原生技术和资源云技术的发展,微博终于具备了在全站低成本做异地多活动的技术能力。

在刘道儒看来,技术发展到今天,异地居住不仅仅是技术问题,更是成本和容灾的平衡问题。异地居住不仅会大大增加数据库和服务器的成本,还会增加异地居住对新业务研发、旧业务改造和基础设施建设的支持。如果是异地多活,不仅核心业务要做异地多活,所有相关业务都要做异地多活,相关成本会增加一个数量级。

因为需要提高异地数据库等资源的冗余度和成本,微博中的R&D团队目前正在着力打造1万台服务器1小时异地快速迁移重建的能力(延伸阅读:《业内空前:10分钟部署10万量级资源,1小时完成微博后端异地重建》)。

除了基础设施部门主导的整体架构和基础设施建设,微博的故障响应分级机制、服务SLA保障、重大活动应急演练、重大活动值班和保障等制度和机制也对保障微博整体系统的高可用发挥着重要作用。

此外,微博作为最早的移动互联网产品之一,已经经历了十几年的迭代,业务线众多,新老服务多样。如何维护和改造很多旧的服务和资源也是一个很大的挑战。为此,微博R&D团队搭建了WeiboMesh架构和统一运维平台,实现新旧架构的跨语言标准化治理,并成立了专门的架构改造团队,帮助业务团队对架构进行改造升级。

虽然微博的核心系统使用Java语言,但近年来,随着广告和推荐系统的快速发展,C++语言架构在微博中的应用场景越来越多。由于建设时间短,R&D团队分散,C++技术体系的完备性很难满足业务需求。从2020年下半年开始,以推荐引擎升级重构为契机,微博组建了C++架构师团队,完善了C++系统的开发、架构、运维。在今年5月即将举行的QCon北京站上,本次重构项目负责人马琦将与大家分享相关经验。

云计算浪潮下的技术选择思考

目前整个基础设施和云原生系统都在蓬勃发展,AIOps、边缘计算、容器排列、云原生数据库等方向发展迅速。

随着监控系统的完善和大数据技术的发展,AIOps可以使基础设施治理更加智能,大大提高问题发现、故障定位、流量预测和服务治理的效率。除了提供静态服务,边缘计算已经具备功能性动态服务能力,即将具备通用动态服务能力。届时,结合5G技术,用户可以在毫秒级获得强大的动态计算能力。容器排列可以对资源进行全局错峰调度,统一调度、合理分配Web、数据库、大数据等资源,大大提高资源的整体利用率。基于云的数据库可以不断提高数据库的自动化管理程度,自动数据库子数据库子表、自动扩容收缩、自动迁移等能力即将成为现实。

在刘道儒看来,IT领域层出不穷的新技术和解决方案是值得R&D人员感激的。在这些新技术和解决方案的背后,是充满活力、未得到满足和富有挑战性的需求。他们也代表了一波新技术,其中将有巨大的红利,不仅包括效率或成本的大幅优化,还有利于R&D人员的提升和R&D团队的发展。

但他也表示,如果某项技术连续几年火热,说明这项技术还在发展,还不够成熟,还有一些关键难点没有攻克,不能广泛采用。这个时候更适合技术实力强、场景特别适合的公司和团队先行一步,在一些场景落地,率先抢红利。

任何新的先进技术在带来便利和好处的同时,也会带来新的挑战。只有及时的组织和系统调整,才能更快的控制新技术系统。

从积极的方面来看,云原生浪潮大大加快了基础设施系统的自动化和智能化发展。业务的传统人工运维大幅减少,基础设施的研发和支持大幅增加,这就要求基础设施团队在人员构成上不断进化,需要更多综合能力强的架构师,需要更多DevOps。云原生的浪潮将大大提高系统稳定性和治理水平,并大大节省成本,工程师和架构师的工作将获得更多的认可。

但同时,在云原生技术完全成熟之前,云原生架构的风险比以前更大。以前很多系统都是独立的,很多操作都是手动的,很多问题很少同时出现。云原生后,由于大量中心节点、中心系统和大量自动化工作的存在,普通问题会少很多,但全局失效的风险会大很多。针对新的可靠性挑战,刘道儒建议,围绕中心系统等建立完善的监控和故障恢复系统。,所有自动化操作都要人工干预。同时,应定期进行备灾演习。

在技术路线和架构的选择上,刘道儒始终认为适合自己业务的技术才是好技术,R&D团队要根据业务的特点选择适合自己的技术路线,而不是盲目跟风。

以微博为例。2015年,微博做Docker调度技术的评选时,因为当时的运维同学更熟悉和习惯用IP来管理和调度资源,所以放弃了Swarm调度方案,没有采用当时已经流行的K8s调度方案。直到2020年微博需要对高分配服务器进行资源切割和调度,才转向K8s方案,帮助团队快速实现Docker在微博的落地和广泛使用。2016年,微博更多的是一种“保守”和“务实”的架构思路。当时,该团队规模小,R&D能力弱,系统中存在许多缺陷和挑战。保守主义是一种很好的防御策略。今天,微博已经有了规模庞大的架构师团队,系统和技术体系也比较健全,因此成为抢占新技术制高点的重点。目前微博中的R&D团队会更多的跟踪和预测新的技术方向,匹配各业务线的需求和问题,从而不断修正R&D计划。尽早放弃没有前途或者微博没有竞争力的方向,而是更积极地投资和尝试新的战略方向,用先进的技术为业务发展赋能。

随着混合云和云原生技术的快速发展,刘道儒对后端架构技术的选择也有了一些新的思考。首先要看云厂商擅长什么。如果云解决方案的成本和效率远远超过自研,直接使用云厂商的解决方案是不错的选择。如果担心被云厂商绑死,可以同时选择两家或两家以上云厂商的服务。

其次,要根据自己公司的业务特点,选择合适的技术路线和架构策略。这种技术路线必须与我们独特的业务场景相匹配,才能具有竞争力。那么,要想在相关点继续施工,该自研的一定要自研,在使用新技术的时候一定不能保守,因为只有新技术才能有大的红利。

最后,对于云厂商没有覆盖的,不在自己技术路线上的场景和需求,可以直接借鉴业界成熟的解决方案。适可而止,就要专注于自己的技术路线。当然,如果你的公司财大气粗,基础设施投资特别丰富,可以选择多条技术路线同时建设,但不建议全面铺开。毕竟再多的投入也比不上头部云厂商的投入和规模。

面试官介绍:

R&D新浪微博R&D中心主任刘道儒

刘道儒是微博基础设施部门的负责人,曾在搜狗等公司工作过。负责微博云平台、运维、DBA等基础平台和关系流、推荐引擎等后端系统的研发,以及微博中的热点响应和全站的稳定性保障。擅长云原生架构和大规模分布式系统架构及高可用性保障,在云原生、混合云、大规模数据的存储、处理、访问及高可用性保障方面有丰富的实践经验。作为项目负责人,领导了微博多机房部署、微博A/B测试平台、微博混合云、客户端Feed性能优化等多个项目。,并主要参与了微博平台改造、平台稳定性改造等项目,目前专注于云原生、混合云、大数据架构、AIOps等技术方向。