写点什么

基于 Redis、Netty、Websocket 实现红包雨活动

  • 2023-03-13
    湖南
  • 本文字数:647 字

    阅读完需:约 2 分钟

红包雨活动

需求背景

支撑营销活动,拉新,提升品牌影响;红包是花币或者实物奖品,活动后线下找运营同事兑换。

参考成熟技术实现方案:

  • 基于 Netty NIO 实现以较少资源支持更多的并发连接.

  • 基于 Websocket 实现双工通信,客户端可以请求,服务端可以反向推送数据.

实现逻辑

一、运营管理台配置完数据,持久化活动数据、红包数据到 MySQL


二、初始化数据和定时任务

  • 初始化接口: 缓存红包数据到 Redis,Hash 结构,Key 是活动 ID,Value 中哈希结构 key:红包对象 ID value:序列化的红包对象.

  • 更新、删除接口: Redis 中红包数据的.

  • 设置 Quartz 定时任务


三、红包具体接口

  • 查询红包雨活动:用户进入场景,发现红包发射器,客户端连接 netty+ webSocket,马上调用该接口。查询当前场景是否存在活动.

  • 红包雨活动倒计时: 用户查询过红包雨活动后,会登记进入本红包雨场景。

  • 红包雨活动红包信息: 当红包雨活动开始后,服务端会服务端会以 1 次/秒的频率向端侧推送红包雨信息.

  • 红包雨活动结束: 当红包雨活动结束后,服务端会向端侧推送一条红包雨结束消息.

  • 抢红包: set ex nx 加分布式锁抢红包,锁也是 Hash 结构缓存在 Redis

  • 推送红包被抢消息: 当同场次其他用户抢红包后,服务器向用户推送某些红包已经被抢走的消息。 业务服务 (Netty, Websocket)向 Kafka 发送消息,同时每个业务服务订阅 Kafka, consumer group id 设置唯一以作广播效果,消费消息后向连接到本服务的客户端推送 “红包被抢消息”,客户端接收消息后对被抢红包实现视觉效果(爆炸、拆开等).


作者:Redfisky

链接:https://juejin.cn/post/6948668223751454733

来源:掘金

用户头像

还未添加个人签名 2021-07-28 加入

公众号:该用户快成仙了

评论

发布
暂无评论
基于Redis、Netty、Websocket实现红包雨活动_做梦都在改BUG_InfoQ写作社区