0

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

 1 year ago
source link: https://www.51cto.com/article/761084.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

2023-07-20 15:46:24
在App端到端全链路接口低质量请求治理基础上,开启全资源质量治理进程,建立图片、视频低质量识别与治理体系,对多媒体资源进行有效的压缩、加速和保护,以提高用户的访问速度和安全性,持续的治理低质量请求,度提高主App访问速度、降低故障率、增强数据的安全性和稳定性,提升用户交互体验,从而提高用户满意度和市场竞争力,进一步增强用户粘性和转化率。
09a8002082ed242c4f46745c70c0053ff814dc.png

一、端到端质量提升背景

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

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

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

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

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

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

低质量请求治理首先是需要确定“用户从App客户端到服务端访问”低质量请求有效识别方法和逻辑。共识指标、量化具体链路节点服务问题,帮助各个部门和团队对于低质量请求的概念达成一致,为治理工作提供基础和共同语言,明确相关部门和人员在低质量请求治理中的职责和权限,进而保障治理工作的高效执行,另外便于进行监督和评估,确保治理工作按照既定标准开展。

具体“低质量请求”LQR为判断后端服务质量标准是:整体以主App端上秒开率(1000ms)为基准,定义了客户端请求耗时(渲染<150ms)+ 后端请求耗时(网络平响<600ms、服务平响<250ms ),即后端治理方向以“低质量请求 (LQR): ”耗时>850ms OR 状态码 !=2/3XX为判断标准。

d2c599476e99251062b507fb966bca7adb1647.jpg

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

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

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

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

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

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

e6692305089c7dc24c5462cd0209426abdd347.jpg

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

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

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

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

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

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

c65dcf9339329241d7c7801d90d33f53f169fe.jpg

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,进行还原并访问到最终源站,请求完成。
835d27a71eb86640da6463df1f092c0ef2d0f4.jpg

2、智能分析CDN资源

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

671e90f3281ec330f50168484d0766a8507ba2.jpg

3、CDN择优/容灾调度

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

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

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建联时间,提高服务响应速度。

源站负载到应用保持长连接:避免频繁的连接建立和关闭维护的开销,降低网络传输的延迟,提高网络传输效率。

源站精简链路:减少服务传输的中间负载、减少不必要的网络传输,提高数据传输的效率和稳定性;保证信息传输通畅和快速。

b7ffddf52cb0873108198445864762506fb248.jpg

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

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

379959564cbf13b02069466d44c7846b991541.jpg

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

持续的完善端到端的质量治理体系与工具化能力建设,结合更加智能化的机器学习等技术工具,实现自动化地监控系统各环节的关键指标,快速发现和排除问题,提高整个系统的可靠性和鲁棒性。

在App端到端全链路接口低质量请求治理基础上,开启全资源质量治理进程,建立图片、视频低质量识别与治理体系,对多媒体资源进行有效的压缩、加速和保护,以提高用户的访问速度和安全性,持续的治理低质量请求,度提高主App访问速度、降低故障率、增强数据的安全性和稳定性,提升用户交互体验,从而提高用户满意度和市场竞争力,进一步增强用户粘性和转化率。

责任编辑:姜华 来源: 51CTO

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK