你好呀,我是歪歪。

前几天在 github 上冲浪的时候,发现了两个宝藏东西。

我也不藏着掖着了,拿出来给大家分享一下。

这两个宝藏是关于 arthas 和 SOFARegistry 的,这两个东西都是阿里开源的项目。

arthas 大家应该都比较耳熟能详了,知道它是阿里搞出来的一款 Java 诊断工具。

而 SOFARegistry 是个啥玩意?好像没怎么听说过呢?

我接触这个东西的时间也不算长,但是我大概知道它是个什么东西,我觉得是一个轮子,但是这个轮子还挺厉害的。

不着急,等下就给你摆一摆。

arthas

arthas 这个玩意,我都不记得我之前的文章中出现了多少次了。基本上都是关于它的使用实际操作案例或者说是官方提供的练手 Demo。

它的使用范围也还是非常的广泛:

那么,我在它的 github 上又发现了什么宝藏东西呢?

就藏在它的 issue 的 Labels 里面:

点开 Labels,你会发现有个叫做 user-case 的标签:

这个标签下的 issues,就是我想说的第一个宝藏:

https://github.com/alibaba/arthas/issues?page=1&q=label%3Auser-case

我给你截屏第一页的内容,你看看是不是很有一种想要点进去看看具体是啥的欲望:

比如给你看看工行的这个 user-case:

https://github.com/lyghzh/pub/blob/main/doc/%E5%B7%A5%E5%95%86%E9%93%B6%E8%A1%8C%E6%89%93%E9%80%A0%E5%9C%A8%E7%BA%BF%E8%AF%8A%E6%96%AD%E5%B9%B3%E5%8F%B0%E7%9A%84%E6%8E%A2%E7%B4%A2%E4%B8%8E%E5%AE%9E%E8%B7%B5.md

我之前其实一直认为大家会觉得 Arthas 在生产上运行其实是一件非常危险的事情。

它就是一把双刃剑,用的好了,早点下班,用的不好,说不定背个生产事故。

所以,采取因噎废食的方法,干脆就不使用了。

工行,作为一个银行,在这个方面的考虑肯定也更加的多。

在他们的落地困难点上,首当其冲的就是“信息安全”的问题,这是它们的基础红线,也是银行的立根之点:

那么它是怎么在生产上使用 Arthas 呢?

在这个 case 里面,给出了这个问题的答案。

我们设计了一套轻巧的架构,让开发人员以Web UI的方式,便捷、直观的使用各类在线诊断能力。那么我们是怎么做的呢?

基于 Arthas 的功能,再次封装了一个 web UI 页面出来,藏在这个页面背后的接口,可以对执行结果进行剪裁和修改,处理成 json 格式数据返回给平台做展示。

文章中除了介绍整体架构之外,还提供了实际使用的效果。

比如控制面板看起来就很眼熟的样子:

就是基于 Arthas 原生的响应,搞了一个展示页面。

页面上的这些数据都是 Arthas 返回的:

还有反编译的功能:

但是在文章中并没有看到热加载相关的内容,我猜肯定是对于这类危险的功能,从 web 页面上就进行了屏蔽。

在这个 issues 下面,我还发现别人提到另外一个类似的项目:

这是去哪儿开源的一个 Java 应用诊断工具:

不延伸了,学不过来了。

再比如这个案例:

https://github.com/alibaba/arthas/issues/1892

然后他使用 Trace 一点点的追踪时间消耗比较大的方法,再一点点的进行修复。

经过了四次优化之后,相同请求的调用链路耗时,从最开始的 343ms 降低到了 27ms,你说这不香吗?

然后,他给出了结论,也就是这次优化的点:

你可以发现其实都不是什么特别大的优化,就是一些我们平时在使用的细枝末节的东西。

最后,他还写了一个“强烈推荐”:动态追踪技术漫谈。

好吧,这个也是我很久之前就收藏了的网站,不藏着了。也拿出来一并分享了:

https://blog.openresty.com.cn/cn/dynamic-tracing/

