带你读《Apache Tomcat的云原生演进》——Web容器可观测最佳实践(3)

本文涉及的产品
云原生网关 MSE Higress,422元/月
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
应用实时监控服务-应用监控,每月50GB免费额度
简介: 带你读《Apache Tomcat的云原生演进》——Web容器可观测最佳实践(3)

带你读《Apache Tomcat的云原生演进》——Web容器可观测最佳实践(2)https://developer.aliyun.com/article/1377522


image.png

 

Metrics的最佳实践是一定要在端侧预聚合指标。我们的指标来源于span的,对应的就是埋点统计方法的耗时。这样一个span的字段有很多,比如span name接口名、耗时以及产生的时间。我们按照15秒聚合一次,把这段时间内所有调用聚合出来,就可以得到上图的一条数据,这就是端侧预聚合的概念。

 

那么为什么要做端侧预聚合呢?有两个原因,一个是我们的指标在预聚合之后它的量很少,另外一个是预聚合之后它的数据一定是准确的。同样在一些开源产品里,它是没有指标预聚合的,它统计出来的指标都是基于采样后的span,所以它的数据是不准确的。

 

在我们做了预聚合之后,我们会在端侧采集一些指标,上图右侧列了一些我们会去采集的指标以及给这些指标加的维度。这些指标和维度话基本都是通过在阿里内部服务电商业务以及服务公共云上的用户总结下来。通过这些指标能够定位线上大多数的问题。比如请求数、请求大小、响应大小、耗时、活跃请求数、线程池的指标。关键维度我们会去记录接口名、上游接口名以及状态码。

 

在做端测指标预聚合的时候,也会有一些比较困难的点。

 

做指标的应该都会知道维度发散的问题,在端侧我们要做维度收敛。大家可以看一下上图左侧,它的spanname是一个相对来说比较发散的情况。它聚合之后从7条数据变成了4条数据,聚合效果就没那么好了。如果它是更发散的情况,它的聚合效果就会更差,且会导致数据的上报量也会很大,端服务端存储成本也比较高,所以一定要做维度收敛。

 

在Spring MVC场景下,Spring MVC会放到request attribute里面的一个base matching pattern attribute这样的key里面,这个key一定会映射到后端用户的controller上面。

 

另外,在SpringCloud Gateway的场景下,它没有base matching pattern attribute的key,所以我们会把它的收敛后置到转发请求的后面业务服务上去做收敛。业务服务会把收敛的结果通过response heater返回给SpringCloud Gateway。然后SpringCloud Gateway再把返回来的结果前面加一个固定的前缀,比如API,来保证在任意场景下,都可以把发散的url收敛成一个固定的url。

 

在统计精准指标上,就像请求数这样的指标,因为它是counter一直递增的。我们采集指标可能是15秒采集一次,如果现在要拿一分钟的精确指标,就相当于它强依赖于定时任务调度的15秒的精确度。但精确度很难保证,所以我们在做指标的时候,会去考虑按时间分桶。在预聚合指标的时候就把一个指标聚合在那个上报周期了,以此保证统计一分钟请求数量的时候,不会出现偏差。

 

在准确统计分位数上,很难有一个方案把内存占用、二次聚合、精确性这三方面都照顾的很好。经过我们的调研,DDSketch 算法可以在这三方面有一个比较好的权衡。可以得到一个比较精确的结果,内存占用也是可预期的,结果也可以进行二次聚合。

 

image.png 

 

带你读《Apache Tomcat的云原生演进》——Web容器可观测最佳实践(4)https://developer.aliyun.com/article/1377520

