微信红包系统是一个高并发的资金交易系统,最大的技术挑战是保障并发性能与资金安全。这种全新的技术挑战,传统的“秒杀”系统设计方案已不能完全解决。微信红包系统针对相应的技术难点,采用了下面几个方案,解决高并发问题。
1.系统垂直SET化,分而治之。
微信红包用户发一个红包时,微信红包系统生成一个ID作为这个红包的唯一标识。接下来这个红包的所有发红包、抢红包、拆红包、查询红包详情等操作,都根据这个ID关联。
红包系统根据这个红包ID,按一定的规则(如按ID尾号取模等),垂直上下切分。切分后,一个垂直链条上的逻辑Server服务器、DB统称为一个SET。
各个SET之间相互独立,互相解耦。并且同一个红包ID的所有请求,包括发红包、抢红包、拆红包、查详情详情等,垂直stick到同一个SET内处理,高度内聚。通过这样的方式,系统将所有红包请求这个巨大的洪流分散为多股小流,互不影响,分而治之,如下图所示。
这个方案解决了同时存在海量事务级操作的问题,将海量化为小量。
2.逻辑Server层将请求排队,解决DB并发问题。
红包系统是资金交易系统,DB操作的事务性无法避免,所以会存在“并发抢锁”问题。但是如果到达DB的事务操作(也即拆红包行为)不是并发的,而是串行的,就不会存在“并发抢锁”的问题了。
按这个思路,为了使拆红包的事务操作串行地进入DB,只需要将请求在Server层以FIFO(先进先出)的方式排队,就可以达到这个效果。从而问题就集中到Server的FIFO队列设计上。
微信红包系统设计了分布式的、轻巧的、灵活的FIFO队列方案。其具体实现如下:
首先,将同一个红包ID的所有请求stick到同一台Server。
上面SET化方案已经介绍,同个红包ID的所有请求,按红包ID stick到同个SET中。不过在同个SET中,会存在多台Server服务器同时连接同一台DB(基于容灾、性能考虑,需要多台Server互备、均衡压力)。
为了使同一个红包ID的所有请求,stick到同一台Server服务器上,在SET化的设计之外,微信红包系统添加了一层基于红包ID hash值的分流。
其次,设计单机请求排队方案。
将stick到同一台Server上的所有请求在被接收进程接收后,按红包ID进行排队。然后串行地进入worker进程(执行业务逻辑)进行处理,从而达到排队的效果。
最后,增加memcached控制并发。为了防止Server中的请求队列过载导致队列被降级,从而所有请求拥进DB,系统增加了与Server服务器同机部署的memcached,用于控制拆同一个红包的请求并发数。
具体来说,利用memcached的CAS原子累增操作,控制同时进入DB执行拆红包事务的请求数,超过预先设定数值则直接拒绝服务。用于DB负载升高时的降级体验。
通过以上三个措施,系统有效地控制了DB的“并发抢锁”情况。
3.双维度库表设计,保障系统性能稳定
红包系统的分库表规则,初期是根据红包ID的hash值分为多库多表。随着红包数据量逐渐增大,单表数据量也逐渐增加。而DB的性能与单表数据量有一定相关性。当单表数据量达到一定程度时,DB性能会有大幅度下降,影响系统性能稳定性。采用冷热分离,将历史冷数据与当前热数据分开存储,可以解决这个问题。
处理微信红包数据的冷热分离时,系统在以红包ID维度分库表的基础上,增加了以循环天分表的维度,形成了双维度分库表的特色。
具体来说,就是分库表规则像db_xx.t_y_dd设计,其中,xx/y是红包ID的hash值后三位,dd的取值范围在01~31,代表一个月天数最多31天。
通过这种双维度分库表方式,解决了DB单表数据量膨胀导致性能下降的问题,保障了系统性能的稳定性。同时,在热冷分离的问题上,又使得数据搬迁变得简单而优雅。
综上所述,微信红包系统在解决高并发问题上的设计,主要采用了SET化分治、请求排队、双维度分库表等方案,使得单组DB的并发性能提升了8倍左右,取得了很好的效果。
在分析了业界“秒杀”系统解决方案的基础上,微信红包采用了SET化、请求排队串行化、双维度分库表等设计,形成了独特的高并发、资金安全系统解决方案,并在平时节假日、2015和2016春节实践中充分证明了可行性,取得了显著的效果。在刚刚过去的2017鸡年除夕夜,微信红包收发峰值达到76万每秒,收发微信红包142亿个,微信红包系统的表现稳定,实现了除夕夜系统零故障。
爆客红包墙广告营销系统项目加盟合作:https://xm.admin5.com/hongbaoqiang/?wz
申请创业报道,分享创业好点子。点击此处,共同探讨创业新机遇!
微信扫一扫可以直接领取红包、大转盘抽奖领红包、输入数字码领红包(通输入正确的数字码领取红包)、注册会员领红包(首次需输入手机号码)后领取包、关注公众平台领红包
开业前一天晚上,红包雨热场,抽取二等奖、三等奖,额外奖、幸运奖,并提出开业当天8点开门,第一位到店的消费的客户,免费赠送一箱橙子,前10位到店的客户,均可免费领取洗衣液一桶
红包墙拓客到底可行否?很多人接二连三咨询我这个问题,今天就借助这个机会重点给大家分析一下,传统商家遇到客流荒的问题,是尝试,对流量极度匮乏;主要便现在一下几个方面:
在微信私域渠道,裂变是一个重要的获客拉新方式,近期火爆的瑞幸咖啡,用了18个月就完成了从0到纳斯达克上市,破了世界纪录,其中最核心的玩法也是裂变,今天我们不聊瑞幸咖啡,聊他的一个竞品,连咖啡,同样把裂变玩到了极致
近年来,面对日益激烈的市场竞争,如何实现生产原料和成品的高品质、低成本、高效率逐渐成为大部分公司的目标。条码管理技术的开发和应用可以使企业从传统的生产管理方式中彻底走出来,向数智化转型的方向迈进。北京三维天地科技股份有限公司在实验室数智化领域具有丰富的行业经验,致力于为客户提供信息化整体解决方案及相
2024年1月22日,人行数字供应链金融服务平台电子保函模块正式上线运行,全国首批共5家试点行于日前完成验收与上线工作。信雅达以专业、丰富的系统建设经验助力3家试点行(宁波银行、南京银行、徽商银行)电子保函系统建设,并于1月21日前完成系统上线准备工作,1月22日与人行同步正式上线系统运行,其中宁波
近日,艾灵完成1.5亿元A轮融资。本轮投资方包括英特尔资本、深圳天使母基金直投基金、TCL中新融创、浦耀信晔、住友商事亚洲资本、新电投资(SingtelInnov8)、华迪创投。据透露,艾灵本轮融资将用于深化工业5G、工业智能等核心产品的研发,加速在更多行业落地推广,推动重要行业市场大规模商用落地,
十年,是时间的标尺,也是发展的刻度。从2012年的2.5万亿到2022年的10.81万亿,国内软件产业收入增长了近4倍。特别是近两年,得益于数字经济的蓬勃发展,软件产业更是迎来了黄金期。在外部数字化需求的拉动下,产业内生动力强劲,服务商不断地加速产品进化、生态布局,以寻求新一轮增长。然而,一半是火焰
如今,很多CFO开始关注企业支出数据,希望通过精细化洞察分析,实现有效降本。但由于费用支出零散化、报销流程繁琐化、支出管理割裂化,导致支出数据分析无抓手,数据沉淀不完整导致分析结果无效。暗藏的合规行为如果没有及时发现,还会带来经营风险。分贝通近期发布《一体化支出管理案例集·春季版》,收录了智能制造、
从推出全电发票、改名数电票,到十多种票面样式落实;从少数城市试点,到试点城市覆盖全国范围......从“以票治税”到“以数治税”,数电票作为“金税四期”工程的重要载体,已进入全面普及时代!全面普及后,数电票的概念、数电票与纸质票的区别、如何开具和收票等......每家企业更要做到心中有数。01数电票
摘要:在信息技术快速发展和数字化浪潮席卷全球的今天,中国企业正积极迎接数字化转型的挑战和机遇。在这个过程中,国产化替代正成为中国企业提升信息安全性、实现自主创新与可控性、降低采购成本的重要路径。“从企业自身来讲,在推进精益化管理的进程中,实现软件产品的升级迭代,一方面,要汲取国外先进软件的精髓,另一
伴随“一带一路”的高质量发展,国内企业“走出去”在海外的布局越来越广,出海产业也不断升级迭代,对信息化、数据化建设也越来越重视,信息技术的不断发展在企业全球化布局起着至关重要的作用。凌锐蓝信为用户的全球业务提供高性能、安全和稳定的数智网络服务,消除用户的关键任务应用程序和全球实时流量的连接和延迟问题
随着全球化的加速和数字技术的普及,金融业面临着日益激烈的市场竞争和不断变化的客户需求。为了更好地适应新时代的要求,不少金融企业,特别是银行,正在积极推进数字化改革,打造一个全球业务支撑平台,以提高运营效率、降低成本、提升服务质量。根据德勤《DigitalBankMaturity2022》报告显示,银