阿里程序員常用的 15 款開(kāi)發(fā)者工具
這篇文章分享了 15 個(gè)阿里程序員常用的工具,其中很多我們都很熟悉比如Arthas(Java線上診斷工具) 、EasyExcel(高性能Excel處理)、Cloud Toolkit(IDE插件,一鍵部署) 等等。大概看了一下,大部分我認(rèn)出來(lái)的工具質(zhì)量都挺高的,部分我還沒(méi)有聽(tīng)說(shuō)過(guò)比如 ChaosBlade。我去網(wǎng)上搜索了一下發(fā)現(xiàn) ChaosBlade 還算比較出名,不是僵尸工具。
從人工到自動(dòng)化,從重復(fù)到創(chuàng)新,技術(shù)演進(jìn)的歷程中,伴隨著開(kāi)發(fā)者工具類(lèi)產(chǎn)品的發(fā)展。
阿里巴巴將自身在各類(lèi)業(yè)務(wù)場(chǎng)景下的技術(shù)積淀,通過(guò)開(kāi)源、云上實(shí)現(xiàn)或工具等形式對(duì)外開(kāi)放,本文將精選了一些阿里巴巴的開(kāi)發(fā)者工具,希望能幫助開(kāi)發(fā)者們提高開(kāi)發(fā)效率、更優(yōu)雅的寫(xiě)代碼。
由于開(kāi)發(fā)者涉及的技術(shù)領(lǐng)域眾多,筆者僅從自己熟悉的領(lǐng)域,以后端開(kāi)發(fā)者的視角盤(pán)點(diǎn)平時(shí)可能用得到的工具。每個(gè)工具按照以下幾點(diǎn)進(jìn)行介紹:
-
工具名稱和簡(jiǎn)介
-
使用場(chǎng)景
-
使用教程
-
獲取方式
一、Java 線上診斷工具 Arthas
Arthas是阿里巴巴 2018 年 9 月開(kāi)源的一款 Java 線上診斷工具。
工具的使用場(chǎng)景:
-
這個(gè)類(lèi)從哪個(gè) jar 包加載的?為什么會(huì)報(bào)各種類(lèi)相關(guān)的 Exception?
-
我改的代碼為什么沒(méi)有執(zhí)行到?難道是我沒(méi) commit?分支搞錯(cuò)了?
-
遇到問(wèn)題無(wú)法在線上 debug,難道只能通過(guò)加日志再重新發(fā)布嗎?
-
線上遇到某個(gè)用戶的數(shù)據(jù)處理有問(wèn)題,但線上同樣無(wú)法 debug,線下無(wú)法重現(xiàn)!
-
是否有一個(gè)全局視角來(lái)查看系統(tǒng)的運(yùn)行狀況?
-
有什么辦法可以監(jiān)控到 JVM 的實(shí)時(shí)運(yùn)行狀態(tài)?
Arthas 支持 JDK 6+,支持 Linux/Mac/Windows,采用命令行交互模式,同時(shí)提供豐富的 Tab 自動(dòng)補(bǔ)全功能,進(jìn)一步方便進(jìn)行問(wèn)題的定位和診斷。
使用教程:
-
基礎(chǔ)教程:
https://alibaba.github.io/arthas/arthas-tutorials?language=cn&id=arthas-basics
-
進(jìn)階教程:
https://alibaba.github.io/arthas/arthas-tutorials?language=cn&id=arthas-advanced
獲取方式:(開(kāi)源)
開(kāi)源地址:
https://github.com/alibaba/arthas
二、IDE 插件 Cloud Toolkit
Cloud Toolkit 是一款 IDE 插件,可以幫助開(kāi)發(fā)者更高效地開(kāi)發(fā)、測(cè)試、診斷并部署應(yīng)用。通過(guò) Cloud Toolkit,開(kāi)發(fā)者能夠方便地將本地應(yīng)用一鍵部署到任意機(jī)器(本地或云端),并內(nèi)置 Arthas 診斷、高效執(zhí)行終端命令和 SQL 等,提供 IntelliJ IDEA 版,Eclipse 版,PyCharm 版和 Maven 版。
工具的使用場(chǎng)景:
-
每次修改完代碼后,是否正在經(jīng)歷反復(fù)地打包?
-
在 Maven 、Git 以及其他運(yùn)維腳本和工具的之間頻繁切換?
-
采用 SCP 工具上傳?使用 XShell 或 SecureCRT 登錄服務(wù)器?替換部署包?重啟?
-
文件上傳到服務(wù)器指定目錄,在各種 FTP、SCP 工具之間頻繁切換?
使用教程:
-
IntelliJ IDEA 版:
https://help.aliyun.com/document_detail/98762.html
-
Eclipse 版:
https://help.aliyun.com/document_detail/29970.html
-
PyCharm 版:
https://help.aliyun.com/document_detail/112740.html
-
Maven 版:
https://help.aliyun.com/document_detail/108682.html
獲取方式:(免費(fèi))
工具地址:
https://www.aliyun.com/product/cloudtoolkit
三、混沌實(shí)驗(yàn)注入工具 ChaosBlade
ChaosBlade 是一款遵循混沌工程實(shí)驗(yàn)原理,提供豐富故障場(chǎng)景實(shí)現(xiàn),幫助分布式系統(tǒng)提升容錯(cuò)性和可恢復(fù)性的混沌工程工具,可實(shí)現(xiàn)底層故障的注入,提供了延遲、異常、返回特定值、修改參數(shù)值、重復(fù)調(diào)用和 try-catch 塊異常等異常場(chǎng)景。
工具的使用場(chǎng)景:
-
微服務(wù)的容錯(cuò)能力不易衡量?
-
容器編排配置是否合理無(wú)法驗(yàn)證?
-
PaaS 層健壯性的測(cè)試工作無(wú)從入手?
使用教程:
https://github.com/chaosblade-io/chaosblade/wiki/新手指南
獲取方式:(開(kāi)源)
開(kāi)源地址:
https://github.com/chaosblade-io/chaosblade/wiki/新手指南
四、Java 代碼規(guī)約掃描插件
該插件用于檢測(cè) Java 代碼中存在的不規(guī)范的位置,并給予提示。規(guī)約插件是采用 Kotlin 語(yǔ)言開(kāi)發(fā)。
使用教程:
-
IDEA插件使用文檔:
https://github.com/alibaba/p3c/wiki/IDEA插件使用文檔
-
Eclipse插件使用文檔:
https://github.com/alibaba/p3c/wiki/Eclipse插件使用文檔
獲取方式:(開(kāi)源)
開(kāi)源地址:
https://github.com/alibaba/p3c
五、應(yīng)用實(shí)時(shí)監(jiān)控工具 ARMS
ARMS 是一款 APM 類(lèi)的監(jiān)控工具,提供前端、應(yīng)用、自定義監(jiān)控 3 類(lèi)監(jiān)控選項(xiàng),可快速構(gòu)建實(shí)時(shí)的應(yīng)用性能和業(yè)務(wù)監(jiān)控能力。
工具的使用場(chǎng)景:
-
晚上 10 點(diǎn)收到 37 報(bào)警信息,你卻無(wú)從下手?
-
當(dāng)我們發(fā)現(xiàn)問(wèn)題的時(shí)候,客戶/業(yè)務(wù)方已經(jīng)發(fā)起投訴?
-
每個(gè)月花幾十萬(wàn)買(mǎi)服務(wù)器,卻無(wú)法保障用戶體驗(yàn)?
使用教程:
-
前端監(jiān)控接入:
https://help.aliyun.com/documentdetail/106086.html
-
應(yīng)用監(jiān)控接入:
https://help.aliyun.com/documentdetail/63796.html
-
自定義監(jiān)控:
https://help.aliyun.com/document_detail/47474.html
獲取方式:(收費(fèi))
工具地址:
https://www.aliyun.com/product/arms
六、靜態(tài)開(kāi)源站點(diǎn)搭建工具 Docsite
Docsite 一款集官網(wǎng)、文檔、博客和社區(qū)為一體的靜態(tài)開(kāi)源站點(diǎn)的解決方案,具有簡(jiǎn)單易上手、上手不撒手的特質(zhì),同時(shí)支持 react 和靜態(tài)渲染、PC端和移動(dòng)端、支持中英文國(guó)際化、SEO、markdown 文檔、全局站點(diǎn)搜索、站點(diǎn)風(fēng)格自定義、頁(yè)面自定義等功能。
使用教程:
https://docsite.js.org/zh-cn/docs/installation.html
獲取方式:(開(kāi)源)
項(xiàng)目地址:
https://github.com/txd-team/docsite
七、Android 平臺(tái)上的秒級(jí)編譯方案 Freeline
Freeline 可以充分利用緩存文件,在幾秒鐘內(nèi)迅速地對(duì)代碼的改動(dòng)進(jìn)行編譯并部署到設(shè)備上,有效地減少了日常開(kāi)發(fā)中的大量重新編譯與安裝的耗時(shí)。Freeline 最快捷的使用方法就是直接安裝 Android Studio 插件。
使用教程:
https://github.com/alibaba/freeline/blob/master/README-zh.md
獲取方式 :(開(kāi)源)
項(xiàng)目地址:
https://github.com/alibaba/freeline
八、性能測(cè)試工具 PTS
PTS 可以模擬大量用戶訪問(wèn)業(yè)務(wù)的場(chǎng)景,任務(wù)隨時(shí)發(fā)起,免去搭建和維護(hù)成本,支持 JMeter 腳本轉(zhuǎn)化為 PTS 壓測(cè),同樣支持原生 JMeter 引擎進(jìn)行壓測(cè)。
使用教程:
https://help.aliyun.com/document_detail/70290.html
獲取方式:(收費(fèi))
工具地址:
https://www.aliyun.com/product/pts
九、云效開(kāi)發(fā)者工具 KT
KT 可以簡(jiǎn)化在 Kubernetes 下進(jìn)行聯(lián)調(diào)測(cè)試的復(fù)雜度,提高基于 Kubernetes 的研發(fā)效率。
使用教程:
https://yq.aliyun.com/articles/690519
獲取方式:(免費(fèi))
工具地址:
https://yq.aliyun.com/download/3393
十、架構(gòu)可視化工具 AHAS
AHAS 為 K8s 等容器環(huán)境提供了架構(gòu)可視化的功能,同時(shí),具有故障注入式高可用能力評(píng)測(cè)和一鍵流控降級(jí)等功能,可以快速低成本的提升應(yīng)用可用性。
工具的使用場(chǎng)景:
-
服務(wù)化改造過(guò)程中,想精確的了解資源實(shí)例的構(gòu)成和交互情況,實(shí)現(xiàn)架構(gòu)的可視化?
-
想引入真實(shí)的故障場(chǎng)景和演練模型?
-
低門(mén)檻獲得流控、降級(jí)功能?
使用教程:
https://help.aliyun.com/document_detail/90323.html
獲取方式:(免費(fèi))
工具地址:
https://www.aliyun.com/product/ahas
十一、數(shù)據(jù)處理工具 EasyExcel
EasyExcel 是一個(gè)用來(lái)對(duì) Java 進(jìn)行解析、生成Excel 的框架,它重寫(xiě)了 poi 對(duì)07版 Excel 的解析,原本一個(gè)3M的 Excel 用POI sax需要100M左右內(nèi)存,EasyExcel可降低到 KB 級(jí)別,并且再大的excel也不會(huì)出現(xiàn)內(nèi)存溢出的情況。03版依賴 POI 的 sax 模式。在上層做了模型轉(zhuǎn)換的封裝,讓使用者更加簡(jiǎn)單方便。
使用教程:
https://github.com/alibaba/easyexcel/blob/master/quickstart.md
獲取方式:(開(kāi)源)
工具地址:
https://github.com/alibaba/easyexcel
十二、iOS 類(lèi)工具 HandyJSON
HandyJSON 是一個(gè)用于 Swift 語(yǔ)言中的JSON序列化/反序列化庫(kù)。
與其他流行的 Swift JSON 庫(kù)相比,HandyJSON 的特點(diǎn)是,它支持純 Swift 類(lèi),使用也簡(jiǎn)單。它反序列化時(shí)(把 JSON 轉(zhuǎn)換為 Model)不要求 Model從 NSObject 繼承(因?yàn)樗皇腔?KVC 機(jī)制),也不要求你為 Model 定義一個(gè) Mapping 函數(shù)。只要你定義好 Model 類(lèi),聲明它服從 HandyJSON 協(xié)議,HandyJSON 就能自行以各個(gè)屬性的屬性名為 Key,從 JSON 串中解析值。
使用教程:
https://github.com/alibaba/HandyJSON/blob/master/README_cn.md
獲取方式:(開(kāi)源)
工具地址:
https://github.com/alibaba/HandyJSON
十三、云上資源和應(yīng)用部署工具 EDAS Serverless
EDAS Serverless 一款基于 Kubernetes,面向應(yīng)用和微服務(wù)的 Serverless 平臺(tái)。用戶無(wú)需管理和維護(hù)集群與服務(wù)器,即可通過(guò)鏡像、WAR 包和 JAR 包,快速創(chuàng)建原生支持 Kubernetes 的容器應(yīng)用,同時(shí)支持 Spring Cloud 和 Dubbo 等主流微服務(wù)框架。
使用教程:
https://help.aliyun.com/document_detail/102048.html
獲取方式:(公測(cè)期間免費(fèi))
工具地址:
https://help.aliyun.com/document_detail/97792.html
十四、數(shù)據(jù)庫(kù)連接池 Druid
Druid 是 Java 語(yǔ)言下的數(shù)據(jù)庫(kù)連接池,它能夠提供強(qiáng)大的監(jiān)控和擴(kuò)展功能。
使用教程:
https://github.com/alibaba/druid/wiki/常見(jiàn)問(wèn)題
獲取方式:(開(kāi)源)
工具地址:
http://central.maven.org/maven2/com/alibaba/druid/
十五、Java 工具集 Dragonwell
Alibaba Dragonwell 是阿里巴巴內(nèi)部 OpenJDK 定制版 AJDK 的開(kāi)源版本, AJDK 為在線電商,金融,物流做了結(jié)合業(yè)務(wù)場(chǎng)景的優(yōu)化,運(yùn)行在超大規(guī)模的,100,000+ 服務(wù)器的阿里巴巴數(shù)據(jù)中心。Alibaba Dragonwell 與 Java SE 標(biāo)準(zhǔn)兼容,目前僅支持 Linux/x86_64 平臺(tái)。
使用教程:
https://github.com/alibaba/dragonwell8/wiki/阿里巴巴Dragonwell8用戶指南
獲取方式:(開(kāi)源)
工具地址:
https://github.com/alibaba/dragonwell8