微博红包技术最佳实践:架构及运维

简介: 云栖社区2017在线技术峰会红包技术分会上,来自微博红包团队的技术负责人柯立志分享了微博红包背后的技术实践。他介绍了红包的业务场景,从红包塞钱、抽奖、拆包模型、数据一致性、预热、异步化等方面介绍了红包系统的设计思路。此外,他对红包的系统保障和性能优化也进行了分享。

微博红包在春节也是一个比较热门的词汇,经常出现在各种事件流之中,但是微博红包面临的场景比较特殊,比如面临亿级用户的大规模场景,它背后的技术架构和技术结构是怎么样的呢?来自微博红包团队的技术负责人柯立志在云栖社区2017在线技术峰会红包技术分会现场分享了微博红包背后的技术实践。

视频回顾:点击进入

pdf下载:点击进入

红包业务场景

今年的场景新增了传送门和粉丝红包。传送门主要是通过用户下拉feed流获得红包,可以连续抢,得到奖品。粉丝红包有口令红包和普通红包,红包的业务规模如下图所示。

61f12037a54b273a119626cc45aafc4450a43c11 

红包面临的挑战包括:单个红包数额大;亿级别用户参与,覆盖全微博用户;红包种类多,业务复杂;整点准时抢,高并发访问量、瞬间峰值高;互动时间短,同步更新红包状态;多机房数据一致性保证。

红包系统设计

c0982430f4330af778de47ce8b3eb516aa5a60fb 

红包系统的整体架构包括应用层、服务层、资源层。应用层主要是用户的入口,任何一个用户进来之后都需要对其状态进行验证,所以需要进行用户状态验证。服务层包括各个服务模块,资源层则用到了数据库、Redis、MC、消息队列等。

红包塞钱

红包塞钱实现过程是:用户通过向客户端塞钱进红包,然后使用微博支付,经过队列后进行拆包服务,其他用户可以进红包进行抽取。在用户进红包之前,微博已经在队列中做了一些拆包的服务。

红包抽奖

99c3193729db73a7c9a641c2ad98494f39b997b5 

如上图所示,其中更新的红包状态包括用户的状态和红包剩余金额等。在红包的抽取过程中大量使用了异步处理,这样保证了用户前端的可用性。

红包拆包模型

01cee0b4c2d9d9ba6bbec0710b167b11bfda5c05 

微博拆包的金额在0.5-200元之间。最初采用了通用模型设计,保证了大额的、100左右的金额,导致了0.5的比较多。之后,采用了基于正态分布的模型,对红包进行插值使得整个红包的金额分配更趋于合理。处理大额拆包时,做到了10万以下金额秒级可以拆。对于10万以上金额先拆分成10万以下金额再进行拆分。

特定场景选定合适实现方式

3cffc84a2d27f26a295fe5a0b16c589c95fc7275 

最初的实现是通过Nginx后端PHP服务以及存储资源实现的。经过调研后,采用了Nginx的高并发可用性,基于lua脚本语言实现应用层的服务。这样能够让单台服务器的并发数量能有数量级的提升。其缺点是对于快速业务耗费的人力成本和调试成本更高。

数据一致性保证

在红包分发期间,微博用到的设备包括微博自有机房、阿里云包月机房、阿里云动态扩容(根据峰值实时动态扩容)。同时,各个机房之间MC的缓存需要同步,并且同步机制需要达到毫秒级才能保证所有用户看到的红包状态均一致。缓存资源的实现通过消息队列实现,若消息队列发现缓存积压的资源比较多,可以通过实时的删写来减少(前提是三个部署都存在,如果动态扩容则删写,如果动态扩容收容则不删写)。阿里云的机器都是实时分配的,所以我们需要有快速响应的机制来更快的进行扩容和对MC缓存资源的写。

预热

c69b8cf10d6b7a1f11eb2fc5d85f2a0945723cd2 

