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

简介: 云栖社区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时系统服务的稳定。

相关文章
|
10天前
|
运维 监控 安全
运维自动化:提升效率与可靠性的关键技术
在信息技术飞速发展的今天,企业对IT系统的稳定性和高效性要求越来越高。运维自动化作为实现这一目标的重要手段,通过软件工具来模拟、执行和管理IT运维任务,不仅大幅提高了工作效率,还显著增强了系统的可靠性。本文将探讨运维自动化的概念、实施步骤以及面临的挑战,旨在为读者提供一份关于如何有效实施运维自动化的指南。
|
17天前
|
运维 资源调度 监控
提升运维效率的关键技术与实践
在当今快速发展的信息技术时代,运维工作面临着前所未有的挑战和机遇。本文旨在探讨如何通过采用先进的技术和实施最佳实践来提高IT运维的效率和效果。我们将深入分析自动化工具、监控策略、灾难恢复计划以及持续集成/持续部署(CI/CD)等关键领域,展示它们如何协同工作以优化运维流程。此外,文章还将提供一些实际案例研究,帮助读者更好地理解这些概念的应用。无论是对于初创公司还是大型企业,掌握这些技术都将是提升竞争力的关键。
|
20天前
|
运维 Serverless 数据处理
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
58 1
|
26天前
|
监控 Cloud Native 持续交付
云原生架构下微服务的最佳实践与挑战####
【10月更文挑战第20天】 本文深入探讨了云原生架构在现代软件开发中的应用,特别是针对微服务设计模式的最优实践与面临的主要挑战。通过分析容器化、持续集成/持续部署(CI/CD)、服务网格等关键技术,阐述了如何高效构建、部署及运维微服务系统。同时,文章也指出了在云原生转型过程中常见的难题,如服务间的复杂通信、安全性问题以及监控与可观测性的实现,为开发者和企业提供了宝贵的策略指导和解决方案建议。 ####
44 5
|
25天前
|
Kubernetes Cloud Native 持续交付
云原生架构下的微服务设计原则与最佳实践##
在数字化转型的浪潮中,云原生技术以其高效、灵活和可扩展的特性成为企业IT架构转型的首选。本文深入探讨了云原生架构的核心理念,聚焦于微服务设计的关键原则与实施策略,旨在为开发者提供一套系统性的方法论,以应对复杂多变的业务需求和技术挑战。通过分析真实案例,揭示了如何有效利用容器化、持续集成/持续部署(CI/CD)、服务网格等关键技术,构建高性能、易维护的云原生应用。文章还强调了文化与组织变革在云原生转型过程中的重要性,为企业顺利过渡到云原生时代提供了宝贵的见解。 ##
|
24天前
|
监控 安全 Serverless
"揭秘D2终端大会热点技术:Serverless架构最佳实践全解析,让你的开发效率翻倍,迈向技术新高峰!"
【10月更文挑战第23天】D2终端大会汇聚了众多前沿技术,其中Serverless架构备受瞩目。它让开发者无需关注服务器管理,专注于业务逻辑,提高开发效率。本文介绍了选择合适平台、设计合理函数架构、优化性能及安全监控的最佳实践,助力开发者充分挖掘Serverless潜力,推动技术发展。
55 1
|
28天前
|
监控 安全 Java
构建高效后端服务:微服务架构深度解析与最佳实践###
【10月更文挑战第19天】 在数字化转型加速的今天,企业对后端服务的响应速度、可扩展性和灵活性提出了更高要求。本文探讨了微服务架构作为解决方案,通过分析传统单体架构面临的挑战,深入剖析微服务的核心优势、关键组件及设计原则。我们将从实际案例入手,揭示成功实施微服务的策略与常见陷阱,为开发者和企业提供可操作的指导建议。本文目的是帮助读者理解如何利用微服务架构提升后端服务的整体效能,实现业务快速迭代与创新。 ###
61 2
|
13天前
|
机器学习/深度学习 运维 监控
智能运维在现代IT架构中的转型之路####
【10月更文挑战第29天】 本文旨在探讨智能运维(AIOps)如何成为现代IT架构不可或缺的一部分,通过分析其核心价值、关键技术及实践案例,揭示AIOps在提升系统稳定性、优化资源配置及加速故障响应中的关键作用。不同于传统运维模式的被动响应,智能运维强调预测性维护与自动化处理,为企业数字化转型提供强有力的技术支撑。 ####
48 0
|
25天前
|
存储 运维 监控
运维技术深度解析:构建高效、稳定的运维体系
【10月更文挑战第22天】运维技术深度解析:构建高效、稳定的运维体系
119 0
|
25天前
|
人工智能 运维 监控
运维技术深度解析:构建高效、稳定的IT基础设施
【10月更文挑战第22天】运维技术深度解析:构建高效、稳定的IT基础设施
50 0
下一篇
无影云桌面