这个博客里面的文章质量非常的高,博客的主人是章亦春,他是开源项目 OpenResty 的创始人,同时也是 OpenResty Inc. 公司的创始人和 CEO。

咱就是说,大佬背书,放心阅读。

这里我只是在第一个宝藏中随便挑了两个案例出来,剩下的你自己去挖掘吧。

SOFARegistry

SOFARegistry 是个啥?

其实我理解它就是一个注册中心的轮子。或者更具体一点的说就是具有阿里特色的 Eureka。

这是它的 github 地址:

https://github.com/sofastack/sofa-registry

你看到其中的 sofastack 了吗?

SOFARegistry 只是一个棋子,sofastack 才是棋盘。

这是一个 Stack,是一个技术栈,是一个金融领域的架构方案。

它下面的项目非常多,从主要项目的名称命名,什么 xxxBoot,xxxRPC,xxxRegistry 你就可以看出,用这些项目我们可以搭建出一个完整的项目:

关于 SOFARegistry 的宝藏也藏在它的 Labels 里面:

https://github.com/sofastack/sofa-registry/issues?q=is%3Aissue+is%3Aopen+label%3Aevent%2Fsource-code-analyze

这个叫做 event/source-code-analyze 的 Label,你别看没几个东西,但是里面全是源码分析。

而且是官方发起的活动,文章内容会有专人 review,力保准确性:

这次一共发布了 9 个源码解析的任务:

任务难度有高有低。根据任务难度有不同的奖励措施:

有机会成为社区的 Contributor 或者直接是 Member,还是相当有吸引力的。

比如我们看一下关于数据倒排索引的这个任务:

https://github.com/sofastack/sofa-registry/issues/202

它的 issues 描述里面也指出了需要写什么内容,去看哪一部分的代码。

指路已经指的很明确了。

最后解析文章提交的格式是 md 格式:

我们可以直接下载下来进行阅读。

到时候对于想要深入理解 SOFARegistry 的同学来说就是一个很好的切入口。

虽然 SOFARegistry 知道的人不对,但是我还是想把 SOFARegistry 的这个活动写出来,让更多的人知道他们有这样的活动。

因为我觉得这个活动非常的好,源码解析,是我看到一种全新的参与开源项目建设的方式。

最后,关于这两个宝藏,告诉我一个什么道理?

它告诉我:逛开源项目的时候要多注意它的 Labels,说不定藏着什么好东西。反正我以前是很少关注 Labels 的,我一直以为只有项目维护者才关心 Labels。

最后,文章首发于公众号[why技术],欢迎大家来关注呀,比心。

两个宝藏|关于我在github上冲浪时的一个小技巧。的更多相关文章

  1. github上传时出现error: src refspec master does not match any解决办法

    github上传时出现error: src refspec master does not match any解决办法 这个问题,我之前也遇到过,这次又遇到了只是时间间隔比较长了,为了防止以后再遇到类 ...

  2. Github作为图床的一个小坑

    Github作为图床的一个小坑 前言 听了少铭同学建议把github作为图床,结果遇到了一个小坑,总是显示不出来图片. 问题描述与解决 形如下的链接是显示不出来的: https://github.co ...

  3. 关于GitHub上传没有记录(小绿块不显示的问题)

    最近开始使用上github来上传保存自己在学习中所写过的代码,打算将自己每天的成果能有个保存,然后就利用上GitHub这么一个利器. 听说GitHub的那个绿块是用来记录每天的上传记录的,结果我将代码 ...

  4. 分享如何在github上为代码创建一个链接

    从自学前端到现在差不多一个月了,在此期间,一直有一种困惑,如何将自己电脑中编写的代码生成一个链接,以便可以发布呢?今天有幸被高人指点一二,现将其分享. 第一步,网上注册一个github账号 第二步,新 ...

  5. 【Django】git建仓上传时遇到的小问题

    根据教程 http://tutorial.djangogirls.org/zh/deploy/,在github上建仓上传项目文件. 执行到 git push -u origin master 时,输入 ...

  6. 关于我和Github不得不说的一些小事

    你好,我叫黄雅婷,学号是1413042031,网络工程142班.因为小时候家里有很多课外书,有关神话和科学方面的杂志和书籍等,所以从小就喜欢看书,现在比较不挑,什么书都喜欢看,就是给我本字典,我也能看 ...

  7. Jenkins构建从github上克隆时,报Host key verification failed.

    首先在本地通过CMD执行git clone xxxxx时,可以成功的通过免密(SSH_KEY)克隆下来代码,但是通过Jenkins克隆时,就报如下信息: Cloning into 'GitHub'.. ...

  8. 用Tortoisegit往GitHub上push时,失败并显示git did not exit cleanly (exit code 1),可能是GitHub的Email的原因

    之前我看到错误,总是没有耐心地读完整个错误,而是不假思索地搜索一部分错误,导致偏离正确轨道,相当于号错脉了,比如这里只是搜索git did not exit cleanly (exit code 1) ...

  9. github上传时出现error: src refspec master does not match any解决办法22

    1 error:src refspec master does not match any这个问题,我之前也遇到过,这次又遇到了只是时间间隔比较长了,为了防止以后再遇到类似问题,还是把这个方法简单记录 ...