春晚当天,微博红包当晚从20点开始每个整点的推送。为了减少对应接口的用户信息,提前预热了一批MAU用户,减少可能由于峰值带来用户服务系统压力,在当天预热了MAU用户数据,这样做可以保证在每个整点时间到来之前的红包数据为热数据。

异步化

8ac3843698d1271ead069bb03a5560d82fac6fdf 

异步化就是用消息队列来处理一些类似于用户时间比较长或者需要消耗大量资源的处理。比如抽奖,在抽奖的核心逻辑里,运营可配置、用户信息、红包状态的判断均用到了异步化来验证当前的用户是否中现金、卡券或者其他奖品。用户中奖后,奖品将进入队列,进行现金兑账、现金进钱包、发私信,这样就给前端用户的抽奖节省了大量的时间,使得前端的接口响应时间非常快。

红包保障体系

监控

dd4d290e03d464ab2c0ff77a83b8ea91003d4c7b 

系统保障的前提是监控,监控主要通过五个层面来进行的。网络监控主要是监控专线带宽,微博在春节期间大量使用阿里云的机器,对于专线的监控是有必要的。服务监控主要是自有服务的监控,类似监控feed接口、客户端拆和抽、传送门等服务的响应时间以及服务接口返回的状态。设备监控主要是前端机、服务器的监控,包括CPU、内存、网卡等的监控。资源监控涉及到缓存资源、存储资源,资源也是通过网络协议进行调用的,所以网络层面的问题会导致资源的可用性降低、响应时间变长。所以在应用层或者底层架构上都对资源所涉及的相关端口做了一些监控,比如每一次连接的响应时间、操作的响应时间、每一种响应时间的占比。接口监控主要依赖于其他接口,类似于用户信息的接口、微博钱包支付接口、卡券接口。

预案和干预手段

预案主要做了两类,一类是能够快速扩容,因为在每一个推广的时间段都申请了部分冗余的服务器,如果负载异常则会实时部署上去;一类是快速切换,通过切层的切换快速应对突发情况。

服务降级主要在服务异常或者负载过高时对非核心链路进行降级。

系统性能优化

性能

2738a1fa607b8e6012b90a77c185affd8d6cfd16 

红包是由各个模块组成的,所以要对各个模块进行性能检测。性能检测的前提是制定性能指标,指标主要通过响应时间、接口输出大小制定。然后进行模块性能压测,分析模块具体消耗(时间及输出大小),根据具体点进行模块优化,直到模块性能达到标准才停止循环。

容量评估

7308dfc4ca19b75f4f0a42943aa5e287b3357e0f 

根据目前应用场景用户的DAU和MAU去预估在某个时间点最大的QPS。根据最大的QPS以及单机所承载的QPS预估应用服务器的数量。根据接口依赖程度、接口访问量占比预估每个接口输出的带宽,预算出整体的带宽占用来进行带宽方面的扩容以及预演。资源占用的评估主要根据最大的QPS以及后端端口资源需要使用的数量来评估,保证在出现预估范围内QPS时系统服务的稳定。

