美文网首页Java 程序员技术Code技术分享
基于Redis、Netty、Websocket实现红包雨活动

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

作者: 程序花生 | 来源:发表于2021-04-09 15:59 被阅读0次

    红包雨活动

    需求背景

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

    参考成熟技术实现方案:

    • 基于Netty NIO实现以较少资源支持更多的并发连接.
    • 基于Websocket实现双工通信,客户端可以请求,服务端可以反向推送数据.

    实现逻辑

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

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

    • 初始化接口: 缓存红包数据到RedisHash结构,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
    来源:掘金

    相关文章

      网友评论

        本文标题:基于Redis、Netty、Websocket实现红包雨活动

        本文链接:https://www.haomeiwen.com/subject/nwzikltx.html