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

35小吃技术网 推荐阅读 2022年10月24日16时15分43秒 316 0

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

采访者|刘道如

三年前的当红花旦和状元结婚的突发流我没忍住,现在他们离婚的热点微博忍住了。

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

截至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个单位。同时还完成了微博的热点联动机制和服务Mesh的技术框架WeiboMesh的建设,并延伸到各项业务。(延伸阅读:《从观望到落地:新浪微博服务Mesh自研实践全过程》)

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

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

虽然一次成功的架构升级确实可以给企业带来很多好处,但是改造的成本也是不得不提前考虑的。

在刘道儒看来,架构改造不仅消耗了架构师团队的大量时间,还需要业务R&D团队的大量时间和精力来支撑,甚至会耽误业务研发的速度,所以,如果问题不是致命的、通用的,或者可以提高十倍以上的效率,就不要轻易启动大的架构改造项目。

因为架构升级的成本非常巨大,2 ~ 3年只能进行一次大的架构改造。如果选择了一个架构转型,就要放弃所有其他可能的架构转型,这就要求选择的架构转型必须是独特的,技术先进的,具有很强的扇出效应。

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

先进的技术对技术品牌、招聘和R&D的竞争力都是非常宝贵的。扇出效应意味着所选择的方向应该具有指向区域的能力。例如,微博凭借其领先的灵活性,提高了业务治理、在线发布、快速R&D、压力测量和快速故障排除的能力。借助其云原生能力,具备产品化、异地多活、资源云、全租全零售、线下一体化的能力。这些能力交织在一起,形成一个完整的云原生基础架构系统。

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

新浪微博升级(新浪微博注册系统维护中)-第1张图片

2处理“极端热点”

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

微博中有许多不同类型的热点,其中像地震和游戏这样的热点主要冲击提要流,而像明星这样的热点主要冲击热搜和热门微博流。热点不同的接入路径,技术环节略有不同,但一般来说,从网络入口、四七层、接入层到业务层、平台层、资源层,就像现实中的洪峰一样,各个楼层都会逐渐承受洪峰。

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

由于热点有很多种业务环节和技术环节,一两个点堵了就不能高枕无忧。但是所有系统和服务的服务器成本和人力成本都会很高,这也是微博热点面临的挑战。

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

新浪微博升级(新浪微博注册系统维护中)-第2张图片

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

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

自2020年疫情以来,微博出现了很多极端热点,整体流量翻了一倍甚至三倍。热点联动机制保证了热点出现时全站的稳定,服务器单次最大弹性扩展达到了数万。

高可用性保证的3大挑战

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

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

从2010年到2014年,微博中的R&D团队探索并构建了初步的异地多活动技术体系,最终基于多种因素采用了核心业务同城多活动架构。期间团队也走了一些弯路。一开始团队选择了基于MySQL触发器的解决方案,后来遇到了从库延迟、消息到达无序等问题,导致第一个解决方案失败。2012年,指雅虎!s方案,开发了微博多机房消息分发服务wmb,解决了远程消息同步的问题。微博核心系统实现了京广远程主动-主动架构。但2014年,随着微博内业务越来越复杂,异地多活成本巨大,微博核心系统退出广州,回归北京同城双活架构。直到混合云架构出现,才成为同城多活架构。

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

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

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

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

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

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

云诞生浪潮下对技术选择的4点思考

目前整个基础设施和云原生系统蓬勃发展,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等技术方向。