一、端到端质量提升背景
在移动互联网和智能化时代,手机App软件已经成为方便工作和生活的重要工具。为了提升用户体验,打造精品汽车消费者阵地,汽车之家对App服务质量问题进行了全方位的专项治理。
二、端到端全链路服务质量问题
在实际运营中,App用户到服务端的链路长复杂性较高,存在着众多的网络链路和节点包括移动设备、无线网络、核心网、服务网等。在这样一个大规模的分布式环境中,系统的质量和性能对于用户体验和服务的稳定性至关重要。在这些环节中,一旦出现低质量请求和异常,影响整个系统的性能和稳定性,导致用户App端上访问问题,如响应慢、响应卡顿、错误等,特别是在流量峰值时期,容易引起系统崩溃和服务不可用等问题,严重影响用户的使用体验。因此,如何进行端到端全链路低质量请求治理,提升系统的质量和性能成为了一个迫切的需求。
三、端到端链路低质量请求治理系统化方案
在实施端到端全链路低质量请求治理方案的过程中,综合分析端到端全链路低质量请求治理是一个全局性、复杂性的问题。需要综合运用多种技术和管理手段,充分考虑不同的业务场景和用户需求,探索科学的治理方法、有效治理手段、工具化建设、系统化架构升级,其次通过加强团队协作、实时监控、及时预警等管理手段,保障系统的安全和稳定运行同时提升全链路系统质量和性能。
1、建立端到端全链路低质量请求标准
低质量请求治理首先是需要确定“用户从App客户端到服务端访问”低质量请求有效识别方法和逻辑。共识指标、量化具体链路节点服务问题,帮助各个部门和团队对于低质量请求的概念达成一致,为治理工作提供基础和共同语言,明确相关部门和人员在低质量请求治理中的职责和权限,进而保障治理工作的高效执行,另外便于进行监督和评估,确保治理工作按照既定标准开展。
具体“低质量请求”LQR为判断后端服务质量标准是:整体以主App端上秒开率(1000ms)为基准,定义了客户端请求耗时(渲染<150ms)+ 后端请求耗时(网络平响<600ms、服务平响<250ms ),即后端治理方向以“低质量请求 (LQR): ”耗时>850ms OR 状态码 !=2/3XX为判断标准。
2、建立低质量请求指标分析大盘
收集打通客户端网络库、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 连接中,从而减少请求和响应之间的网络延迟,提高网络带宽利用率。这对于大流量的企业系统尤其重要,可以有效地降低网络带宽成本。
1、域名统一收敛架构
需要在服务器端和客户端都进行相应的配置和开发工作,方案关键技术:使用统一的域名服务器、反向代理、连接池技术,实现客户端域名统一收敛,提高系统的质量和性能:
建立一个统一的域名服务器:在这个服务器中配置好所有需要访问的服务的 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。
客户端进行收敛域名替换,可以更好地控制质量,同时切实达到最终收敛的目的。
架构调用过程:
- App冷启动时,调用CDN接口,获取择优的收敛域名(如果择优接口调用失败,走非收敛方式请求业务真实域名)(客户端添加缓存,启动优先用缓存), 接口返回立即启用择优域名。
- 客户端请求D+,对择优域-收敛域名进行解析,获取CDN节点IP。
- 客户端与CDN节点IP进行http2、http3(通过客户端开关和服务端CDN支持决定是否最终开启)连接保持。
- App启动完成后,立即对剩余对应其他CDN厂家的收敛域名进行建联,同时定时45s分钟保持建联。
- 如果发现择优域名接口返回收敛域名发生变化,判断切换成本,进行立即切换,并复用上述链接,进行快速建联。
- 客户端发起的URL请求需要从底层对URL进行转换,前面增加收敛域名,形成收敛URL,并进行请求。
- Proxy-NG收到收敛URL,进行还原并访问到最终源站,请求完成。
2、智能分析CDN资源
了解用户的地理位置、设备类型和网络环境等信息,该功能通过比较CDN厂商在特定地区的网络质量指标,例如延迟、带宽等,来确定最佳的CDN厂商和边缘节点,根据这些信息用于调度用户择优边缘节点。实现方案是App在启动时会上报请求埋点域名相关信息,不同埋点域名解析到不同的CDN厂商,这些域名的请求信息会跟随其他的访问日志一起写入到网络库日志。系统会收集所有的埋点数据,运营商、根据客户端ip获取地区信息、耗时和错误率信息,根据时间-地区-运营商-CDN厂商(源站),通过flink获取网络库的日志数据,对各个省份各个城市数据进行整合放入vm集群中,然后通过算法每十分钟获取前半个小时内各个区域的平响和错误率, 根据平响和错误率计算出该地区最优质的cdn厂商。
3、CDN择优/容灾调度
CDN择优功能是一种高效、智能的CDN节点选择机制,根据用户的地理位置和智能分析的CDN节点质量,智能地选择最优的CDN节点,提高网络性能和可用性;另外域名所使用的CDN出现问题时,客户端能够快速将连接切换到其他CDN厂家,以确保业务不中断,因此提升服务访问性能和可靠性。服务端核心流程:
- 服务端根据用户端IP计算出当前用户的大致地理位置。
- 根据用户的网络日志域名解析到的IP匹配对应的CDN节点。
- 根据用户的网络日志,计算出当前域名/IP节点的请求错误率。
- 根据不同地区/CDN维度下的错误率, 决策出当前地区最优的CDN厂商。
- 筛选出异常错误率的IP节点。
- 切换当前地区CDN的流量, 下发最优CDN列表和异常IP列表给用户端。
4、端到端全链路最优最佳实践策略
综合网络链路、CDN配置、负载源站链路多种技术手段提高数据传输效率和可靠性。
域名解析到优质CDN厂商:优质链路,提高请求成功率和可靠性。
端上域名启用HTTPDNS:加速DNS解析,减少了不必要的域名解析时间和延迟,有效避免DNS劫持,提升网络请求的速度和响应效率,提高请求成功率和可靠性。
端上域名TTL时间调整为60s:加快更新DNS缓存以及更快地获取新的IP地址,降低DNS解析的延迟时间。
CDN开启HTTP2.0协议:利用二进制协议替换了文本协议,通过头部压缩、流控、优先级等技术提升了性能和效率,实现多路复用,使得单个连接中同时处理多个请求和响应,提高网络传输效率。
CDN开启GZIP、BR压缩:可以显著地降低减小数据传输的大小,提高网络传输效率,减少用户等待时间。
描述:开启GZIP、BR压缩可以。
CDN开启TLSv1.3协议:该协议具有更高的安全性和可靠性,有效防止网络攻击和数据泄露,相比目前在用TLSv1.2协议建联过程可以减少1RTT,提高网络传输的安全性和可靠性。
CDN开启HTTP回源:可快速向源站请求资源并更新缓存,减少CDN与源站SSL建联时间,提高服务响应速度。
源站负载到应用保持长连接:避免频繁的连接建立和关闭维护的开销,降低网络传输的延迟,提高网络传输效率。
源站精简链路:减少服务传输的中间负载、减少不必要的网络传输,提高数据传输的效率和稳定性;保证信息传输通畅和快速。
五、端到端全链路质量治理成果
通过App域名收敛与智能择优体系落地,解决CDN厂商故障业务无缝切换,CDN节点智能择优,用户链路优中选优,客户端统一收敛域名,服务端透明无感50%以上的流量切到到主要 4个收敛域名,大大提高连接复用,降低网络开销,主App低质量请求经过多个技术团队协同治理大幅降低7.x%到2.x%,实现百万用户端到端体验提升。
六、端到端全链路质量治理未来规划
持续的完善端到端的质量治理体系与工具化能力建设,结合更加智能化的机器学习等技术工具,实现自动化地监控系统各环节的关键指标,快速发现和排除问题,提高整个系统的可靠性和鲁棒性。
在App端到端全链路接口低质量请求治理基础上,开启全资源质量治理进程,建立图片、视频低质量识别与治理体系,对多媒体资源进行有效的压缩、加速和保护,以提高用户的访问速度和安全性,持续的治理低质量请求,度提高主App访问速度、降低故障率、增强数据的安全性和稳定性,提升用户交互体验,从而提高用户满意度和市场竞争力,进一步增强用户粘性和转化率。