过家家项目:如何设计抢红包

在我的项目“过家家”里,有一个抢红包的功能。功能类似微信抢红包。 抢红包的基本逻辑 v1(低并发)抢红包时实时使用二倍均值法计算,只使用MySQL 1. 红包创建流程 用户发红包时,指定总金额与红包个数 系统将总金额拆分为指定数量的红包 红包数量约束: 最少为 1 个 最多不能超过群成员数量 2. 红包金额分配策略 单个红包:不进行随机计算,抢到即获得全部金额 多个红包:采用二倍均值法进行随机分配 当前用户最大可抢金额 = 剩余金额 / 剩余人数 × 2 实际可抢区间为 [0.01, 最大可抢金额 - 0.01] 下限 0.01 元:保证每个抢到的用户都有收益 上限减 0.01 元:保证剩余红包仍有余额可抢 边际示例:10 元红包 2 人分,第 1 人可抢区间为 [0.01, 9.99] 3. 数据持久化与防刷控制 红包创建后入库存储 发红包限流:同一用户 10 秒内仅允许发送 1 个红包,防止手抖误操作 4. 抢红包并发控制 防重复抢:在 redpacket_grabs 表中建立 (userId, redpacketId) 联合唯一索引,确保同一用户对同一红包仅能抢一次 防超卖:采用数据库乐观锁机制 更新 redpacket 表时,必须同时满足: remaining_count > 0 remaining_amount >= 本次扣减金额 5. 方法缺点 每次请求直接打数据库,导致响应时间没有访问内存快 每次请求都会使用二分均值法计算抢到的金额,并且做超卖判断,比较麻烦 v2 (高并发)红包创建好了就已经固定了抢红包的数量和个数,加入Redis 大致流程 ...

2026-07-25 11:09:53 AM · 2 分钟
面试官

过家家:我是如何设计亲属称谓计算引擎的? 更新中 

正在更新中

2026-07-11 11:30:58 AM · 1 分钟
面试官

过家家:一款专注于家庭的应用

开发者警告:这是一个 Alpha 版本 Github 网址: 部分功能仍在测试阶段,稳定性有待验证。请勿擅自用于任何商业用途,仅供学习参考 🏡 SweetHome — 过家家 项目官网:https://www.sweethome.asia 面向家庭的社交与智能生活平台后端 从家庭关系图谱出发,重新定义家人之间的连接方式 功能特性 · 系统架构 · 技术栈 · 模块说明 · 快速开始 · API 概览 · 设计亮点 APP页面展示 ✨ 功能特性 👨‍👩‍👧‍👦 家庭关系管理 家庭创建与加入 — 注册即创建家庭,或通过邀请码/管理员审批加入 亲属关系引擎 — 基于图的 BFS 最短路径算法,自动计算成员间的称谓(爷爷、舅舅、堂姐…),服务端只产出语言无关的 relationCode,本地化由客户端完成 多家庭切换 — 用户同一时刻只属于一个家庭,切换时自动级联退出旧家庭 💬 即时通讯 WebSocket 实时聊天 — 原生 WebSocket(非 STOMP),支持文本/图片/语音/视频/红包消息 Redis Pub/Sub 广播 — 支持多实例水平扩展,消息通过 Redis 频道在各实例间扇出 HTTP 兜底 — WebSocket 断线时降级到 REST 接口发送 未读计数 — 基于游标的消息状态跟踪 💰 电子红包 Lua 脚本保证原子性 — 抢红包操作在 Redis 中原子执行,支持高并发 Redis Stream 持久化 — 红包领取记录先进入 Stream,由后台消费者异步落库 自动过期 — 定时任务将过期红包退款 📍 位置服务 实时位置上报 — 家庭成员位置追踪 电子围栏 — 自定义地理围栏,越界告警(通过极光推送通知) 📸 家庭动态(Moments) 图文/视频动态 — 类似朋友圈的家庭动态 点赞与评论 — 互动功能 公共动态广场 — 跨家庭动态聚合 ❤️ 健康管理 健康指标记录 — 身高、体重、血压,按日追踪 可见性控制 — 每项指标可独立设置对家人公开/私密 每日提醒 — 定时推送提醒记录健康数据 🔐 安全认证 JWT 双 Token — accessToken(15 分钟)+ refreshToken(30 天) 网关统一认证 — 所有请求统一在 Gateway 层鉴权,下游服务信任 X-User-Id 头 RSA 非对称签名 — 仅 auth-service 持有私钥签发,其他服务只持公钥验证 ☁️ 云原生基础设施 Nacos — 服务注册发现 + 配置中心(共享配置) Dubbo — 服务间 RPC 调用(最长 3 跳链路:auth → user → family → chat) Kafka — 事件驱动(缓存失效广播、围栏告警、离线通知、健康提醒) JPush — 极光推送,App 后台时接收告警通知 Caffeine + Redis — 两级缓存,热点数据就近加速 Cloudflare R2 — 对象存储(头像、聊天图片、视频、语音) 🌐多语言支持 ✅ 中文简体 ✅ 中文繁体 ✅ 英语 ✅ 缅甸语(AI翻译,未进行人工测试) ✅ 韩语(AI翻译,未进行人工测试) ✅ 日语(AI翻译,未进行人工测试) ...