相关文章
|
消息中间件 监控 大数据
优化Apache Kafka性能:最佳实践与调优策略
【10月更文挑战第24天】作为一名已经对Apache Kafka有所了解并有实际使用经验的开发者,我深知在大数据处理和实时数据流传输中,Kafka的重要性不言而喻。然而,在面对日益增长的数据量和业务需求时,如何保证系统的高性能和稳定性成为了摆在我们面前的一个挑战。本文将从我的个人视角出发,分享一些关于如何通过合理的配置和调优来提高Kafka性能的经验和建议。
391 4
|
7月前
|
人工智能 运维 监控
阿里云携手神州灵云打造云内网络性能监测标杆 斩获中国信通院高质量数字化转型十大案例——金保信“云内网络可观测”方案树立云原生运维新范式
2025年,金保信社保卡有限公司联合阿里云与神州灵云申报的《云内网络性能可观测解决方案》入选高质量数字化转型典型案例。该方案基于阿里云飞天企业版,融合云原生引流技术和流量“染色”专利,解决云内运维难题,实现主动预警和精准观测,将故障排查时间从数小时缩短至15分钟,助力企业降本增效,形成可跨行业复制的数字化转型方法论。
401 6
|
7月前
|
监控 安全 BI
优化 Apache 日志记录的 5 个最佳实践
Apache 日志记录对于维护系统运行状况和网络安全至关重要,其核心包括访问日志与错误日志的管理。通过制定合理的日志策略,如选择合适的日志格式、利用条件日志减少冗余、优化日志级别、使用取证模块提升安全性及实施日志轮换,可有效提高日志可用性并降低系统负担。此外,借助 Eventlog Analyzer 等专业工具,能够实现日志的高效收集、可视化分析与威胁检测,从而精准定位安全隐患、评估服务器性能,并满足合规需求,为强化网络安全提供有力支持。
198 0
优化 Apache 日志记录的 5 个最佳实践
|
Java 关系型数据库 MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【8月更文挑战第19天】在Linux上搭建Java Web应用环境,需安装JDK 1.8、Tomcat及MariaDB。本指南详述了使用apt-get安装OpenJDK 1.8的方法,并验证其版本。接着下载与解压Tomcat至`/usr/local/`目录,并启动服务。最后,通过apt-get安装MariaDB,设置基本安全配置。完成这些步骤后,即可验证各组件的状态,为部署Java Web应用打下基础。
244 1
|
Java 应用服务中间件 Shell
Nginx+Keepalived+Tomcat 实现Web高可用集群
Nginx+Keepalived+Tomcat 实现Web高可用集群
372 0
|
负载均衡 应用服务中间件 Apache
Tomcat负载均衡原理详解及配置Apache2.2.22+Tomcat7
Tomcat负载均衡原理详解及配置Apache2.2.22+Tomcat7
230 3
|
消息中间件 监控 Kafka
Apache Kafka 成为处理实时数据流的关键组件。Kafka Manager 提供了一个简洁的 Web 界面
随着大数据技术的发展,Apache Kafka 成为处理实时数据流的关键组件。Kafka Manager 提供了一个简洁的 Web 界面,方便管理和监控 Kafka 集群。本文详细介绍了 Kafka Manager 的部署步骤和基本使用方法,包括配置文件的修改、启动命令、API 示例代码等,帮助你快速上手并有效管理 Kafka 集群。
205 0
|
Java API Apache
从零到英雄的蜕变:如何用Apache Wicket打造你的第一个Web应用——不仅是教程,更是编程之旅的启航
【9月更文挑战第4天】学习Apache Wicket这一开源Java Web应用框架是一段激动人心的旅程。本文将指导你通过Maven搭建环境,并创建首个“Hello, World!”应用。从配置`pom.xml`到实现`HelloWorldApplication`类,再到`web.xml`的设置,一步步教你构建与部署简单网页。适合初学者快速上手,体验其简洁API与强大组件化设计的魅力。
391 1
|
Java 应用服务中间件 Apache
浅谈Tomcat和其他WEB容器的区别
Tomcat是一款轻量级的免费开源Web应用服务器,常用于中小型系统及并发访问量适中的场景,尤其适合开发和调试JSP程序。它不仅能处理HTML页面,还充当Servlet和JSP容器。相比之下,物理服务器是指具备处理器、硬盘等硬件设施的服务器,如云服务器,其设计目标是在处理能力、稳定性和安全性等方面提供高标准服务。简言之,Tomcat专注于运行Java应用,而物理服务器则提供基础计算资源。
|
Java 应用服务中间件 Apache
使用IDEA修改Web项目访问路径,以及解决Apache Tomcat控制台中文乱码问题
本文介绍了在IntelliJ IDEA中修改Web项目访问路径的步骤,包括修改项目、模块、Artifacts的配置,编辑Tomcat服务器设置,以及解决Apache Tomcat控制台中文乱码问题的方法。
1065 0
使用IDEA修改Web项目访问路径,以及解决Apache Tomcat控制台中文乱码问题

推荐镜像

更多