您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

解密微博红包:架构、防刷、监控和资源调度

时间:2019-12-31 10:33:04  来源:  作者:

编者按与传统意义上的红包相比,近两年火起来的“红包”,似乎才是如今春节的一大重头戏。历经上千年时代传承与变迁,春节发红包早已成为历史沉淀的文化习俗,融入了民族的血脉。按照各家公布的数据,除夕全天微信用户红包总发送量达到10.1亿次,摇一摇互动量达到110亿次,红包峰值发送量为8.1亿次/分钟。春晚直播期间讨论春晚的微博达到5191万条,网友互动量达到1.15亿,网友抢微博红包的总次数超过8亿次。

为此,InfoQ策划了“春节红包”系列文章,以期为读者剖析各大平台的红包活动背后的技术细节。本文为微博篇。

随着互联网的发展,打破了以往传统的发红包,带给了红包全新的玩法。微博红包已经成为用户给粉丝拜年的一种途径,土豪版成为土豪刷存在感的方式。每年的红包大战都是用户的现金盛宴,对于整个系统却是残酷的考验。

微博有8亿注册用户,单日活跃用户数1.34亿的社交平台。红包在微博平台上运行,针对所有的微博用户开放,微博所有用户都可参与红包活动。微博红包有如下特点:

1.红包价值高、种类多、覆盖用户广,亿级别用户参与。

2.半点准时开抢,高并发访问、瞬间峰值高,每分钟带来上亿次的抢红包峰值。

3.请求快速响应,更新亿级用户中奖状态及红包状态。

4.单个红包数额大。

春晚当天红包总价值超过10亿,有1.34亿用户参与,产生了8亿多次的抢红包行为,其中并发量为平时峰值的10倍左右。在服务器数量一定的情况下,如何构建高并发操作、瞬间峰值高的稳定服务?对于团队和架构师都是一个极大的挑战。这时候系统的架构尤为重要!

红包架构

微博红包支持每秒几十万次的操作,应对突发性的热点事件,快速响应,高内聚低耦合的服务成了架构首先要考虑的因素。

解密微博红包:架构、防刷、监控和资源调度

 

微博是社交型应用,红包在用户数据、关系、抢红包等结构上存在着各种各样复杂的依赖,这些依赖相比其它应用来说,调用频率更高,性能要求也更高。

如上图所示,有多个应用模块接入红包的服务层,服务层由多个节点组成,每个节点对应相应的功能并且相对独立。代码模块的使用和组织上相对独立,保证主功能的快速和稳定,将附属的新功能分离在独立模块中。其中红色虚线框内为核心的功能模块,是重点需要保护的功能。

微博红包提供获取红包属性(红包金额、红包设置、红包状态、获取抽取结果列表、拆包,抽奖等)接口。服务层调用红包SDK相应的API,会根据应用层逻辑需求提供数据和定制化得数据,完成前端完成交互,达到应用层需要展现的效果。

防刷策略

微博红包有别于微信用户发出的红包,微信用户发出的红包是针对自己所认识的朋友或者已存在于微信群的用户;微博红包是针对于微博所有用户的红包,通过分析参与红包的用户数据每年都会产生一些囤积大量账号准备在春晚大发横财的公司和个人。如何防止微博红包被自动注册或者通过转卖账号来领取红包?这成为面对我们需要解决的一大问题。

解密微博红包:架构、防刷、监控和资源调度

 

微博通过基于用户在微博上的行为分析,通过登录,发微博,身份验证等方面来进行分析。主要有:

1.用户注册:通过用户行为分析来识别机器注册的用户,则注册环节进行拦截。

2.用户登录:分析用户登录的行为,通过验证码,身份验证以及手机号验证等措施来提高机器自动登录的门槛。

3.账号质量:通过实名认证,微博的动态等方面来计算出用户的质量。

