红包场景的系统设计和实践

简介: 红包场景的系统设计和实践

一、红包系统的业务场景

红包场景的业务处理流程:

  1. 包红包:需要查询用户账户金额,需要调用账户查询服务
  2. 发红包:需要红包服务生成红包订单id
  3. 抢红包:通过红包订单id实时生成单笔金额凭证
  4. 拆红包:有两条处理主线,一个是实时计算抢购红包金额,一个是发送方和接收方的转账操作

image-20231018002114849

二、红包系统的技术和架构特点

  1. 红包系统的数据读写特点是:写多读少

  2. 瞬时对DB和cache的请求并发量非常大,需要解决的是高并发的问题

  3. 对于涉及资金的业务,需要考虑资损和异常处理的方案,即需要较高的可靠性保障
  4. 在拆红包时,红包金额显示和转账操作可以异步化,即信息流和资金流可以分离

三、整体方案设计

1.业务逻辑层

  • 多实例服务和负载均衡策略

部署多实例的红包服务,提升服务的处理能力,有状态的信息抽取到分布式缓存中,在进行服务路由的时候,可以选择红包订单号进行路由,便于后期红包算法的实现。

  • 双缓存策略

选择构建本地缓存和分布式缓存双缓存的方案,redis做分布式缓存,主要用来保存全局缓存数据,包括用户信息和群组信息等,本地缓存主要用来保存中间值或状态信息,在红包系统中保存发出的红信息、抢购的红包信息等;

抢红包环节是流量最大的环节,将红包信息预先加载到cache中来,这样就不用再请求DB,降低对DB的压力;

  • 异步处理

由于在拆红包的时候并发量肯定非常大,但其实用户首先关注的只是抢到红包的金额等信息,实际钱包中的到账金额不会实时关注,所以抢购的红包信息,比如抢购金额等呈现是同步计算的,但钱包金额转账操作可以异步操作;

2.数据存储层

  • 分布分表方案

红包服务需要重点解决的问题就是并发请求量过大,分库是常见的解决方案,可以按照订单号进行分库,将原集中在一个数据库的数据分散到多个数据库,势必会降低对单库的访问压力;

在设计分库的时候需要考虑分片键,在红包场景下可以使用红包订单号来做分片键。

3.异常处理方案

  • 流控和降级策略

在发红包的时候处理好流量控制,流量过大需要有流量降级的策略。

  • 异常记录入库,后续人工补偿

数据写入失败记录入库,后期人工核查和补账;

  • 风控措施

涉及到资金的业务,可能就存在黑产等风险,需要引入风控措施;

4.部署方案

  • 集群部署

按照上述的方案,业务服务需要做集群部署,同样数据库服务也需要做集群部署;一方面是提升并发处理的性能,另一份方面是避免单点故障,提高可靠性。

四、重点问题的解决方案

红包生成算法

本地缓存做拆红包的实时处理,红包订单做key,利用redis的原子性做红包分拆的实时处理;红包金额在0.01~剩余用户平局值*2之间

故障处理思路

缓存故障则降级到访问数据库;

实时处理出问题则异步补偿,异步补偿出问题则记录问题,后续凭记录手动补账

五、总结

  1. 红包的业务场景主要是:包红包-->发红包-->抢红包-->拆红包
  2. 技术和架构特点:多写少读的场景,瞬时并发量比较大,拆红包和转账可以异步执行,可以实现双缓存操作
  3. 解决高并发的方案:服务多实例,按照订单号进行动态路由;实现双缓存设计,热点数据可以提前预热;红包算法在内存中进行实时计算;
  4. 提升高可用的方案:利用异步机制将拆红包和转账操作异步化;利用流控和降级措施避免服务不可用的场景出现;人工干预有问题的记录;对计划内风险因素做好规划和定时处理,计划外风险因素做好演练和预案;
目录
相关文章
|
存储 NoSQL 安全
红包系统架构设计
红包系统架构设计
1776 0
红包系统架构设计
|
SQL Dubbo NoSQL
推荐一个秒杀系统设计与实现项目(已开源)!
推荐一个秒杀系统设计与实现项目(已开源)!
463 0
推荐一个秒杀系统设计与实现项目(已开源)!
|
安全 区块链 数据库
互助拍卖竞拍抢单模式系统开发项目方案丨DAPP拍卖竞拍抢拍互助系统开发(案例开发)/开发逻辑/源码运营版
    dapp的开发和运行基于智能合约,智能合约是一种运行在区块链上的自动执行合约,它可以实现自动化的交易和管理逻辑,And automatically supervise and execute according to the set rules.Dapp achieves decentralized data storage,business logic,and value exchange through smart contracts.
|
SQL NoSQL Java
把优惠券系统设计的炉火纯青!(2)
公司新来一个同事,把优惠券系统设计的炉火纯青!
161 0
把优惠券系统设计的炉火纯青!(2)
|
Java 测试技术 Spring
把优惠券系统设计的炉火纯青!(1)
把优惠券系统设计的炉火纯青!
147 0
把优惠券系统设计的炉火纯青!(1)
|
缓存 NoSQL 前端开发
秒杀系统设计的5个要点
比如有10件商品要秒杀,可以放到缓存中,读写时不要加锁。 当并发量大的时候,可能有25个人秒杀成功,这样后面的就可以直接抛秒杀结束的静态页面。进去的25个人中有15个人是不可能获得商品的。所以可以根据进入的先后顺序只能前10个人购买成功。后面15个人就抛商品已秒杀完。
345 0
|
存储 SQL NoSQL
社交软件红包技术解密(十二):解密抖音春节红包背后的技术设计与实践
本文将要分享的是春节期间海量红包社交活动为抖音所带来的各种技术挑战,以及抖音技术团队是如何在实践中一一解决这些问题的。
401 0
社交软件红包技术解密(十二):解密抖音春节红包背后的技术设计与实践
|
消息中间件 XML 缓存
美团点评智能支付核心交易系统的可用性实践(上)
背景 每个系统都有它最核心的指标。比如在收单领域:进件系统第一重要的是保证入件准确,第二重要的是保证上单效率。清结算系统第一重要的是保证准确打款,第二重要的是保证及时打款。我们负责的系统是美团点评智能支付的核心链路,承担着智能支付100%的流量,内部习惯称为核心交易。因为涉及美团点评所有线下交易商家、用户之间的资金流转,对于核心交易来说:第一重要的是稳定性,第二重要的还是稳定性。
美团点评智能支付核心交易系统的可用性实践(上)
|
监控 算法 安全
美团点评智能支付核心交易系统的可用性实践(下)
背景 每个系统都有它最核心的指标。比如在收单领域:进件系统第一重要的是保证入件准确,第二重要的是保证上单效率。清结算系统第一重要的是保证准确打款,第二重要的是保证及时打款。我们负责的系统是美团点评智能支付的核心链路,承担着智能支付100%的流量,内部习惯称为核心交易。因为涉及美团点评所有线下交易商家、用户之间的资金流转,对于核心交易来说:第一重要的是稳定性,第二重要的还是稳定性。
美团点评智能支付核心交易系统的可用性实践(下)
|
存储 消息中间件 缓存
实践出真知:全网最强秒杀系统架构解密,不是所有的秒杀都是秒杀!!
实践出真知,冰河用亲身经历告诉你如何设计一个秒杀系统架构:从电商系统架构到秒杀系统、从高并发“黑科技”与致胜奇招到服务器硬件优化,全方位立体掌握秒杀系统架构!!
14429 0
实践出真知:全网最强秒杀系统架构解密,不是所有的秒杀都是秒杀!!
下一篇
DataWorks