阿里云产品专家陶炳哲:Java应用最佳实验

news2024/9/28 9:30:29

2022 年 9 月 28 日,阿里云用户组(AUG)第 11 期活动在深圳举办。活动现场,阿里云产品专家陶炳哲向参会企业分享了《Java 应用最佳实验》。本文根据演讲内容整理而成。

大家好,我是陶炳哲,是阿里云产品专家。这是我做可观测的第八个年头了。开始其实跟大家一样,我也是做运维出身的,今天想和大家分享一下我们阿里的最佳实践,同时也一起探讨一下我们后面的一些方向。

首先解释一个概念问题,其实也是我最早的题目 《当我们在讨论可观测的时候,我们在讨论什么》。我相信大家对监控的概念非常熟悉了,从这几年开始突然流行起来可观测的概念,它和监控有什么不一样呢?

监控-APM-可观测 云原生时代的基础设施

在这里插入图片描述

从这张图上我们可以看到从监控到可观测演变的一个路径,可能有一些参加工作比较早的同学用过像 Zabbix、Nagios 这样的产品,它们是我们最早的基础监控软件,主要关注的是机器指标,关注我们当前机器的 CPU 高不高,内存高不高,进程是否还存在,他给我们提供的就是对于机器环境的监控能力,这个在早期单机环境下是十分有效的。

随着这些年整体技术的演进,出现了基础设施上云、应用微服务化、容器化等等趋势,仅仅这些机器指标不再能有效衡量我们的服务健康,需要引入类似 log、trace 等等不同的数据,想要衡量服务的健康程度这件事情变得更复杂了。一句话总结,就是管的集群变大了,变复杂了,数据也更多了。

同时随着 devops 等概念的流行,我们希望每个同学都具备端到端处理问题的能力,监控工具不应该只能告诉我哪里有问题,还应当可以协助我去定位和诊断问题。

这也是为什么会从监控演变成我们说的可观测的原始动力,所以我在这里提出来我认为的一个合格可观测平台和传统监控工具最大的 2 个区别:

第一个是统一,可观测平台应当是各个传统监控工具的有机结合,把同时具备 logs/trace/metrics 三类数据,并且他们之间有充分的关联,用户可以根据自己的需求对数据继续分析。
第二个是专业,可观测平台具备能完成发现问题,到定位问题,诊断问题的闭环,而不是仅仅停留在发现问题,最好还可以提供一定的专家经验,辅助用户快速定位问题。

云原生可观测需求和数据支撑

在这里插入图片描述

那么再具体一点,可观测怎么样解决业务问题,我把它分成了三个部分。

首先,我们需要对业务体验做一个定义,我们的业务需要用哪些指标来衡量它目前是不是正常的运行。

比如说淘宝主页,我们每分钟成交的订单数是不是一个符合我们预期的。如果他有个不符合预期,是因为我们的系统产生问题了,还是说我们业务流程上出现了问题,这个时候我们需要通过我们定义出来的业务指标来衡量业务的正常程度,然后在拆解到一些具体问题,比如 app 的崩溃,页面的白屏等等。

然后中间这一层就是我们的后端的服务的稳定性。后端的稳定性我们把它分为 2 部分:一部分是应用本身的稳定性,另一部分是应用依赖的中间件服务。

我们在处理这一层的问题时候,应当首先关注应用本身的指标,类似响应时间,错误率等等,然后通过应用本身的数据在关联中间件的指标去看,当然如果你是一个 dba 或者中间件的维护方,反过来也可以。目前这一层也往往是最经常发生问题的一层,因为各种业务复杂的逻辑往往都集中在这部分,同时随着各种微服务框架的使用,问题往往不单单发生在一个单机上,而是会是一串请求拼接而成的调用链,在这里我们一般重点强调 2 个方向的建设。

第一个是 tracing 的能力,我们最好是选择跟随开源的 opentracing 协议方便我们将各种业务数据更好的在调用链上定义出来。

第二个是 Profiling 的能力,对于 OOM,死锁等严重问题,往往通过指标或者日志很难排查,我们需要重点建设 Profiling 能力去解决他们。

最下面一层,也就是我们传统监控的范围,传统的 cpu、内存、网络、磁盘等数据。这些数据往往作为我们上层业务层层排查的排除项,用于排除硬件相关问题,同时也可以作为我们弹性扩缩容的辅助指标,帮我们更好地建设业务稳定性。

基于阿里云产品构建一站式可观测解决方案

在这里插入图片描述

刚才讲到,可观测基本上就是各种各样的指标的作用和建设优先级,如果仅仅是按此把指标建设完成,我认为它还并不是一个完整的可观测平台,就像我们做大数据一样,我们也需要一个统一的可观测数据体系。