4.参与红包:红包战场一贯是刷奖账号的获利主战场, 通过用户平时在微博的行为、属性以及实时的登录状态和常用设备来进行分析,判断是否是正常账号来确定是否可以中奖。

完善的监控

红包系统是一个大而规则复杂的系统,系统越大,依赖的资源越多,也就越容易出现各种各样的问题。为了给提供稳定运行的服务,必须要能时刻知晓各个资源当前的运行状态。并且在系统出现异常之前或者出现异常的时候,对问题进行排查和定位。

解密微博红包:架构、防刷、监控和资源调度

 


解密微博红包:架构、防刷、监控和资源调度

 


解密微博红包:架构、防刷、监控和资源调度

 


解密微博红包:架构、防刷、监控和资源调度

 

如上图所示,完善的监控系统,为微博红包顺利度过春晚提供了很好的保障。主要涉及的监控如下:

1、应用层接口响应时间监控

通过实时的分析access log日志,以HTTP code和响应时间维度实时统计出接口的状态和性能,根据占比来查看接口的健康程度。

2、服务层各模块性能监控

在模块中记录开始时间和结束时间,每次处理完计算出模块的耗时,通过这种方式很好的发现各个模块是否正常。

3、网络层监控

微博红包的出口网络是一个单独的App池,出口带宽使用到80%的时候网络稳定性就可能受到影响。通过计算后端服务器输出计算出带宽,以便能够做到及时响应扩容。

4、资源层的监控

对各种资源的监控,比如redisMySQL、MC等资源的连接时间、状态和操作的实时统计分析,快速定位是否存在资源瓶颈。

5、服务器的性能监控

通过运维监控系统,对服务器的CPU、内存使用情况,做到了能够观察每台服务器具体的运行情况。

6、系统错误日志的监控

系统错误监控包括服务器负载,服务进程状态,资源连接,网络连接出现的问题,实时通过手机,邮件和私信知道。为快速响应创造了条件。

弹性资源管理和调度

1、故障的秒级切换

微博红包服务部署在了三个机房(包括云服务),任何一个机房如果出现网络或者其它不可预测的问题可以在几秒钟之内将服务切换到其它机房。

2、资源的相互独立

资源的相互独立,让资源的可扩展性变得容易。而且使得各个服务之间交叉影响达到了最小。

3、引入阿里云做为第三机房,使用Docker快速部署服务

红包的核心服务主要分布在 2 个机房,两者互相做为灾难备份用途,为应对超预期的峰值,引入阿里云做为第三机房。使用定制化的红包Docker快速部署服务来实现弹性调度架构。通过Docker自动化操作大规模集群,进行弹性调度资源的任务,实现快速部署服务来应付超预期的峰值。

系统的挑战和性能优化

为了保证用户体验,微博红包需要解决以下几个问题:

1.系统性能的可靠性

2.关键节点的可用性

3.如何应对突发热点

4.业务频繁迭代的处理

1、系统架构的升级

模块的独立化,避免出现模块间的相互影响。

Nginx+lua的使用,使得服务器的QPS有了数量级的提升,同时服务器集群做到了秒级重启。

2、修枝剪页

减少对于系统外部的依赖,梳理完整的调用关系图。非核心功能使用异步调用,合并相关的调用,去掉重复的调用。保证核心调用逻辑,避免非核心业务影响核心业务。

3、多级缓存

服务端本地缓存,使用nginx本身缓存和服务器的L0缓存,来提升模块的响应速度,做到了90%以上核心接口的响应时间在50ms以内,减少了进程等待时间,提升了服务器的处理速度。

一年一度的各大平台抢红包还会延续下去,这是一个斗智斗勇的过程,在服务器有限的情况下每一次与峰值的对抗都是对技术一次极大的挑战,每次挑战都是带来技术上的成长和收获。



