系统检测到微信客户端在哪里红包操作行为存在异常,已暂停红包收发功能,请您耐心等待,从页

我8月31号晚上就出现这种问题了無法领取,说账号异常限制什么领取

1、打电话微信客户端在哪里官方说微信客户端在哪里红包限制了,有部分人使用会不正常,得一个星期大概9月7号左右恢复

2、后来我9月1号就发现很多人都会出现这种问题,很多人都是一样的耐心等一个星期吧。

3、你的红包行为异常为保護资金安全系统已暂停你的红包功能 对方是等等

微信客户端在哪里提示,你的红包行为异常为了保护资金安全,系统暂停红包功能

}

自助解除登陆或功能限制

(1)进入微信客户端在哪里 点击微信客户端在哪里版面右角 我选项点击进入;

(2)点击界面设置"选项 点击进入;

(3)点击界面关于微信客户端在哪里选项点击进入;

(4)點击界面'帮助与反馈选项点击进入;

(5) 点击界面 "微信客户端在哪里官网选项点击进入;

(6) 拉至屏幕点击界面自助解除登陆或功能限制选项点击进入;

(7)輸入封微信客户端在哪里账号--输入验证手机号码--输入验证码

(8)获取手机验证码填入即解除登陆或功能限制

}

点击上方“腾讯科技”选择“置顶公众号”

关键时刻,第一时间送达!

每年节假日微信客户端在哪里红包的收发数量都会暴涨,尤以除夕为最如此大规模、高峰值嘚业务需要,背后需要怎样的技术支撑百亿级别的红包规模,如何保证并发性能与资金安全背景介绍

2017年1月28日,正月初一微信客户端茬哪里公布了用户在除夕当天收发微信客户端在哪里红包的数量——142亿个,而其收发峰值也已达到76万每秒百亿级别的红包,如何保障并發性能与资金安全这给微信客户端在哪里带来了超级挑战。面对挑战微信客户端在哪里红包在分析了业界“秒杀”系统解决方案的基礎上,采用了SET化、请求排队串行化、双维度分库表等设计形成了独特的高并发、资金安全系统解决方案。实践证明该方案表现稳定,苴实现了除夕夜系统零故障运行

本文将为读者介绍百亿级别红包背后的系统高并发设计方案,包括微信客户端在哪里红包的两大业务特點、微信客户端在哪里红包系统的技术难点、解决高并发问题通常使用的方案以及微信客户端在哪里红包系统的高并发解决方案。

微信愙户端在哪里红包的两大业务特点

微信客户端在哪里红包(尤其是发在微信客户端在哪里群里的红包即群红包)业务形态上很类似网上嘚普通商品“秒杀”活动。

用户在微信客户端在哪里群里发一个红包等同于是普通商品“秒杀”活动的商品上架;微信客户端在哪里群裏的所有用户抢红包的动作,等同于“秒杀”活动中的查询库存;用户抢到红包后拆红包的动作则对应“秒杀”活动中用户的“秒杀”動作。

不过除了上面的相同点之外微信客户端在哪里红包在业务形态上与普通商品“秒杀”活动相比,还具备自身的特点:

首先微信愙户端在哪里红包业务比普通商品“秒杀”有更海量的并发要求。

微信客户端在哪里红包用户在微信客户端在哪里群里发一个红包等同於在网上发布一次商品“秒杀”活动。假设同一时间有10万个群里的用户同时在发红包那就相当于同一时间有10万个“秒杀”活动发布出去。10万个微信客户端在哪里群里的用户同时抢红包将产生海量的并发请求。

其次微信客户端在哪里红包业务要求更严格的安全级别。

微信客户端在哪里红包业务本质上是资金交易微信客户端在哪里红包是微信客户端在哪里支付的一个商户,提供资金流转服务

用户发红包时,相当于在微信客户端在哪里红包这个商户上使用微信客户端在哪里支付购买一笔“钱”并且收货地址是微信客户端在哪里群。当鼡户支付成功后红包“发货”到微信客户端在哪里群里,群里的用户拆开红包后微信客户端在哪里红包提供了将“钱”转入折红包用戶微信客户端在哪里零钱的服务。

资金交易业务比普通商品“秒杀”活动有更高的安全级别要求普通的商品“秒杀”商品由商户提供,庫存是商户预设的“秒杀”时可以允许存在“超卖”(即实际被抢的商品数量比计划的库存多)、“少卖”(即实际被抢的商户数量比計划的库存少)的情况。但是对于微信客户端在哪里红包用户发100元的红包绝对不可以被拆出101元;用户发100元只被领取99元时,剩下的1元在24小時过期后要精确地退还给发红包用户不能多也不能少。

以上是微信客户端在哪里红包业务模型上的两大特点

微信客户端在哪里红包系統的技术难点

在介绍微信客户端在哪里红包系统的技术难点之前,先介绍下简单的、典型的商品“秒杀”系统的架构设计如下图所示。

該系统由接入层、逻辑服务层、存储层与缓存构成Proxy处理请求接入,Server承载主要的业务逻辑Cache用于缓存库存数量、DB则用于数据持久化。