随机推荐

  1. Java枚举使用笔记

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11833790.html Java枚举简单使用示例: package com.shineyue. ...

  2. 关于一些基础的dp——硬币的那些事(dp的基本引入)

    1.最少硬币问题大体题意: 有n种硬币,面值分别是v1,v2......vn,数量无限,输入一个非负整数s,选用硬币使其和为s,要求输出最少的硬币组合. 我们可以这样分析: 定义一个名为Min[s]的 ...

  3. Diary -「NOI 2021」酱油记

    雨幕浓稠 远近一白 是水雾弥漫的天 还是泡沫撑起的海   雨真大呢.   前几天去 ZH 中学集训没啥好记的,就从会合日开始叭. [Day -1]   逃出 ZH,掉入梦麟.(   高中的同学们忘记带 ...

  4. Solution -「ZJOI 2020」「洛谷 P6631」序列

    \(\mathcal{Description}\)   Link.   给定一个长为 \(n\) 的非负整数序列 \(\lang a_n\rang\),你可以进行如下操作: 取 \([l,r]\),将 ...

  5. Linux系统安装tomcat9服务(含jdk的安装)

    使用虚拟机上CentOS8系统. 1.安装tomcat的依赖jdk版本11 将jdk11解压至相应目录: 设置环境变量: 末尾添加: 更新配置文件: 验证: 补充使用yum安装jdk的方式: 1)查看 ...

  6. 操作系统实验一:进程管理(含成功运行C语言源代码)

    目录 操作系统实验一:进程管理 1.实验目的 2.实验内容 3.实验准备 3.1.1进程的含义 3.1.2进程的状态 3.1.3进程状态之间的转换 3.2 进程控制块PCB 3.2.1进程控制块的作用 ...

  7. [c语言]运算符的优先级与结合性

    c语言中运算符的优先级和结合性常常被人混淆一谈,本文目的在于简单谈谈两者的区别.本文举几个简单的例子说明,这些运算符也特别常用. 首先要明白的是:优先级决定表达式中各种不同的运算符起作用的优先次序:而 ...

  8. 智能化管理工具:商业智能BI

    ​BI(商业智能)是在ERP等信息化管理工具的基础上提出的,是基于信息技术构建的智能化管理工具,它实时地对ERP.CRM.SCM等管理工具生成的企业数据进行各种分析,并给出报告,帮助管理者认识企业和市 ...

  9. 思迈特软件Smartbi:利用大数据为产业赋能,且看这家风电巨头的实践之路!

    随着大数据技术成为各行各业转型升级的"新动能",数字化风电.智慧风电场也成为风电行业的高频词,大数据已经逐渐被用于风场从测风到运维的各个环节. Smartbi的某客户是国内风电装备 ...

  10. 【C# task】TaskContinuationOptions 位枚举

    TaskContinuationOptions 根据 TaskContinuationOptions 的不同,出现了三个分支 LongRunning:独立线程,和线程池无关 包含 PreferFair ...