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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
函数计算FC,每月15万CU 3个月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 带你读《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

相关文章
|
3月前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
167 2
|
2月前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
172 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
2月前
|
存储 人工智能 调度
容器服务:智算时代云原生操作系统及月之暗面Kimi、深势科技实践分享
容器技术已经发展成为云计算操作系统的关键组成部分,向下高效调度多样化异构算力,向上提供统一编程接口,支持多样化工作负载。阿里云容器服务在2024年巴黎奥运会中提供了稳定高效的云上支持,实现了子弹时间特效等创新应用。此外,容器技术还带来了弹性、普惠的计算能力升级,如每分钟创建1万Pod和秒级CPU资源热变配,以及针对大数据与AI应用的弹性临时盘和跨可用区云盘等高性能存储解决方案。智能运维方面,推出了即时弹性节点池、智能应用弹性策略和可信赖集群托管运维等功能,进一步简化了集群管理和优化了资源利用率。
|
1月前
|
监控 安全 Cloud Native
阿里云容器服务&云安全中心团队荣获信通院“云原生安全标杆案例”奖
2024年12月24日,阿里云容器服务团队与云安全中心团队获得中国信息通信研究院「云原生安全标杆案例」奖。
|
2月前
|
供应链 安全 Cloud Native
阿里云容器服务助力企业构建云原生软件供应链安全
本文基于2024云栖大会演讲,探讨了软件供应链攻击的快速增长趋势及对企业安全的挑战。文中介绍了如何利用阿里云容器服务ACK、ACR和ASM构建云原生软件供应链安全,涵盖容器镜像的可信生产、管理和分发,以及服务网格ASM实现应用无感的零信任安全,确保企业在软件开发和部署过程中的安全性。
|
2月前
|
人工智能 Kubernetes Cloud Native
阿里云容器服务,智算时代云原生操作系统
2024云栖大会,阿里巴巴研究员易立分享了阿里云容器服务的最新进展。容器技术已成为云原生操作系统的基石,支持多样化的应用场景,如自动驾驶、AI训练等。阿里云容器服务覆盖公共云、边缘云、IDC,提供统一的基础设施,助力客户实现数字化转型和技术创新。今年,阿里云在弹性计算、网络优化、存储解决方案等方面进行了多项重要升级,进一步提升了性能和可靠性。
|
3月前
|
Kubernetes Cloud Native Docker
云原生之旅:从传统架构到容器化服务的演变
随着技术的快速发展,云计算已经从简单的虚拟化服务演进到了更加灵活和高效的云原生时代。本文将带你了解云原生的概念、优势以及如何通过容器化技术实现应用的快速部署和扩展。我们将以一个简单的Python Web应用为例,展示如何利用Docker容器进行打包和部署,进而探索Kubernetes如何管理这些容器,确保服务的高可用性和弹性伸缩。
|
3月前
|
Kubernetes Cloud Native 开发者
云原生入门:从容器到微服务
本文将带你走进云原生的世界,从容器技术开始,逐步深入到微服务架构。我们将通过实际代码示例,展示如何利用云原生技术构建和部署应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和启示。
|
3月前
|
运维 Cloud Native 云计算
云原生之旅:Docker容器化实战
本文将带你走进云原生的世界,深入理解Docker技术如何改变应用部署与运维。我们将通过实际案例,展示如何利用Docker简化开发流程,提升应用的可移植性和伸缩性。文章不仅介绍基础概念,还提供操作指南和最佳实践,帮助你快速上手Docker,开启云原生的第一步。
|
3月前
|
Cloud Native 云计算 Docker
云原生技术的崛起:从容器化到微服务架构
云原生技术的崛起:从容器化到微服务架构

推荐镜像

更多