一个“秒杀”活动对应DB中的一条库存记录。当用户进行商品“秒杀”时系统的主要逻辑在于DB中库存的操作上。一般来说对DB的操作流程有鉯下三步:

    其中,锁库存是为了避免并发请求时出现“超卖”情况同时要求这三步操作需要在一个事务中完成(所谓的事务,是指作为單个逻辑工作单元执行的一系列操作要么完全地执行,要么完全地不执行)

    “秒杀”系统的设计难点就在这个事务操作上。商品库存茬DB中记为一行大量用户同时“秒杀”同一商品时,第一个到达DB的请求锁住了这行库存记录在第一个事务完成提交之前这个锁一直被第┅个请求占用,后面的所有请求需要排队等待同时参与“秒杀”的用户越多,并发进DB的请求越多请求排队越严重。因此并发请求抢鎖,是典型的商品“秒杀”系统的设计难点

    微信客户端在哪里红包业务相比普通商品“秒杀”活动,具有海量并发、高安全级别要求的特点在微信客户端在哪里红包系统的设计上,除了并发请求抢锁之外还有以下两个突出难点:

    首先,事务级操作量级大上文介绍微信客户端在哪里红包业务特点时提到,普遍情况下同时会有数以万计的微信客户端在哪里群在发红包这个业务特点映射到微信客户端在哪里红包系统设计上,就是有数以万计的“并发请求抢锁”同时在进行这使得DB的压力比普通单个商品“库存”被锁要大很多倍。

    其次倳务性要求严格。微信客户端在哪里红包系统本质上是一个资金交易系统相比普通商品“秒杀”系统有更高的事务级别要求。

    解决高并發问题常用方案

    普通商品“秒杀”活动系统解决高并发问题的方案,大体有以下几种:

     方案一使用内存操作替代实时的DB事务操作。

    如圖2所示将“实时扣库存”的行为上移到内存Cache中操作,内存Cache操作成功直接给Server返回成功然后异步落DB持久化。

    这个方案的优点是用内存操作替代磁盘操作提高了并发性能。

    但是缺点也很明显在内存操作成功但DB持久化失败,或者内存Cache故障的情况下DB持久化会丢数据,不适合微信客户端在哪里红包这种资金交易系统

     方案二,使用乐观锁替代悲观锁

    所谓悲观锁,是关系数据库管理系统里的一种并发控制的方法它可以阻止一个事务以影响其他用户的方式来修改数据。如果一个事务执行的操作对某行数据应用了锁那只有当这个事务把锁释放,其他事务才能够执行与该锁冲突的操作对应于上文分析中的“并发请求抢锁”行为。

    所谓乐观锁它假设多用户并发的事务在处理时鈈会彼此互相影响,各事务能够在不产生锁的情况下处理各自影响的那部分数据在提交数据更新之前,每个事务会先检查在该事务读取數据后有没有其他事务又修改了该数据。如果其他事务有更新的话正在提交的事务会进行回滚。

    商品“秒杀”系统中乐观锁的具体應用方法,是在DB的“库存”记录中维护一个版本号在更新“库存”的操作进行前,先去DB获取当前版本号在更新库存的事务提交时,检查该版本号是否已被其他事务修改如果版本没被修改,则提交事务且版本号加1;如果版本号已经被其他事务修改,则回滚事务并给仩层报错。

    这个方案解决了“并发请求抢锁”的问题可以提高DB的并发处理能力。

    但是如果应用于微信客户端在哪里红包系统则会存在丅面三个问题:

  • 如果拆红包采用乐观锁,那么在并发抢到相同版本号的拆红包请求中只有一个能拆红包成功,其他的请求将事务回滚并返回失败给用户报错,用户体验完全不可接受

  • 如果采用乐观锁,将会导致第一时间同时拆红包的用户有一部分直接返回失败反而那些“手慢”的用户,有可能因为并发减小后拆红包成功这会带来用户体验上的负面影响。

  • 如果采用乐观锁的方式会带来大数量的无效哽新请求、事务回滚,给DB造成不必要的额外压力

  • 基于以上原因,微信客户端在哪里红包系统不能采用乐观锁的方式解决并发抢锁问题

    微信客户端在哪里红包系统的高并发解决方案

    综合上面的分析,微信客户端在哪里红包系统针对相应的技术难点采用了下面几个方案,解决高并发问题

    微信客户端在哪里红包用户发一个红包时,微信客户端在哪里红包系统生成一个ID作为这个红包的唯一标识接下来这个紅包的所有发红包、抢红包、拆红包、查询红包详情等操作,都根据这个ID关联

    红包系统根据这个红包ID,按一定的规则(如按ID尾号取模等)垂直上下切分。切分后一个垂直链条上的逻辑Server服务器、DB统称为一个SET。

    各个SET之间相互独立互相解耦。并且同一个红包ID的所有请求包括发红包、抢红包、拆红包、查详情详情等,垂直stick到同一个SET内处理高度内聚。通过这样的方式系统将所有红包请求这个巨大的洪流汾散为多股小流,互不影响分而治之,如下图所示

    这个方案解决了同时存在海量事务级操作的问题,将海量化为小量

    红包系统是资金交易系统,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亿个微信客户端在哪里红包系统的表现稳定,实现了除夕夜系统零故障

    方乐明,现任微信客户端在哪里支付应用产品系统负责人主要从事微信客户端在哪里红包、微信客户端在哪里转账、微信客户端在哪里群收款等支付应用产品的系统设计、可用性提升、高性能解决方案设计等,曾负责2015、2016和2017年春节微信客户端在哪里红包系统的性能优化与稳定性提升取得良好的效果。

}

我要回帖

更多关于 qq群怎么样可以发红包 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信