写点什么

汽车之家 APP 端到端全链路治理最佳技术实践

作者:之家技术
  • 2023-08-07
    北京
  • 本文字数:4682 字

    阅读完需:约 15 分钟

汽车之家APP端到端全链路治理最佳技术实践

标题端到端质量提升背景

在移动互联网和智能化时代,手机 App 软件已经成为方便工作和生活的重要工具。为了提升用户体验,打造精品汽车消费者阵地,汽车之家对 App 服务质量问题进行了全方位的专项治理。

端到端全链路服务质量问题

在实际运营中,App 用户到服务端的链路长复杂性较高,存在着众多的网络链路和节点包括移动设备、无线网络、核心网、服务网等。在这样一个大规模的分布式环境中,系统的质量和性能对于用户体验和服务的稳定性至关重要。在这些环节中,一旦出现低质量请求和异常,影响整个系统的性能和稳定性,导致用户 App 端上访问问题,如响应慢、响应卡顿、错误等,特别是在流量峰值时期,容易引起系统崩溃和服务不可用等问题,严重影响用户的使用体验。因此,如何进行端到端全链路低质量请求治理,提升系统的质量和性能成为了一个迫切的需求。

端到端链路低质量请求治理系统化方案

在实施端到端全链路低质量请求治理方案的过程中,综合分析端到端全链路低质量请求治理是一个全局性、复杂性的问题。需要综合运用多种技术和管理手段,充分考虑不同的业务场景和用户需求,探索科学的治理方法、有效治理手段、工具化建设、系统化架构升级,其次通过加强团队协作、实时监控、及时预警等管理手段,保障系统的安全和稳定运行同时提升全链路系统质量和性能。

建立端到端全链路低质量请求标准

低质量请求治理首先是需要确定“用户从 App 客户端到服务端访问”低质量请求有效识别方法和逻辑。共识指标、量化具体链路节点服务问题,帮助各个部门和团队对于低质量请求的概念达成一致,为治理工作提供基础和共同语言,明确相关部门和人员在低质量请求治理中的职责和权限,进而保障治理工作的高效执行,另外便于进行监督和评估,确保治理工作按照既定标准开展。具体“低质量请求”LQR 为判断后端服务质量标准是:整体以主 App 端上秒开率(1000ms)为基准,定义了客户端请求耗时(渲染<150ms)+ 后端请求耗时(网络平响<600ms、服务平响<250ms),即后端治理方向以“低质量请求(LQR):”耗时>850ms OR 状态码!=2/3XX 为判断标准。


建立低质量请求指标分析大盘

收集打通客户端网络库、CDN、负载、源站,整合端到端的全链路日志,基于大数据分析建立低质量请求治理大盘,从而更加精准地把握服务质量情况,可以及时发现低质量请求问题,快速响应和处理。同时,也能够系统地展示、分析和监控各个环节的数据,帮助团队快速定位问题,提高治理效率,在指标大盘中,每个指标都与相应的部门和负责人对应,明确了责任归属。低质量请求大盘数据包括域名、接口、网络类型、协议、版本、模块、地域、运营商、网络类型、负载、源站、部门、负责人的指标问题分类,通过大盘指标分析确定主 App 低质量请求(LQR)处于较高水位,整体 LQR 占比超 7%、日影响用户几百万;低质量请求大盘实现数据驱动运营、信息共享,为整体推动各团队全面治理低质量问题提供了强有力的数据支撑。


从低质量请求治理大盘整体分析,App 端到端全链路低质量几个主要问题和治理的大概思路:


客户端方面:网络库日志分析发现,客户端大量 TCP 连接的建立和释放,增加了请求延迟和资源消耗,影响访问速度和效率。这可能是由于客户端缺乏对连接复用以及长连接管理等机制造成的。解决方向是提升长连接,减少 TCP 连接的建立和释放次数,降低服务器负担和提高请求处理效率。


网络链路方面:由于 CDN 网络质量差、节点过于集中、负载过高等原因引起 CDN 节点不稳定或异常,导致请求访问延迟和请求失败。本地网络环境不好,域名使用本地 DNS 进行解析过程耗时较长、访问速度慢、域名被恶意劫持。使用的 HTTP 协议版本较老、未开启 HTTP/2、未使用更高效的加密协议,无法多路复用请求串行发送,影响并发处理能力、访问数据传输速度、稳定性和可靠性。


服务端方面:负载均衡 LB 到源站链路长、链路复杂、应用源站接口逻辑复杂导致后端整体返回平均响应耗时长、错误率高。这可能是由于负载均衡算法不合理、源站负载过高、源站接口存在瓶颈等原因引起的。解决方法包括优化服务端架构、采用更先进的负载均衡算法、优化接口逻辑、加强监控和诊断等方式来提高服务端性能和稳定性。