2026-07-11 11:29:18 AM · 7 分钟
面试官

个人简历

个人简历 · 在线预览 新窗口打开 ↗

2026-06-14 02:20:24 PM · 1 分钟
面试官

閾界事务所:一个异常事件爱好者的聚集地 更新中 

阈界事务所 · Backend 一个用于记录、归档和探索异常事件的微服务平台 项目简介 阈界事务所(YJSWS)是一个社区驱动的平台,用于收集、整理和探索各类异常与未解事件的记录。本仓库为项目后端,基于 Spring Boot 3 / Spring Cloud 微服务架构,提供用户认证、档案管理、评论互动、图片上传等核心能力。 核心功能 用户体系 — 手机号 + 密码注册、微信小程序登录、个人资料管理、收藏与浏览历史追踪 档案管理 — 丰富的档案 CRUD,支持结构化元数据(时间线、人物关系图、证据链、参考链接、标签) 评论系统 — 档案评论,通过服务间调用丰富用户信息 图片上传 — 基于 Cloudflare R2 对象存储,通过 AWS S3 SDK 访问 新闻模块 — 异常事件新闻,支持草稿/发布/下线生命周期(基础设施已就绪,服务开发中) API 网关 — 统一 JWT 鉴权、路由级访问控制、CORS 处理 服务发现与配置 — 基于 Nacos 的服务注册发现和集中配置管理 系统架构 ┌─────────────┐ │ 客户端 │ └──────┬──────┘ │ ┌──────▼──────┐ │ 网关 │ :10891 │ JWT 鉴权 │ └──────┬──────┘ │ ┌────────────────┼────────────────┐ │ │ │ ┌──────▼──────┐ ┌──────▼──────┐ ┌───────▼─────┐ │ 认证服务 │ │ 用户服务 │ │ 档案服务 │ │ Auth │ │User Service │ │ Archive │ │ :10890 │ │ :10889 │ │ :10888 │ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │ │ │ └────────────────┼────────────────┘ │ ┌──────────▼──────────┐ │ Nacos │ │ 服务发现 + 配置中心 │ │ :8848 │ └─────────────────────┘ 请求认证流程 所有请求经由 Gateway 网关,AuthGlobalFilter 校验 JWT Authorization 请求头 白名单路径(登录、注册、公开读取)免认证放行 JWT 校验通过后,网关提取 userId 并注入 X-User-Id 请求头 下游服务通过 UserInterceptor → UserContext(ThreadLocal<Long>)获取当前用户 服务间通信 服务间通过 OpenFeign 进行 RPC 调用,客户端接口定义在 api 模块中: ...

2025-05-16 10:14:38 AM · 5 分钟
灵异 前端开发 后端开发 面试官