Tags:微博红包   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
编者按与传统意义上的红包相比,近两年火起来的“红包”,似乎才是如今春节的一大重头戏。历经上千年时代传承与变迁,春节发红包早已成为历史沉淀的文化习俗,融入了民族的血脉。按...【详细内容】
2019-12-31  Tags: 微博红包  点击:(117)  评论:(0)  加入收藏
▌简易百科推荐
为了构建高并发、高可用的系统架构,压测、容量预估必不可少,在发现系统瓶颈后,需要有针对性地扩容、优化。结合楼主的经验和知识,本文做一个简单的总结,欢迎探讨。1、QPS保障目标...【详细内容】
2021-12-27  大数据架构师    Tags:架构   点击:(5)  评论:(0)  加入收藏
前言 单片机开发中,我们往往首先接触裸机系统,然后到RTOS,那么它们的软件架构是什么?这是我们开发人员必须认真考虑的问题。在实际项目中,首先选择软件架构是非常重要的,接下来我...【详细内容】
2021-12-23  正点原子原子哥    Tags:架构   点击:(7)  评论:(0)  加入收藏
现有数据架构难以支撑现代化应用的实现。 随着云计算产业的快速崛起,带动着各行各业开始自己的基于云的业务创新和信息架构现代化,云计算的可靠性、灵活性、按需计费的高性价...【详细内容】
2021-12-22    CSDN  Tags:数据架构   点击:(10)  评论:(0)  加入收藏
▶ 企业级项目结构封装释义 如果你刚毕业,作为Java新手程序员进入一家企业,拿到代码之后,你有什么感觉呢?如果你没有听过多模块、分布式这类的概念,那么多半会傻眼。为什么一个项...【详细内容】
2021-12-20  蜗牛学苑    Tags:微服务   点击:(9)  评论:(0)  加入收藏
我是一名程序员关注我们吧,我们会多多分享技术和资源。进来的朋友,可以多了解下青锋的产品,已开源多个产品的架构版本。Thymeleaf版(开源)1、采用技术: springboot、layui、Thymel...【详细内容】
2021-12-14  青锋爱编程    Tags:后台架构   点击:(21)  评论:(0)  加入收藏
在了解连接池之前,我们需要对长、短链接建立初步认识。我们都知道,网络通信大部分都是基于TCP/IP协议,数据传输之前,双方通过“三次握手”建立连接,当数据传输完成之后,又通过“四次挥手”释放连接,以下是“三次握手”与“四...【详细内容】
2021-12-14  架构即人生    Tags:连接池   点击:(17)  评论:(0)  加入收藏
随着移动互联网技术的快速发展,在新业务、新领域、新场景的驱动下,基于传统大型机的服务部署方式,不仅难以适应快速增长的业务需求,而且持续耗费高昂的成本,从而使得各大生产厂商...【详细内容】
2021-12-08  架构驿站    Tags:分布式系统   点击:(23)  评论:(0)  加入收藏
本系列为 Netty 学习笔记,本篇介绍总结Java NIO 网络编程。Netty 作为一个异步的、事件驱动的网络应用程序框架,也是基于NIO的客户、服务器端的编程框架。其对 Java NIO 底层...【详细内容】
2021-12-07  大数据架构师    Tags:Netty   点击:(17)  评论:(0)  加入收藏
前面谈过很多关于数字化转型,云原生,微服务方面的文章。虽然自己一直做大集团的SOA集成平台咨询规划和建设项目,但是当前传统企业数字化转型,国产化和自主可控,云原生,微服务是不...【详细内容】
2021-12-06  人月聊IT    Tags:架构   点击:(23)  评论:(0)  加入收藏
微服务看似是完美的解决方案。从理论上来说,微服务提高了开发速度,而且还可以单独扩展应用的某个部分。但实际上,微服务带有一定的隐形成本。我认为,没有亲自动手构建微服务的经历,就无法真正了解其复杂性。...【详细内容】
2021-11-26  GreekDataGuy  CSDN  Tags:单体应用   点击:(35)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条