===================================================================================
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 分钟以上。
上线了 Arthas 新网站之后,我们统计平均每个月 arthas zip 包下载 6.5 万次。所以保守估计,Arthas 平均每个月诊断 6W+ 台机器。
阿里内部的技术论坛 ATA 发布年度热搜关键词 top 100,Arthas 作为 Java 诊断神器是唯一进入 top 10 的非集团指定产品。Arthas 在阿里内部的受欢迎程度可见一斑。
===================================================================================
在过去的一年里,Arthas 发布了 19 个 release 版本,做了大量的改进,下面列出一些重点:
-
全新的 Bytekit 字节码增强框架
-
完整支持 HTTP API,所有命令都完成适配
-
Tenlet/WebSocket/HTTP API 支持统一的鉴权方案
-
全新的热更新命令 retransform
-
Tunnel Server 支持集群部署,支持查看火焰图,内部上线支持流计算应用
-
增加 arthas-spring-boot-starter 模块,并支持 endpoint,用户可以用编程方式引入 Arthas
-
上线 arthas.aliyun.com 网站,更好服务国内用户
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 命令可以一起协作
Http API 提供类似 RESTful 的交互接口,请求和响应均为 JSON 格式的数据。相对于 Telnet/WebConsole 的输出非结构化文本数据,Http API 可以提供结构化的数据,支持更复杂的交互功能。
在今天,应用的安全越来越受到重视。因此,诊断工具在提升诊断效率的同时,也要注意自身的安全性。
因为 Arthas 增加了 auth 命令,并且统一了 Telnet/WebSocket/HTTP API 的鉴权,参考:
先自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以扫码领取!
![img](https://i-blog.csdnimg.cn/blog_migrate/9040502e850eda833b47ebb644fb3d75.jpeg)
最后
这份文档从构建一个键值数据库的关键架构入手,不仅带你建立起全局观,还帮你迅速抓住核心主线。除此之外,还会具体讲解数据结构、线程模型、网络框架、持久化、主从同步和切片集群等,帮你搞懂底层原理。相信这对于所有层次的Redis使用者都是一份非常完美的教程了。
整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~
你的支持,我的动力;祝各位前程似锦,offer不断!!!
;" />
最后
这份文档从构建一个键值数据库的关键架构入手,不仅带你建立起全局观,还帮你迅速抓住核心主线。除此之外,还会具体讲解数据结构、线程模型、网络框架、持久化、主从同步和切片集群等,帮你搞懂底层原理。相信这对于所有层次的Redis使用者都是一份非常完美的教程了。
[外链图片转存中…(img-h93JyClG-1711481710251)]
整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~
你的支持,我的动力;祝各位前程似锦,offer不断!!!
需要更多Java资料的小伙伴可以帮忙点赞+关注,点击传送门,即可免费领取!