接口性能调优案例

117 阅读2分钟

背景

风控对接机票新业务线,在机票创单环节和出票环节,机票带着实时订单数据调用风控接口,风控即时返回是否有风险,涉及到个人账户,航司,航班等风险,具体策略不方便透露。其中,接口性能要求100ms。

遇到问题

接口超时,不满足业务需求

分析耗时链路

问题剖析主要从链路入手,首先就回顾了整个在做什么事情以及每一步的耗时

序号做什么事耗时
1机票发起请求,网络上苏州请求到北京20ms
2进入先业务基础数据落库10ms
3查询账户维度风险标签25ms
4查询名单4次单次10ms 共40ms
5根据业务基础数据用mysql计算航司 航班风险单次60ms 共2次 120ms
6组装前面结果,回写每个订单的命中情况30ms
6结果从北京返回到苏州20ms

分析哪些可以减少耗时

序号位置处理方式
1网络耗时业务机房在苏州,服务提供方机房在北京,北京到苏州专线网络耗时一来一回就需要40ms,机房如果在一起,网络耗时可以在10ms左右
2多份名单查询多线程批量查询
3mysql计算太慢换redis计算
4回头分析业务可以接受一致性差点的走异步,实在要保障一致性的走同步

总结方法论

序号内容
1整体上看优化性能思维上不能局限在代码本身,可以从业务,代码写法本身,整体运维架构综合考虑,优先考虑效果最好的
2单独提出来,需要冷静分析业务本身,哪些可以接受一致性差点,哪些一定要保障,涉及到哪些可以多线程,哪些可以异步
3耗时的每一步需要明确
4运维,网络,DB等因素也是需要想到的