1、河南移动智慧生活是中国移动通信集团河南有限公司官方出品,为河南移动用户打造的手机客户端,主要提供话费充值、流量查询、账单查询、套餐办理、优惠活动、手机购买、视频娱乐、生活服务等便捷服务。
2、所在的项目组为客户端活动组,主要工作内容有:
营业厅各项展示功能,如套餐活动推荐,用户套餐用量展示,卡券中心,金币乐园,积分兑换,生活缴费,线上排队等;
河南移动的各项长短期活动,如女神节活动,猜灯谜活动,组队抽奖,大转盘等;
对外业务接口,如微信、淘宝充值页面的推荐套餐活动接口;
3、做过的典型业务有:
(1) 微信充值页面的套餐活动推荐以及办理接口,月初高峰日访问量大约60万次。推荐逻辑为:1.根据用户号码查出其所属多个套餐推荐标签,用这些标签跟套餐表中标签相对应(标签对套餐一对多);2.根据用户号码查出用户对应推荐活动;3.根据套餐维表中的套餐与活动对应关系组装出用户推荐套餐活动;为方便测试,为白名单用户提供可配置化套餐活动推荐及办理逻辑。
此业务关键点在于:1.调用crm接口的超时、返回结果异常以及不一致的处理上。解决方案为:多线程缩短crm调用时长、redis缓存保证用户获得推荐的一致性。
2.用户办理套餐加活动中间需要有6秒的时间间隔(crm限制)。解决方案为:定时任务异步通知(消息中间件也可完成该任务,由于crm接口的不稳定性最终采用了定时任务)。活动办理失败的话,会每间隔半分钟调用1次,直接成功或三次全都失败,异步通知微信侧(定时任务通知,直至回调成功,或回调10次)。
(2)用户组队答题抽奖活动,最高奖励为iphone xs,以及移动账单全年免单,早晚高峰期活动并发达到每秒30-50次/秒。
此业务的主要关键点在于:
1.奖品价值较高,保证大奖必须发出去的情况下,不能发超。此处解决方案为:采用redis缓存技术,将大奖放入缓存中,同时设置定时任务,每隔一个小时去检验大奖在数据库中与缓存中的一致性,如果连续两次不一致(主要为缓存取出来了,但程序出现异常导致奖品未发放出去),则将数据库中数据与缓存同步;
2.高并发下组队、抽奖、奖品库存以及缓存中数据的一致性。解决方案为:页面采用ajax异步请求加遮罩防止连续点击;每次请求加自动递增码配合用户网络地址防止恶意刷新;对数据库操作上采用事务;
3.组队限制条件较多:用户只有在一个组队答题完成后才能进行下一次组队,组队答题完成后队伍中每个用户都要增加抽奖次数(队长加2次,队员加1次),用户日最大抽奖次数为5次