在 ARMS 的方案里面我们选择 prometheus 作为我们 metrics 的统一存储,sls 作为我们日志/trace 数据的统一存储,Grafana 作为我们的统一大盘,同时自建了一个集成诊断和告警的 AIOPS 中心用于对数据进行智能分析。

对于各个不同的监控对象和层次,我们基于这套体系来进行建设,比如对于某一个应用的监控,你可以选择使用开源/我们 arms 提供的探针来进行数据上报,我们会把数据统一存储在 prometehus 和 sls 并对用户开放,然后通过 Grafana 展示我们已经预置好的各种大盘,同时通过 aiops 中心智能的巡检数据产生各种告警事件。

建设可见、可用、可诊断的可观测体系

在这里插入图片描述

最后一部分其实还是回到我们的核心问题,有了这样的平台,我们如何通过它快速提升我们的问题解决能力。

第一个阶段:发现问题

你需要把我们最关心的那些业务指标(类似访问量)定义出来,然后把它配成一些基础的业务告警,让我们能在问题出现的第一时间去发现。

第二个阶段:定位问题

定位问题的时候,我们需要能用到像类似 APM 的工具和一些 Logs 工具,能把这些问题迅速缩小范围,到哪一个接口,甚至哪一个节点上面代码操作。然后我们就可以根据这个范围,去和具体的负责人确认,建立我们的问题作战室,进行问题的诊断。

第三个阶段:诊断问题

到这个阶段,我们通过数据已经确认了问题的范围,需要一些可以一锤定音的结论性证据,这个时候就需要用到我们刚才提到的 profiling 工具,来对数据进行进一步的诊断,场景的 profiling 工具有类似 jstrack,jmap,mat 等工具。

这里重点要强调两个方面的建设:

第一个是这些工具的使用和结果解析是有一定难度的,我们可以通过白屏化的方式降低使用难度,同时对于返回的数据进行进一步加工,比如 jstack 的结果往往会包含大量 java 本身代码,这些数据对我们定位问题是没有帮助的,我们可以有选择地忽略他们。

第二个是这些工具的使用往往需要较高的性能开销,一般是不能常态开启的,但是线上又不一定能够稳定复现,这时候我的建议是引入类似 JFR 这样的 Continuous Profiling 方案,作为我们 Profiling 能力的补充。(正文完)

阿里云产品专家陶炳哲:Java应用最佳实验

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/139583.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

React(coderwhy)- 02(函数组件)

React的组件化开发 组件化是一种分而治之的思想: 如果我们将一个页面中所有的处理逻辑全部放在一起,处理起来就会变得非常复杂,而且不利于后续的管理以及扩展。 但如果,我们讲一个页面拆分成一个个小的功能块,每个功能…

191:vue+openlayers 选择feature,固定按钮删除selected feature

第191个 点击查看专栏目录 本示例的目的是介绍如何在vue+openlayer中使用select来选择feature元素,通过按键来删除selected的feature。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共95行)相关API参考专栏目标…

【回答问题】ChatGPT上线了!给我推荐20个比较流行的ROS(Robot Operating System)算法模型

给我推荐20个比较流行的ros算法模型 很好,下面是20个比较流行的ROS(Robot Operating System)算法模型: 便携式机器人操作系统(PR2) 全向轮操作系统(TurtleBot) 机器人操作系统(ROS)用于机器人操作 基于空间相对导航的机器人操作系统(SLAM) 自适应机器人…

全网惟一面向软件测试人员的Python基础教程-在Python中如何对列表进行增删改排序?

全网惟一面向软件测试人员的Python基础教程 起点:《python软件测试实战宝典》介绍 第一章 为什么软件测试人员要学习Python 第二章 学Python之前要搞懂的道理 第三章 你知道Python代码是怎样运行的吗? 第四章 Python数据类型中有那些故事呢?…

IB成绩可以申请英国大学吗?

我们都知道ALEVEL课程是英国正统的高中课程,几乎被所有英国学校作为大学招收新生的入学课程。 那么,IB课程作为与ALEVEL课程一样享受极高国际知名度的课程,是否也能够申请英国大学呢?可以确定的告诉大家,用IB课程申请英…

高压放大器的组成部分有哪些(功率放大器的性能好坏)

虽然很多电子工程师经常使用高压放大器,但是对于高压功率放大器的组成和使用都不太清楚,下面来介绍一下高压放大器的组成部分以及如何验证功率放大器的性能好坏。 一、高压放大器的介绍 高压放大器是一种理想的功率放大器,可以放大交流和直流…

[C语言]和我一起来认识“整型在内存中的存储”