后端系统建设“智网”端到端的链路择优治理平台落地

为解决现有业务域名多、建连次数多、访问性能损耗、切换 CDN 性能损耗等问题。客户端与后端负载整体改造公共域名收敛的方式,降低客户端建连次数;其次是分析评估建立多个 CDN 厂商节点质量,并进行智能择优调度,提升性能及可靠性;另外整体的端到端全链路最优配置;因此“智网”是一个综合提升性能与稳定性的低质量请求治理系统。


客户端升级支持域名统一收敛技术架构,核心思路是将上百个域名收敛到几个域名,减少 DNS 查询、减少 TCP 连接建立时间和提高网络带宽利用率,提升连接复用率,这些优势可以提高系统链路性能,具体表现在以下几个方面:


减少 DNS 查询:通过客户端域名统一收敛,不同的服务共享同一个域名。这样可以减少 DNS 查询次数,缩短域名解析时间,从而加快网页加载速度。


减少 TCP 连接建立时间:TCP 是一种面向连接的协议,每次建立连接都需要进行握手和断开操作,这会消耗很多时间和资源。通过客户端域名统一收敛,可以将多个请求集成到同一个 TCP 连接中,避免重复建立和断开连接,从而减少了连接建立的时间和开销。


提高网络带宽利用率:通过客户端域名统一收敛,可以将多个请求打包到同一个 TCP 连接中,从而减少请求和响应之间的网络延迟,提高网络带宽利用率。这对于大流量的企业系统尤其重要,可以有效地降低网络带宽成本。


域名统一收敛架构

需要在服务器端和客户端都进行相应的配置和开发工作,方案关键技术:使用统一的域名服务器、反向代理、连接池技术,实现客户端域名统一收敛,提高系统的质量和性能:


建立一个统一的域名服务器:在这个服务器中配置好所有需要访问的服务的 IP 地址和对应的域名。在客户端请求时,通过该统一的域名服务器将请求转发到对应的服务。


使用反向代理:通过在服务器端配置反向代理,将多个不同的服务映射到同一个域名下。这样客户端只需使用一个域名就可以访问多个服务。


使用连接池技术:指在程序启动时预先创建一定数量连接,并将这些连接保存在一个池子里。当客户端需要访问 HTTP 服务时,从连接池中选取一个可用的连接进行操作。这种方式可以避免频繁地建立和断开连接,提高连接复用率。


具体方案是收敛域名个数与 CDN 个数对齐,分别为百度 a.xxxxxx.cn,金山 b.xxxxxx.cn,平安 c.xxxxxx.cn 以及华为 d.xxxxxx.cn,收敛规则为请求的 url 前面增加收敛域名,原域名变为收敛域名的一级 path,请求子 path 和参数不变。


例如,将 xx.app.autohome.com.cn/v1/args?key=xxx 替换为 a.xxxxxx.cn/xxx.app.autohome.com.cn/v8/args?key=xxx。客户端进行收敛域名替换,可以更好地控制质量,同时切实达到最终收敛的目的。


架构调用过程:


1)App 冷启动时,调用 CDN 接口,获取择优的收敛域名(如果择优接口调用失败,走非收敛方式请求业务真实域名)(客户端添加缓存,启动优先用缓存), 接口返回立即启用择优域名;2)客户端请求 D+,对择优域-收敛域名进行解析,获取 CDN 节点 IP;3)客户端与 CDN 节点 IP 进行 http2、http3(通过客户端开关和服务端 CDN 支持决定是否最终开启)连接保持;4)App 启动完成后,立即对剩余对应其他 CDN 厂家的收敛域名进行建联,同时定时 45s 分钟保持建联;5)如果发现择优域名接口返回收敛域名发生变化,判断切换成本,进行立即切换,并复用上述链接,进行快速建联;6)客户端发起的 URL 请求需要从底层对 URL 进行转换,前面增加收敛域名,形成收敛 URL,并进行请求;7)Proxy-NG 收到收敛 URL,进行还原并访问到最终源站,请求完成;


智能分析 CDN 资源

