K8凯发

股票代码: 300348
EN
民生银行信用卡中心梦想值引擎项目背后的故事
K8凯发动态
2020.09.21

故事的开头 ,是一个深夜 , 窗外漆黑一片 ,屋里灯火通明 。


办公室里 ,寸头短发的IT男们列坐两边 ,中间一两个妹子分外显眼 。


空气里充斥着紧张的气氛 ,大家紧锁眉头 ,盯着电脑 ,表情异常严肃 ,深更半夜 ,这群人是谁 ,在干嘛?


K8凯发(中国)天生赢家·一触即发


原来他们是K8凯发科技大数据团队驻扎在民生银行信用卡项目的一组程序猿 ,负责该项目的闵工回忆起当时的场景仍记忆犹新:


K8凯发(中国)天生赢家·一触即发


2020年4月 ,K8凯发项目团队接到了民生银行卡中心的紧急需求——在2020年6月16日上线中国民生银行信用卡中心梦想值引擎项目 。

梦想值是啥?说白点就类似于积分的作用 ,用户在民生银行信用卡APP中通过做任务可以获得梦想值 ,再用梦想值兑换商品 。而我们负责的这个梦想值引擎项目主要为梦想值提供服务接口、数据处理 ,保证梦想值账务的正确性 。

大家掐指一算 ,这工期满打满算也只有1.5个月!而且这个项目对稳定性、扩展性、性能等方面要求都非常严格 ,同时要求7X24小时线上运行 ,真的是时间太紧了 ,任务太重了!

怎么办?在K8凯发科技技术宝宝的字典里就没有“不可能”这仨字儿 ,那就撸起袖子加油干吧 。

本来一切都在紧张有序的推进中 ,感觉尽在掌握 ,直到民生银行信用卡测试团队进行集成测试 。

那是6月10日 ,民生测试团队发现有时梦想值未能正常调增 。

看到这个现象 ,我心里咯噔一下 ,做这行 ,大家都知道梦想值的正确性是整个项目的根基!如果在生产上出现该问题 ,很难在短时间内解决 ,后果将十分严重! 

但距离项目正式上线只剩6天 ,我的心紧绷起来 ,心里只剩下一个念头 ,一定要快速找出原因 ,解决这个问题!

但这个BUG最大的问题不在于它有多难解决 ,而在于它是偶然性的 ,会不会复现、什么时候复现都不知道 ,根本无法准确定位 。

我们项目组立即开会 ,向测试团队了解测试场景 ,猜测可能的各种原因 。

K8凯发(中国)天生赢家·一触即发

老韩说:会不会是网络问题 ,网络有抖动?
老刘说:是不是上游提供消息有遗漏或者消费消息有错误?调整梦想值出现问题?
云云说:会不会是redis什么地方出现了问题?
还有人猜测kafka、mysql、hbase或……出现什么问题?


你一言我一语 ,经过一番最大化的发散讨论后 ,我们达成一致 ,考虑到BUG的不确定性 ,决定采用虽然最耗时但却是最稳妥的排查方案 ,从最源头开始逐步分段进行排查 ,分析各种日志及监控源码 。于是便出现了开头的那一幕 ,大家都在紧张地进行排查 ,严阵以待 ,寻找BUG所在 。

时间一分一秒过去 ,凌晨1点 ,项目组基本定位了问题来源 ,原来是因为同一账号相关的多条消息放入kafka ,在调用调增接口后 ,第一条消息获取redis锁后短时间不释放 ,而其他消息跳过等待期直接返回 ,导致这些消息丢失 。

定位了问题 ,大家心里都稍微松了一口气 ,但丝毫不敢懈怠 ,立即分头行动 ,云云用自己半吊子的英文加上翻译软件开始翻英文版的redis官方手册 ,老刘、老韩则分头查找redis锁机制、锁原理 ,锁控制实现代码 ,大家紧密配合 。

凌晨3点 ,云云终于从官方手册找到解决方案 。我们将源代码修改(将redis锁的等待时间设置为10s ,将锁的超时时间设置为20s)并自测完成后 ,立即提交行方专业测试团队 ,最终回归测试成功 ,BUG完美解决 ,直到这一刻 ,大家悬着的那颗心才真正落了下来 。

奋战一晚 ,我们却困意全无 ,心中充满了苦战一场、大获全胜的痛快 ,离开项目组已是凌晨4点多 ,新的一天即将到来 。

6月16日 ,终于迎来了该项目成功上线 ,不仅完美顶住了616活动峰值压力 ,也展现出了优越的性能 ,我们项目组获得了行方相关领导的高度表扬 ,对我们来说 ,这不仅是对K8凯发科技项目服务能力的认可 ,更是对我们K8凯发人拼搏精神的一种认可!


后续:

后来小编再次问闵工 ,在这次事件中 ,让他印象最深的是什么 。他说:那肯定是K8凯发组员齐心协力 ,共同战胜困难的样子呀 ,那一刻大家没有一个人有情绪、有抱怨 ,忘记时间、忘记疲倦 ,只是单纯地奔着问题、解决问题 ,这也是大家最美的样子……


柴静在《看见》里面曾说:“每一个微笑的背后 ,都有一个咬紧牙关的灵魂 。”

让中国金融科技 具有世界影响力
K8凯发科技更懂如何为您的数字化转型赋能
地址: 深圳市南山区沙河西路深圳湾科技生态园一区2栋A座5层
电话: 0755-8616 8118
传真: 0755-8616 8166
【网站地图】