关于云原生:一不小心它成为了-GitHub-Alibaba-Group-下-Star-最多的开源项目

4次阅读

共计 3928 个字符,预计需要花费 10 分钟才能阅读完成。

起源 | 阿里巴巴云原生公众号

Arthas Star 冲破 2.5 万啦

  • 开源地址:_h_ttps://github.com/alibaba/arthas
  • 文档:https://arthas.aliyun.com/doc/

随着微服务的风行,利用更加轻量和高效,然而带来的窘境是线上问题排查越来越简单艰难。传统的 Java 排查问题,须要重启利用再进行调试,然而重启利用之后现场会失落,问题难以复现。

因而自 2018 年 9 月,阿里巴巴开源了久经考验,深受开发者青睐的利用诊断利器 Arthas。

Arthas 通过翻新的字节码织入技术,能够在利用无需重启时,查看调用上下文,高效排查问题;联合火焰图,能够间接定位热点,发现性能瓶颈;通过字节码替换,实现在线热更新代码;同时反对黑屏化和白屏化诊断,能够连贯诊断大规模的集群。

在 2020 年 5 月时,咱们做了 Arthas Star 破 2 万的回顾:

  • 精益求精 | 开源利用诊断利器 Arthas GitHub Star 冲破两万

冬去春又来,转眼间一年过来了,Arthas 的 Star 数冲破 2.5 万了~

上面来回顾 Arthas 去年的一些数据和工作。

Arthas 过来一年的数据

1. Arthas Github Star 数冲破 2.5W

2. Arthas Github Contributors 数

Arthas 的开源贡献者人数从 85 增长到 119,非常感谢他们的工作:

3. Arthas 注销公司数从 117 增长到 151 家

过来一年,Arthas 在工商银行、中原银行、朴朴科技、贝壳找房、斗鱼等生产场景落地,欢送更多用户注销:https://github.com/alibaba/arthas/issues/111

  • 工商银行打造在线诊断平台的摸索与实际

4. Arthas 在线教程学习人次:133,996,学习时长:51798 小时

人均体验时长 23 分钟以上。

5. Arthas zip 包月均下载 6.5w 次

上线了 Arthas 新网站之后,咱们统计均匀每个月 arthas zip 包下载 6.5 万次。所以激进预计,Arthas 均匀每个月诊断 6W+ 台机器。

6. Arthas 在 ATA 年度技术搜寻排行第 6

阿里外部的技术论坛 ATA 公布年度热搜关键词 top 100,Arthas 作为 Java 诊断神器是惟一进入 top 10 的非团体指定产品。Arthas 在阿里外部的受欢迎水平可见一斑。

Arthas 过来一年的工作

在过来的一年里,Arthas 公布了 19 个 release 版本,做了大量的改良,上面列出一些重点:

  • 全新的 Bytekit 字节码加强框架
  • 残缺反对 HTTP API,所有命令都实现适配
  • Tenlet/WebSocket/HTTP API 反对对立的鉴权计划
  • 全新的热更新命令 retransform
  • Tunnel Server 反对集群部署,反对查看火焰图,外部上线反对流计算利用
  • 减少 arthas-spring-boot-starter 模块,并反对 endpoint,用户能够用编程形式引入 Arthas
  • 上线 arthas.aliyun.com 网站,更好服务国内用户

1. 全新的 Bytekit 字节码加强框架

Github:https://github.com/alibaba/bytekit