相关文章
|
1月前
|
Kubernetes Cloud Native 微服务
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
|
26天前
|
监控 安全 API
使用PaliGemma2构建多模态目标检测系统:从架构设计到性能优化的技术实践指南
本文详细介绍了PaliGemma2模型的微调流程及其在目标检测任务中的应用。PaliGemma2通过整合SigLIP-So400m视觉编码器与Gemma 2系列语言模型,实现了多模态数据的高效处理。文章涵盖了开发环境构建、数据集预处理、模型初始化与配置、数据加载系统实现、模型微调、推理与评估系统以及性能分析与优化策略等内容。特别强调了计算资源优化、训练过程监控和自动化优化流程的重要性,为机器学习工程师和研究人员提供了系统化的技术方案。
146 77
使用PaliGemma2构建多模态目标检测系统:从架构设计到性能优化的技术实践指南
|
5天前
|
容灾 网络协议 数据库
云卓越架构:云上网络稳定性建设和应用稳定性治理最佳实践
本文介绍了云上网络稳定性体系建设的关键内容,包括面向失败的架构设计、可观测性与应急恢复、客户案例及阿里巴巴的核心电商架构演进。首先强调了网络稳定性的挑战及其应对策略,如责任共担模型和冗余设计。接着详细探讨了多可用区部署、弹性架构规划及跨地域容灾设计的最佳实践,特别是阿里云的产品和技术如何助力实现高可用性和快速故障恢复。最后通过具体案例展示了秒级故障转移的效果,以及同城多活架构下的实际应用。这些措施共同确保了业务在面对网络故障时的持续稳定运行。
|
5天前
|
弹性计算 运维 网络协议
卓越效能,极简运维,Serverless高可用架构
本文介绍了Serverless高可用架构方案,当企业面对日益增长的用户访问量和复杂的业务需求时如何实现更高的灵活性、更低的成本和更强的稳定性。
|
8天前
|
运维 监控 BI
卓越架构之FinOps最佳实践
本文探讨了云成本管理的趋势和FinOps的最佳实践。随着云计算的普及,传统的IT管理模式已无法适应按需使用和按量付费的新模式,导致企业面临资源浪费和成本失控的风险。FinOps作为一种管理理念,强调运维、财务和技术团队的合作,通过数据驱动和业务价值驱动的方式优化云成本。文章介绍了FinOps的核心挑战、最佳实践及技术工具的应用,帮助企业有效管理和优化云成本,实现降本增效。
|
12天前
|
Kubernetes 安全 数据安全/隐私保护
云卓越架构:容器安全最佳实践
本次分享由阿里云智能集团解决方案架构师张玉峰主讲,主题为“云卓越架构:容器安全最佳实践”。内容涵盖容器安全的挑战、云原生容器安全架构及典型场景。首先分析了容器安全面临的问题,如镜像漏洞和权限管理。接着介绍了容器安全架构的五个维度:身份权限管理、配置安全检查、运行时防护、镜像安全检测及发布的安全管控。最后通过具体场景展示了容器身份与权限管理、密钥管理、运行时防入侵等最佳实践,强调了安全左移的重要性,确保从开发到运行的全生命周期安全覆盖。
|
28天前
|
弹性计算 运维 Serverless
卓越效能,极简运维,体验Serverless高可用架构,完成任务可领取转轮日历!
卓越效能,极简运维,体验Serverless高可用架构,完成任务可领取转轮日历!
|
1月前
|
运维 Cloud Native 持续交付
云原生技术深度探索:重塑现代IT架构的无形之力####
本文深入剖析了云原生技术的核心概念、关键技术组件及其对现代IT架构变革的深远影响。通过实例解析,揭示云原生如何促进企业实现敏捷开发、弹性伸缩与成本优化,为数字化转型提供强有力的技术支撑。不同于传统综述,本摘要直接聚焦于云原生技术的价值本质,旨在为读者构建一个宏观且具体的技术蓝图。 ####
|
2月前
|
消息中间件 监控 安全
构建高效微服务架构:最佳实践与挑战
在现代软件开发中,微服务架构因其高度的可扩展性、灵活性和敏捷性而受到青睐。本文深入探讨了构建高效微服务架构的关键策略,包括服务的划分、通信机制、数据管理、部署与监控等方面的最佳实践。同时,文章也分析了在实施过程中可能遇到的挑战,如服务间的依赖管理、数据一致性问题、安全考量及性能优化等,并提出了相应的解决方案。通过实际案例分析,本文旨在为开发者提供一套实用的指南,帮助他们在构建微服务系统时能够有效规避风险,提升系统的健壮性和用户体验。
|
2月前
|
Cloud Native 持续交付 云计算
云原生技术在现代IT架构中的转型力量####
本文深入剖析了云原生技术的精髓,探讨其在现代IT架构转型中的关键作用与实践路径。通过具体案例分析,展示了云原生如何赋能企业实现更高效的资源利用、更快的迭代速度以及更强的系统稳定性,为读者提供了一套可借鉴的实施框架与策略。 ####
28 0

热门文章

最新文章