[.com原稿]古人云:天下难事,必易行;天下大事,必详;就是解决困难的事情要在容易解决的时候做计划,从小事做大事,软件工程也是如此。在登录优化过程中,苏宁金融秉承“图难于易,思路更详”的思路,实现了登录响应时间、成功率和用户体验的提升。本文主要从以下几个方面介绍苏宁金融移动登录优化的方法和技巧:寻找优化登录的方法完善系统的监控和测量梳理登录的各个环节优化登录的各个环节寻找方法优化登录随着用户数量的快速增长,以及访问业务系统的次数越来越多,我们经常会收到用户的反馈:登录响应慢,登录被踢等,从哪里入手解决这个问题非常困难对于项目组来说,感觉就像大海捞针。我们团队在思考这两个问题:为什么我们需要花费大量的时间和人力去恢复登录异常时的场景?为什么登录异常后我们的开发人员才发现呢?“图片比简单更难。”我们的想法是抛开单点的优化,从容易的地方做起,先收集数据,追踪用户行为和系统运行时快照,完善系统监控和测量,建立端到端的监控体系覆盖终端全链路,从而建立全链路数据指标体系。“大于其细节”,然后梳理整个过程中的所有环节,然后对过程中的每一个细节进行对症下药,逐一突破。完善系统监控和测量建立全链路覆盖的端到端监控体系。我们将监控系统分为三个小阶段:客户端数据采集端到端链路开放网关和后端微服务监控具体如下:图1:端到端监控系统链路图完善客户端监控采集客户端自动收集所有登录方式的响应时间、成功率、系统运行异常时的快照信息、用户访问痕迹等信息。当出现网络异常时,使用小型网络监控工具收集相关网络异常数据,对异常概率高的网络异常进行监控。打通端到端链接客户端为每个网络请求生成一个全局uniqueFlag,上传到客户端监控系统,作为客户端请求信息发送到API网关系统,实现全链路日志连接在客户端和后端之间。打通后台服务系统,监控API网关系统和后台服务系统。通过自研的RSF微服务调用框架,每次微服务调用都使用traceID跑遍链路上的所有微服务,并收集后端业务逻辑、异常堆栈、运行时快照等信息日志发送至监控系统异步。API网关系统和单点登录系统均接入自主研发的秒级监控系统,实现系统问题秒级快速反馈。图2:移动端登录二级监控系统。市场对登录的各个环节进行了梳理。苏宁金融移动端登录涉及的系统较多,本身处于复杂的硬件和网络环境中,如下图所示:图3:苏宁金融移动端登录影响因素涉及的因素很多,包括客户端、网络、后台等。端系统等,如下:用户网络状态--用户网络是否连通,可用用户网络质量--用户网络接入方式,是否弱网络环境客户端登录相关逻辑处理客户端cookie管理运营商DNS服务CDN服务网络链接连接质量后端系统环境后端系统间调用后端系统登录相关业务逻辑后端系统cookie管理...在优化登录的各个方面后,优化网络链接并建立端到端结束全链路监控,我们发现以前难以定位的问题不再那么难分析。表一:优化前的登录响应时间如上图所示。从监控数据来看,网络时间明显过长,证明我们苏宁金融App的网络质量不好。那么,首先是要提高网络质量。有以下几种方法:升级CDN服务由于历史问题,我们之前的客户端网络库不支持SNI,导致访问的是不支持SNI扩展的老版本加速平台。老平台不仅边缘节点少,而且覆盖面积小。客户立即更新了支持SNI的网络基础库,并将我们的金融CDN服务切换到新的加速平台。与旧平台相比,新平台有了质的提升。其特点包括:效率高、节点多、覆盖面广、支持HTTP/2.0。使用HTTP/2,多路复用,加速传输HTTP/2使用二进制帧格式代替文本格式进行传输,突破了并发请求的限制,可以实现完全多路复用,带来数据传输效率和链接构建和重用的好处被最大化。在3G/4G/Wi-Fi网络下,HTTP2提供出色的网络性能。图4:HTTP/2.0加速效果实施网络链路优化后,监控数据显示网络链路性能平均提升了200ms,但我们并不是很满意。是否可以通过合并网络请求并去除所有重定向来进一步优化网络链路?通过链路分析,网络链路涉及用户设备、运营商基础网络、CDN厂商、服务器性能等。进一步优化网络难度很大,提升空间有限。“图片难于易”,我们在想,能否从登录核心流程的调整上,减少不确定的网络交互,优化?通过分析监控系统收集的日志,发现客户端与后台系统的网络请求交互有3次(2次重定向请求)。时序图如下:图5:登录核心流程优化前的时序图很明显,我们需要做减法,比较简单的方案是减少重定向。通过改造单点登录系统和API网关系统,将客户端和后台系统之间的三个网络请求变成一个网络请求。之前客户端将请求重定向到API网关系统,通过RPC远程服务调用其他后端系统。时序图如下:图6:优化后登录核心流程时序图与网络请求优化融合,效果令人惊喜。登录响应时间如下图所示:表2:优化后的登录响应时间与标准Cookie管理优化结果相比非常优秀,但登录成功率仍然不是特别高。结合监控系统分析,主要有以下几种原因:各类网络错误,由于登录场景的特殊性,经常会出现用户网络异常,网络不稳定的情况。cookie无效或为空。情况一:用户超过15天未使用。用户登录cookie正常过期,属于正常的登录业务逻辑。情况二:异常cookie无效或为空。通过分析,主要是客户端和后台多系统cookie管理混乱造成的,这也是导致登录被踢的主要原因。那么如何才能实现更加规范的管理呢?我们主要从以下细节来规范前后端cookie的管理:规范后端系统(API网关系统、单点登录系统)的cookie管理是domain、path、expires等属性统一规范管理。规范客户端cookie管理,由人工管理转变为系统自动管理。客户端需要支持各种业务系统的登录状态管理,包括原生、H5等不同形式。由于各个业务系统的差异,Android以往的设计都是人工处理cookies,导致后期维护成本特别高。优化后Android端使用系统框架CookieManager管理cookie,使用UC的CookieManager存储cookie。如下图所示:图7:优化AndroidCookie管理规范cookie管理后,登录成功率明显提升。见下图:表3:优化后登录成功率对比从出现登录异常时大海捞针,到快速准确定位问题;从梳理登录流程中的每一个环节,到优化登录流程的每一步,我们始终坚持“图比图难,图更详”的理念!结语路漫漫其修远兮,我将上下求索!经过项目组的不懈努力,苏宁金融App的登录更加高效稳定。但是,以极客精神创造最好的物种,追求最好的体验永无止境!未来,我们将在智能监控系统、网络链路深度优化、登录交互新方式等方向不断探索,永不止步!作者:张旭东、谷雨简介:张旭东,苏宁易购金融研发中心高级工程师,主要负责移动端性能监控和性能优化相关工作。拥有7年以上社交、电商、教育、支付、金融等相关行业工作经验,对移动互联网技术研发有深刻理解和丰富经验。谷宇,苏宁易购金融研发中心高级服务器工程师,拥有9年移动互联网开发经验,擅长服务器架构和规划。目前负责苏宁金融移动网关架构相关工作,对互联网服务器的规划、需求、体验等方面有深入系统的了解。【原创稿件,合作网站转载请注明原作者和出处为.com】