默认
打赏 发表评论 1
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
社交软件红包技术解密(八):全面解密微博红包技术方案
阅读(82264) | 评论(1 收藏1 淘帖1 1
微信扫一扫关注!

本文引用自InfoQ,原题《解密微博红包:架构、防刷、监控和资源调度》,链接:infoq.cn/article/2016-hongbao-weibo,收录时有改动。


1、引言


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

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

微博红包有如下特点:

  • 1)红包价值高、种类多、覆盖用户广,亿级别用户参与;
  • 2)半点准时开抢,高并发访问、瞬间峰值高,每分钟带来上亿次的抢红包峰值;
  • 3)请求快速响应,更新亿级用户中奖状态及红包状态;
  • 4)单个红包数额大。

春晚当天红包总价值超过 10 亿,有 1.34 亿用户参与,产生了 8 亿多次的抢红包行为,其中并发量为平时峰值的 10 倍左右。

在服务器数量一定的情况下,如何构建高并发操作、瞬间峰值高的稳定服务?对于团队和架构师都是一个极大的挑战。这时候系统的架构尤为重要!本文将为你分享这些内容。

二、分享者


社交软件红包技术解密(八):全面解密微博红包技术方案_a.jpg
柯立志:微博红包团队技术负责人

三、系列文章


❶ 系列文章目录:


❷ 其它相关文章:


四、红包架构


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

社交软件红包技术解密(八):全面解密微博红包技术方案_1.jpg

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

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

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

五、防刷策略


微博红包有别于微信用户发出的红包,微信用户发出的红包是针对自己所认识的朋友或者已存在于微信群的用户;微博红包是针对于微博所有用户的红包,通过分析参与红包的用户数据每年都会产生一些囤积大量账号准备在春晚大发横财的公司和个人。

如何防止微博红包被自动注册或者通过转卖账号来领取红包?这成为面对我们需要解决的一大问题。

社交软件红包技术解密(八):全面解密微博红包技术方案_2.jpg

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

主要途径有:

  • 1)用户注册:通过用户行为分析来识别机器注册的用户,则注册环节进行拦截;
  • 2)用户登录:分析用户登录的行为,通过验证码,身份验证以及手机号验证等措施来提高机器自动登录的门槛;
  • 3)账号质量:通过实名认证,微博的动态等方面来计算出用户的质量;
  • 4)参与红包:红包战场一贯是刷奖账号的获利主战场, 通过用户平时在微博的行为、属性以及实时的登录状态和常用设备来进行分析,判断是否是正常账号来确定是否可以中奖。

六、完善的监控


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

社交软件红包技术解密(八):全面解密微博红包技术方案_3.jpg

社交软件红包技术解密(八):全面解密微博红包技术方案_4.jpg

社交软件红包技术解密(八):全面解密微博红包技术方案_5.jpg

社交软件红包技术解密(八):全面解密微博红包技术方案_6.jpg

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

主要涉及的监控如下:

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

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

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

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

3)网络层监控

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

4)资源层的监控

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

5)服务器的性能监控

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

6)系统错误日志的监控

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

七、弹性资源管理和调度


1)故障的秒级切换:

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

2)资源的相互独立:

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

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

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

八、系统的挑战和性能优化


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

  • 系统性能的可靠性;
  • 关键节点的可用性;
  • 如何应对突发热点;
  • 业务频繁迭代的处理。

1)系统架构的升级:

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

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

2)修枝剪页:

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

3)多级缓存:

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

九、写在最后


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