了解用户的地理位置、设备类型和网络环境等信息,该功能通过比较 CDN 厂商在特定地区的网络质量指标,例如延迟、带宽等,来确定最佳的 CDN 厂商和边缘节点,根据这些信息用于调度用户择优边缘节点。实现方案是 App 在启动时会上报请求埋点域名相关信息,不同埋点域名解析到不同的 CDN 厂商,这些域名的请求信息会跟随其他的访问日志一起写入到网络库日志。系统会收集所有的埋点数据,运营商、根据客户端 ip 获取地区信息、耗时和错误率信息,根据时间-地区-运营商-CDN 厂商(源站),通过 flink 获取网络库的日志数据,对各个省份各个城市数据进行整合放入 vm 集群中,然后通过算法每十分钟获取前半个小时内各个区域的平响和错误率, 根据平响和错误率计算出该地区最优质的 cdn 厂商。


CDN 择优/容灾调度

CDN 择优功能是一种高效、智能的 CDN 节点选择机制,根据用户的地理位置和智能分析的 CDN 节点质量,智能地选择最优的 CDN 节点,提高网络性能和可用性;另外域名所使用的 CDN 出现问题时,客户端能够快速将连接切换到其他 CDN 厂家,以确保业务不中断,因此提升服务访问性能和可靠性。服务端核心流程:


1)服务端根据用户端 IP 计算出当前用户的大致地理位置 2)根据用户的网络日志域名解析到的 IP 匹配对应的 CDN 节点 3)根据用户的网络日志,计算出当前域名/IP 节点的请求错误率 4)根据不同地区/CDN 维度下的错误率, 决策出当前地区最优的 CDN 厂商 5)筛选出异常错误率的 IP 节点 6)切换当前地区 CDN 的流量, 下发最优 CDN 列表和异常 IP 列表给用户端


端到端全链路最优最佳实践策略

综合网络链路、CDN 配置、负载源站链路多种技术手段提高数据传输效率和可靠性。


1)域名解析到优质 CDN 厂商:优质链路,提高请求成功率和可靠性;2)端上域名启用 HTTPDNS:加速 DNS 解析,减少了不必要的域名解析时间和延迟,有效避免 DNS 劫持,提升网络请求的速度和响应效率,提高请求成功率和可靠性;3)端上域名 TTL 时间调整为 60s:加快更新 DNS 缓存以及更快地获取新的 IP 地址,降低 DNS 解析的延迟时间;4)CDN 开启 HTTP2.0 协议:利用二进制协议替换了文本协议,通过头部压缩、流控、优先级等技术提升了性能和效率,实现多路复用,使得单个连接中同时处理多个请求和响应,提高网络传输效率;5)CDN 开启 GZIP、BR 压缩:可以显著地降低减小数据传输的大小,提高网络传输效率,减少用户等待时间;描述:开启 GZIP、BR 压缩可以;6)CDN 开启 TLSv1.3 协议:该协议具有更高的安全性和可靠性,有效防止网络攻击和数据泄露,相比目前在用 TLSv1.2 协议建联过程可以减少 1RTT,提高网络传输的安全性和可靠性;7)CDN 开启 HTTP 回源:可快速向源站请求资源并更新缓存,减少 CDN 与源站 SSL 建联时间,提高服务响应速度;8)源站负载到应用保持长连接:避免频繁的连接建立和关闭维护的开销,降低网络传输的延迟,提高网络传输效率;9)源站精简链路:减少服务传输的中间负载、减少不必要的网络传输,提高数据传输的效率和稳定性;保证信息传输通畅和快速;


端到端全链路质量治理成果

通过 App 域名收敛与智能择优体系落地,解决 CDN 厂商故障业务无缝切换,CDN 节点智能择优,用户链路优中选优,客户端统一收敛域名,服务端透明无感 50%以上的流量切到到主要 4 个收敛域名,大大提高连接复用,降低网络开销,主 App 低质量请求经过多个技术团队协同治理大幅降低 7.x%到 2.x%,实现百万用户端到端体验提升。


端到端全链路质量治理未来规划

持续的完善端到端的质量治理体系与工具化能力建设,结合更加智能化的机器学习等技术工具,实现自动化地监控系统各环节的关键指标,快速发现和排除问题,提高整个系统的可靠性和鲁棒性。在 App 端到端全链路接口低质量请求治理基础上,开启全资源质量治理进程,建立图片、视频低质量识别与治理体系,对多媒体资源进行有效的压缩、加速和保护,以提高用户的访问速度和安全性,持续的治理低质量请求,度提高主 App 访问速度、降低故障率、增强数据的安全性和稳定性,提升用户交互体验,从而提高用户满意度和市场竞争力,进一步增强用户粘性和转化率。


发布于: 刚刚阅读数: 3
用户头像

之家技术

关注

铸精品·释产能·启未来 2010-04-07 加入

还未添加个人简介

评论

发布
暂无评论
汽车之家APP端到端全链路治理最佳技术实践_质量_之家技术_InfoQ写作社区