目录 1.整型类型中的成员 2.整型在内存中的存储 2.1原码,反码,补码 2.2整型在内存中以补码存放数据 2.3大小端 2.3.1大小端的介绍 2.3.2通过编程判别当前机器的字节序 1.整型类型中的成员 (unsigned为无符号类型,signed为有符号类型) 1.c…

【java集合】HashMap源码解析(基于JDK1.8)

一、Hashmap简介 类继承关系图如下: HashMap实现了三个接口,一个抽象类。主要的方法都在Map接口中,AbstractMap抽象类实现了Map方法中的公共方法,例如:size(),containsKey(),clear()等,主要方法由子类自己实现。 Ha…

Linux驱动之系统移植----uboot移植_修改网络驱动(uboot无设备树版本)

uboot版本:uboot.2016.03 开发板:100ask_imx6ull_pro 修改网络驱动 须知 I.MX6UL/ULL内部有个以太网 MAC外设,也就是 ENET,需要外接一个 PHY芯片来实现网络通信功能,也就是内部 MAC外部 PHY芯片的方案。(一个MAC可对应N个PHY芯片, PHY有地址…

5G NR标准 第11章 多天线传输

第11章 多天线传输 多天线传输是 NR 的关键组成部分,尤其是在较高频率下。 本章一般性地介绍了多天线传输的背景,然后详细描述了 NR 多天线预编码。 11.1 简介 使用多个天线进行传输和/或接收可以在移动通信系统中提供巨大的好处。 发射机和/或接收…

女友:不跟我解释清楚 Linux I/O 晚上你就睡沙发吧

目录阻塞 I/O非阻塞 I/OI/O复用信号驱动 I/O异步 I/O总结I/O 其实就是 input 和 output(输入输出) 在计算机操作系统中对应数据流的输入与输出,在 Linux 中,既有文件的 I/O,也有网络 I/O 无论是文件 I/O 还是网络 I/…

【大厂高频真题100题】《整数转罗马数字》 真题练习第21题 持续更新~

整数转罗马数字 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列…

【解决方案】智慧城管非现场执法系统

通过自建摄像头或利用辖区现有监控摄像头,利用人工智能技术,通过深度学习算法,系统能够全天候自动识别和采集城管违章行为,实现店外经营智能分析、无证游商智能分析、乱堆物堆料智能分析、暴露垃圾等场景的智能分析,从…

黄金分析师职级如何评定?初级、高级如何划分?

自从中国加入WTO以后,对外贸易和境外投资持续高速增长,为国家带来了了巨额外汇积累。发展黄金市场、提高黄金投资需求,成为我国应对国际金融风险显现和美元贬值的重要举措。然而,黄金投资市场健康、持续的发展,需要大量…

shell的模拟实现

目录 整体框架分析 代码演示 代码分析 整体框架分析 考虑下面这个与shell典型的互动: [xzyecs-333953 date16]$ ls makefile mycmd mycmd.cpp myexec myexec.c test.py [xzyecs-333953 date16]$ psPID TTY TIME CMD 21919 pts/0 00:00:00 bash …

jmeter之数据库配置及修改(工作日记3)

首先,jmeter要配置数据库需要安装 jdbc.jar包 官网连接:https://dev.mysql.com/downloads/ 步骤1: 步骤二: 步骤三: 步骤四: 接着我们去jmeter导入此jar包: 然后我们就可以在jmeter中去…

CSS3 多列布局

文章目录CSS3 多列布局概述常用属性使用column-count 列数column-width 列宽column-gap 间距column-rule 边框column-span 跨列案例瀑布流布局CSS3 多列布局 概述 在CSS3之前,如果想要设计类似报纸那样的多列布局,有两种方式可以实现:一种是…

kaggle平台学习复习笔记 | pandas

目录1.Creating, Reading and Writing2.Indexing, Selecting & Assigning3.Summary Functions and Maps4.Grouping and Sorting5.Data Types and Missing Values6.Renaming and Combining获得开展独立数据科学项目所需的技能。 1.Creating, Reading and Writing DataFram…

安全帽识别算法技术原理

应用背景:安全帽作为一种最常见和实用的个人防护用具,能够有效地防止和减轻外来危险源对头部的伤害。但在现场操作过程中,安全帽的佩戴很容易人为忽略,引发了不少人身伤害事故。为了保证工作人员都能在作业中佩戴安全帽&#xff0…

CentOS/Red Hat 安装cuDNN

创建于:2023.01.04 修改于:2023.01.04 文章目录1、找到cuDNN版本号2、下载cuDNN3、安装cuDNN4、参考资料本文是在Linux Red Hat下安装的cuDNN,且假定您已经安装好了NVIDIA驱动、CUDA。 本文是在CUDA 11.2 Red Hat条件下安装的cuDNN。 1、找…