(原文链接:https://www.infoq.cn/article/2016-hongbao-weibo

附录:更多架构方面的文章汇总


[1] 有关IM架构设计的文章:
浅谈IM系统的架构设计
简述移动端IM开发的那些坑:架构设计、通信协议和客户端
一套海量在线用户的移动端IM架构设计实践分享(含详细图文)
一套原创分布式即时通讯(IM)系统理论架构方案
从零到卓越:京东客服即时通讯系统的技术架构演进历程
蘑菇街即时通讯/IM服务器开发之架构选择
腾讯QQ1.4亿在线用户的技术挑战和架构演进之路PPT
微信后台基于时间序的海量数据冷热分级架构设计实践
微信技术总监谈架构:微信之道——大道至简(演讲全文)
如何解读《微信技术总监谈架构:微信之道——大道至简》
快速裂变:见证微信强大后台架构从0到1的演进历程(一)
17年的实践:腾讯海量产品的技术方法论
移动端IM中大规模群消息的推送如何保证效率、实时性?
现代IM系统中聊天消息的同步和存储方案探讨
IM开发基础知识补课(二):如何设计大量图片文件的服务端存储架构?
IM开发基础知识补课(三):快速理解服务端数据库读写分离原理及实践建议
IM开发基础知识补课(四):正确理解HTTP短连接中的Cookie、Session和Token
WhatsApp技术实践分享:32人工程团队创造的技术神话
微信朋友圈千亿访问量背后的技术挑战和实践总结
王者荣耀2亿用户量的背后:产品定位、技术架构、网络方案等
IM系统的MQ消息中间件选型:Kafka还是RabbitMQ?
腾讯资深架构师干货总结:一文读懂大型分布式系统设计的方方面面
以微博类应用场景为例,总结海量社交系统的架构设计步骤
快速理解高性能HTTP服务端的负载均衡技术原理
子弹短信光鲜的背后:网易云信首席架构师分享亿级IM平台的技术实践
知乎技术分享:从单机到2000万QPS并发的Redis高性能缓存实践之路
IM开发基础知识补课(五):通俗易懂,正确理解并用好MQ消息队列
微信技术分享:微信的海量IM聊天消息序列号生成实践(算法原理篇)
微信技术分享:微信的海量IM聊天消息序列号生成实践(容灾方案篇)
新手入门:零基础理解大型分布式架构的演进历史、技术原理、最佳实践
一套高可用、易伸缩、高并发的IM群聊、单聊架构方案设计实践
阿里技术分享:深度揭秘阿里数据库技术方案的10年变迁史
阿里技术分享:阿里自研金融级数据库OceanBase的艰辛成长之路
社交软件红包技术解密(一):全面解密QQ红包技术方案——架构、技术实现等
社交软件红包技术解密(二):解密微信摇一摇红包从0到1的技术演进
社交软件红包技术解密(三):微信摇一摇红包雨背后的技术细节
社交软件红包技术解密(四):微信红包系统是如何应对高并发的
社交软件红包技术解密(五):微信红包系统是如何实现高可用性的
社交软件红包技术解密(六):微信红包系统的存储层架构演进实践
社交软件红包技术解密(七):支付宝红包的海量高并发技术实践
社交软件红包技术解密(八):全面解密微博红包技术方案
>> 更多同类文章 ……

[2] 更多其它架构设计相关文章:
腾讯资深架构师干货总结:一文读懂大型分布式系统设计的方方面面
快速理解高性能HTTP服务端的负载均衡技术原理
子弹短信光鲜的背后:网易云信首席架构师分享亿级IM平台的技术实践
知乎技术分享:从单机到2000万QPS并发的Redis高性能缓存实践之路
新手入门:零基础理解大型分布式架构的演进历史、技术原理、最佳实践
阿里技术分享:深度揭秘阿里数据库技术方案的10年变迁史
阿里技术分享:阿里自研金融级数据库OceanBase的艰辛成长之路
达达O2O后台架构演进实践:从0到4000高并发请求背后的努力
优秀后端架构师必会知识:史上最全MySQL大表优化方案总结
小米技术分享:解密小米抢购系统千万高并发架构的演进和实践
一篇读懂分布式架构下的负载均衡技术:分类、原理、算法、常见方案等
通俗易懂:如何设计能支撑百万并发的数据库架构?
>> 更多同类文章 ……

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

上一篇:社交软件红包技术解密(七):支付宝红包的海量高并发技术实践下一篇:社交软件红包技术解密(九):谈谈手Q红包的功能逻辑、容灾、运维、架构等

本帖已收录至以下技术专辑

推荐方案
评论 1
赞!
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部