本文内容编写时 , 参考了网上的资料 , 详见“参考资料”部分 , 感谢分享者 。
1、引言这个系列文章已经整理了10篇 , 但都没有涉及到具体的红包算法实现 , 主要有以下两方面原因 。
一方面是各社交/IM产品中的红包功能同质化严重 , 红包算法的“可玩性”便是“核心竞争力所在” , 这是同质化功能的差异化竞争思路 , 不会随便公开 。
另一方面 , 市场上还存在各种抢红包插件这类灰产存在 , 一旦公开这些算法 , 很可能又被这帮插件开发者们搞出什么幺蛾子 。
所以 , 这样的情况下 , 如果要做社交/IM产品中的红包功能 , 红包随便算法该怎么实现 , 基本上只能自已琢磨 , 很难找到大厂算法直接套用 。
本着即时通讯网一贯的im知识传播精神 , 我收集整理并参考了大量的网上资料 , 综合了比较靠谱的信息来源 , 便有了本文 。本文根据有限的资料 , 分享了微信红包随机算法实现中的一些技术要点 , 并整理了两种比较靠谱的红包算法实现思路(含可运行的实现代码) , 希望能给你的红包算法开发带来启发 。
申明:本文资料整理自网络 , 仅供学习研究之用 , 如有不妥 , 请通知Jack Jiang 。
学习交流:
- 移动端IM开发入门文章:《新手入门一篇就够:从零开发移动端IM》本文已同步发布于“即时通讯技术圈”公众号 。
- 开源IM框架源码:https://github.com/JackJiang2011/MobileIMSDK
2、系列文章
《社交软件红包技术解密(一):全面解密QQ红包技术方案——架构、技术实现等》3、微信红包算法要点汇总这是目前能找到的仅有的一份 , 有微信团队人员参与的微信红包算法技术要点的讨论资料 。分享于2015年 , 差不多是微信红包刚火没多久 , 大概是微信技术团队的人当时没有现在这些技术之外的顾虑 , 所以作了有限的分享 , 资料难得 , 本次重新整理了一下 , 可以作为参考资料使用 。以下是资料正文 。
《社交软件红包技术解密(二):解密微信摇一摇红包从0到1的技术演进》
《社交软件红包技术解密(三):微信摇一摇红包雨背后的技术细节》
《社交软件红包技术解密(四):微信红包系统是如何应对高并发的》
《社交软件红包技术解密(五):微信红包系统是如何实现高可用性的》
《社交软件红包技术解密(六):微信红包系统的存储层架构演进实践》
《社交软件红包技术解密(七):支付宝红包的海量高并发技术实践》
《社交软件红包技术解密(八):全面解密微博红包技术方案》
《社交软件红包技术解密(九):谈谈手Q春节红包的设计、容灾、运维、架构等》
《社交软件红包技术解密(十):手Q客户端针对2020年春节红包的技术实践》
《社交软件红包技术解密(十一):最全解密微信红包随机算法(含演示代码)》(* 本文)
资料来源:来自InfoQ的某架构群的技术讨论 , 由朱玉华整理(个人博客是:zhuyuhua.com(目前已无法访问)) 。
资料背景:起因是有朋友在朋友圈咨询微信红包的架构 , 于是在微信团队成员参与讨论的情况下 , 我(指“朱玉华”)整理了这次讨论的技术要点 , 也就是下面的内容(内容为问答形式) 。
3.1、算法实现的技术要点【1】问:微信的金额什么时候算?
答:微信金额是拆的时候实时算出来 , 不是预先分配的 , 采用的是纯内存计算 , 不需要预算空间存储 。
为什么采取实时计算金额?原因是:实时效率更高 , 预算才效率低下 。预算还要占额外存储 。因为红包只占一条记录而且有效期就几天 , 所以不需要多大空间 。就算压力大时 , 水平扩展机器是 。
【2】问:关于实时实时性 , 为什么明明抢到红包 , 点开后发现没有?
答:2014年的红包一点开就知道金额 , 分两次操作 , 先抢到金额 , 然后再转账 。
2015年的红包的拆和抢是分离的 , 需要点两次 , 因此会出现抢到红包了 , 但点开后告知红包已经被领完的状况 。进入到第一个页面不代表抢到 , 只表示当时红包还有 。
推荐阅读
- 君山银针属于黄茶吗,君山银针黄茶中富含营养物质对防癌
- go语言简单工厂模式介绍与代码编写
- 3种方法实现python-matplotlib显示中文
- 攀字五行属什么名字 攀字取名字的含义
- pdf在线转换可以用哪个免费的网站实现?
- 不要怕,告别乱如麻的Python报错输出,一行代码就够了
- 代码防御性编程的十条技巧
- 含糖红茶的解酒效果,那种茶叶解酒效果最好
- 黄瓜|想要身上的脂肪减下来,吃哪些菜可以实现?这3种菜就可以做到
- Python 中如何实现参数化测试?