Bytekit 框架能够通过简洁的注解来实现字节码加强,具体性能点:

  • 丰盛的注入点反对
  • 动静的 Binding
  • 可编程的异样解决
  • 比方在函数入口做加强:
    public static class SampleInterceptor {
        @AtEnter(inline = true, suppress = RuntimeException.class, 
suppressHandler = PrintExceptionSuppressHandler.class)
        public static void atEnter(@Binding.This Object object, 
                @Binding.Class Object clazz,
                @Binding.Args Object[] args, 
                @Binding.MethodName String methodName,
                @Binding.MethodDesc String methodDesc) {System.out.println("atEnter, args[0]:" + args[0]);
        }
  • inline 反对
  • invokeOrigin 技术

比方在 Dubbo Filter 里插入 APM 代码:

@Instrument(Interface = "org.apache.dubbo.rpc.Filter")
public abstract class DubboFilter_APM {public Result invoke(Invoker<?> invoker, Invocation invocation) 
throws RpcException {
        System.err.println("invoker class:" + 
this.getClass().getName());
        Result result = InstrumentApi.invokeOrigin();
        return result;
    }
}

通过 Bytekit 框架,Arthas:

  • 解决了多个 watch/trace 命令会反复某个类的问题
  • 对立应用一个 Transformer,解决了多个加强命令抵触问题
  • 实现了动静加强性能,通过指定 ListenerId,watch/trace 命令能够一起合作

2. HTTP API 反对

  • https://arthas.aliyun.com/doc/http-api.html

Http API 提供相似 RESTful 的交互接口,申请和响应均为 JSON 格局的数据。绝对于 Telnet/WebConsole 的输入非结构化文本数据,Http API 能够提供结构化的数据,反对更简单的交互性能。

3. 对立鉴权

在明天,利用的平安越来越受到重视。因而,诊断工具在晋升诊断效率的同时,也要留神本身的安全性。
因为 Arthas 减少了 auth 命令,并且对立了 Telnet/WebSocket/HTTP API 的鉴权,参考:

  • https://arthas.aliyun.com/doc/auth.html

4. 全新的热更新命令 retransform

  • https://arthas.aliyun.com/doc/retransform.html

之前,Arthas 里的 redefine 命令曾经反对热更新性能,然而容易和 jad 命令或者其它 java agent 抵触。因而,咱们开发了全新的 retransform 命令。

retransform 命令和 watch/trace 命令等是同一机制下实现的。如果对同一个类执行多个命令,则会通过上面的解决:

retransform 命令 -> watch 命令 -> trace 命令 

能够看到,retransform 命令执行后,不会影响 watch/trace 命令。

5. Tunnel Server 反对集群部署

  • https://arthas.aliyun.com/doc/tunnel.html

通过 Arthas Tunnel Server/Client 能够远程管理 / 连贯多个 Agent。Tunnel Server 新减少性能:

  • 反对集群部署,反对 redis 存储
  • 反对 http proxy,查看火焰图

6. arthas-spring-boot-starter

  • https://arthas.aliyun.com/doc/spring-boot-starter.html

通过 arthas-spring-boot-starter,用户能够间接以编程形式引入 Arthas,联合 Tunnel Server,能够轻松实现集群化治理。

7. 全新的网站 arthas.aliyun.com

  • https://arthas.aliyun.com/

之前,Arthas 的文档放在 github io 的域名下,常常拜访失败。为了改良访问速度,因而,咱们建设了全新网站,用户拜访文档和下载 Arthas,都更加方便快捷。

Arthas 有奖征文活动

Arthas 征文活动一共办了七期,共收到投稿 30+ 篇,上面是一些优良的文章:

  • 工商银行打造在线诊断平台的摸索与实际
  • Spring Boot 微服务性能降落九成!应用 Arthas 定位根因
  • 是谁在调用我?应用 arthas+jprofiler 做简单链路剖析
  • Arthas 定位 Dubbo 手动注册 Eureka 异样
  • 用 Arthas 神器来诊断 HBase 异样过程

有奖征文活动还在持续,欢送大家分享~

投稿地址:http://alibabacloud.mikecrm.com/9khcRrs

Arthas 布局

去年,咱们布局了三个指标:

  • RESTful API 反对
  • 全新的字节码框架 ByteKit
  • 插件化反对

实际上实现了 2.5 个,其中插件化反对,咱们孵化出全新的 One Java Agent 我的项目来实现。

  • https://github.com/alibaba/on…

One Java Agent 我的项目的指标:

  • 提供插件化反对,对立治理泛滥的 Java Agent
  • 插件反对 install/unstall,须要插件方实现接口
  • 反对传统的 java agent,即曾经开发好的 java agent

从开源到当初,Arthas 在 Github 上一共有 1200 多个 Issue,最近咱们回收了第一个 Issue:

在一直加强性能的同时,咱们始终在继续改良 Arthas 的易用性。

  • 不断改进帮忙文档
  • 上线 arthas.aliyun.com,改良国内用户访问速度
  • 为大部分命令筹备交互式的在线教程

咱们置信:赠人玫瑰之手,经久犹有余香,感激宽广用户的反对和青睐。

欢送登陆 start.aliyun.com 知口头手实验室体验 Arthas 57 个入手试验:
https://start.aliyun.com/hand…

Arthas 试验预览

正文完
 0