数据驱动增长:客户端工程师的传媒网站分布式事务优化实践
|
两个月之前,客户端那帮人非要搞什么“数据驱动增长”,说是要优化传媒网站的分布式事务。我当时就翻了个白眼——数据驱动?不就是老板拍脑袋要看的报表吗?结果他们还真拉着我开了三次会,会议室空调坏了,热得我后颈全是汗,老张还一直擦他那副金丝眼镜,擦得镜片反光,晃得我眼睛疼。 他们说,原来的分布式事务处理太慢,用户发评论、点赞、分享这些操作,经常卡在事务提交环节,导致数据不一致。比如用户A点了赞,但B看不到,或者反过来。我原以为这是后端数据库的问题,结果他们说,是客户端和后端的事务协调机制有问题——客户端发起请求后,后端要等好几个服务都确认了才提交,中间任何一个环节卡住,整个事务就废了。我说那你们优化啊,他们说“得用数据驱动”。
文章配图,仅供参考 第二天,我路过他们工位,看见小李盯着屏幕,桌上堆着三杯凉透的咖啡。他指着代码说:“你看,这里原来是用同步阻塞的方式等后端响应,现在改成异步回调,但事务管理器那边得改,不然会漏提交。”我点点头,心里想:这不就是换个写法吗?能有多大区别?结果他们还真测出了区别——优化后,事务提交成功率从82%涨到了91%。我当时就愣了,这数据是真的?小李说:“我们跑了十八万次模拟请求,还用了线上灰度,确实涨了。”但最让我无语的是,他们优化完事务,老板又说要加“实时数据看板”,说要看每个操作的延迟、成功率、失败原因。我说这不是重复了吗?他们说“数据驱动增长,得让老板看到效果”。结果老张带着团队熬了三个通宵,把看板做出来了,老板看了两眼说:“这数据怎么和上周的报表对不上?”老张擦着汗解释:“上周的报表是T+1,这个是实时,所以……”老板打断他:“我要的是能指导增长的数据,不是解释差异的数据。”我当时差点笑出声——这不就是典型的“指标打架”吗? 不过话说回来,他们这次优化,确实解决了几个老问题。比如之前用户发评论,偶尔会卡在“正在提交”的界面,优化后这种情况几乎没了。我原以为是因为事务处理快了,结果他们说,是因为客户端加了超时重试机制——如果后端没响应,客户端就自动重发一次,但只重发一次,避免重复提交。我说这不就是“失败重试”吗?他们说:“对,但以前没数据支撑,不敢随便加,怕重试太多导致后端崩溃。”现在有了数据,知道重试一次的成功率能提升15%,就敢加了。 但最让我后怕的是,他们优化完事务后,发现有个隐藏的bug——如果用户在网络极差的情况下发评论,事务管理器会卡住,导致后续所有操作都失败。这个bug在测试环境没复现,因为测试环境的网络是模拟的,不够真实。上线后,有个用户反馈说“发评论后,其他功能都不能用了”,他们查日志才发现这个问题。老张当时脸都白了,说:“这要是没数据监控,根本发现不了。”后来他们加了更细粒度的监控,连事务管理器的队列长度都监控,才避免了大面积故障。 现在回头看,他们这次优化,能站得住的地方确实是“优胜劣汰”——用数据说话,把原来模糊的“感觉”变成了具体的数字。比如事务提交成功率、操作延迟、失败原因分布,这些数据一摆出来,谁也反驳不了。但我也得吐槽一句:数据驱动增长?不就是用数据给优化找借口吗?不过话说回来,有数据总比没数据强——至少出了问题,能知道是哪里的问题,而不是互相甩锅。 下一步他们说要优化“跨端事务”,比如用户在手机端点赞,在PC端取消,数据要同步。我说这更难吧?他们说:“没事,我们有数据,能测出来哪里慢。”我摇摇头,心想:这帮人,真是被数据绑架了。但转念一想,至少他们知道自己在干什么,不像有些团队,改个按钮颜色都要开三天会。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

