红包雨架构的设计汇总

一 微服务总体架构

1.1 微服务总体架构

1.2 红包雨的流程

1.3 发红包的内容

1.3.1 概述流程

1.发红包-》抢红包。

1.所有人签到的金额之和等于红包总金额。2.每个人至少抢到一分钱;3.保证所有人抢到金额的几率相等。

1.3.2 拆分红包通用流程算法

其中拆红包最为关键,设计的算法是:二倍均值算法。

二倍均值算法:剩余的余额M,剩余的人数N,每次抢到红包数=随机区间(0,(M/N)*2)

这个公式:保证每次随机金额是均值相等的,不会因为抢红包的先后顺序造成不公平。这句话不理解耶???

复制代码
package com.ljf.redis.redpackage;

import java.util.Arrays;
import java.util.Random;

/**
 * @ClassName: TwoAvgSuanFa
 * @Description: TODO
 * @Author: admin
 * @Date: 2023/07/21 10:20:24 
 * @Version: V1.0
 **/
public class TwoAvgSuanFa {
    public static void main(String[] args) {
       Integer[] integers= sendAvgPackage(100,5);
       System.out.println(""+ Arrays.toString(integers));
    }
    public static Integer[] sendAvgPackage(int totalMoney,int redPackagNum){
        Integer[] rpNumberArrays=new Integer[redPackagNum];
        int useMoney=0;
        for(int i=0;i<redPackagNum;i++){
            if(i==redPackagNum-1){
                rpNumberArrays[i]=totalMoney-useMoney;
            }
            else {
                int avgMoney=((totalMoney-useMoney)/(redPackagNum-i))*2;
                System.out.println("avgMoney:"+avgMoney);
                rpNumberArrays[i]=1+new Random().nextInt(avgMoney-1);
            }
            useMoney=useMoney+rpNumberArrays[i];
        }
        return rpNumberArrays;
    }
}

结果:

1.3.3 红包雨的架构流程

1.发红包

1.按照金额M,红包人数N,使用二倍均值法,将M分成N个子红包。使用redis的list数据结构进行存储。

逻辑

2.抢红包

1.从redis的红包池list中使用lpop命令进行取出数据消费,且和用户进行绑定,在redis中使用hash结构记录抢红包的记录。

2.每次抢红包前从redis的 hash结构中查询是否已经存在抢红包记录,无则抢,有则不让再抢。

1.3.4 红包雨的v2版本

待完善....

相关推荐
Alluxio15 小时前
Alluxio + OCI:为 AI 工作负载实现亚毫秒访问延迟与可扩展吞吐
运维·数据库·人工智能·分布式·缓存·ai·语言模型
虹科网络安全18 小时前
Search on Flex:用分层存储承载更大规模的 Redis 搜索索引
经验分享·redis·艾体宝·艾体宝it
青瓦梦滋19 小时前
Redis主从复制
服务器·数据库·redis·缓存·bootstrap
阿卡好可爱20 小时前
Lua 热更新不生效:改完文件线上仍是旧逻辑,package.loaded 与 upvalue 重绑定详解
数据结构·分布式·后端·架构·lua
Joy T21 小时前
Redis Lua 原子限流:Lua 脚本、竞态条件与并发控制
数据库·redis·lua·限流·竞态条件·redis scripting
IT规划师1 天前
Redis 数据类型全解 - Stream 深度:Pending 回收、重试死信与消息队列选型(十一)
redis·.net
虹科网络安全1 天前
RDI 多数据源管道:把分散的数据汇入统一 Redis 数据层
经验分享·redis·艾体宝·艾体宝it·艾体宝redis
我不会起名字3221 天前
Redis 从 0 到 1(三十七·收官):36 篇浓缩成 1 张知识地图 + 50 项生产 Checklist
redis·go·知识体系·checklist·收官
2601_967987371 天前
安装 Redis 或 Redis Stack
linux·windows·redis·macos·安装