從人工到自動化,從重複到創新,技術演進的曆程中,伴随着開發者工具類産品的發展。
阿裡巴巴将自身在各類業務場景下的技術積澱,通過開源、雲上實作或工具等形式對外開放,本文将精選了一些阿裡巴巴的開發者工具,希望能幫助開發者們提高開發效率、更優雅的寫代碼。
由于開發者涉及的技術領域衆多,筆者僅從自己熟悉的領域,以後端開發者的視角盤點平時可能用得到的工具。每個工具按照以下幾點進行介紹:
工具名稱和簡介
使用場景
使用教程
擷取方式
一、Java 線上診斷工具 Arthas
Arthas 阿裡巴巴2018年9月開源的一款Java線上診斷工具。
工具的使用場景:
這個類從哪個 jar 包加載的?為什麼會報各種類相關的 Exception?
我改的代碼為什麼沒有執行到?難道是我沒 commit?分支搞錯了?
遇到問題無法線上上 debug,難道隻能通過加日志再重新釋出嗎?
線上遇到某個使用者的資料處理有問題,但線上同樣無法 debug,線下無法重制!
是否有一個全局視角來檢視系統的運作狀況?
有什麼辦法可以監控到JVM的實時運作狀态?
Arthas支援JDK 6+,支援Linux/Mac/Windows,采用指令行互動模式,同時提供豐富的 Tab 自動補全功能,進一步友善進行問題的定位和診斷。
使用教程:
基礎教程:
https://alibaba.github.io/arthas/arthas-tutorials?language=cn&id=arthas-basics進階教程:
https://alibaba.github.io/arthas/arthas-tutorials?language=cn&id=arthas-advanced擷取方式:(免費)
開源位址:
https://github.com/alibaba/arthas開發者交流群号:
21965291(釘群)
二、IDE 插件 Cloud Toolkit
Cloud Toolkit 是一款 IDE 插件,可以幫助開發者更高效地開發、測試、診斷并部署應用。通過 Cloud Toolkit,開發者能夠友善地将本地應用一鍵部署到任意機器(本地或雲端),并内置 Arthas 診斷、高效執行終端指令和 SQL 等,提供 IntelliJ IDEA 版,Eclipse 版,PyCharm 版和 Maven 版。
每次修改完代碼後,是否正在經曆反複地打包?
在 Maven 、Git 以及其他運維腳本和工具的之間頻繁切換?
采用 SCP 工具上傳?使用XShell或SecureCRT登陸伺服器?替換部署包?重新開機?
檔案上傳到伺服器指定目錄,在各種 FTP、SCP 工具之間頻繁切換 ?
點選這裡,下載下傳工具:
https://cn.aliyun.com/product/cloudtoolkit21961177(釘群)
三、混沌實驗注入工具 ChaosBlade
ChaosBlade 是一款遵循混沌工程實驗原理,提供豐富故障場景實作,幫助分布式系統提升容錯性和可恢複性的混沌工程工具,可實作底層故障的注入,提供了延遲、異常、傳回特定值、修改參數值、重複調用和try-catch 塊異常等異常場景。
微服務的容錯能力不易衡量?
容器編排配置是否合理無法驗證?
PaaS 層健壯性的測試工作無從入手?
https://github.com/chaosblade-io/chaosblade/wiki/新手指南
23177705(釘群)
四、Java 代碼規約掃描插件
該插件用于檢測 Java 代碼中存在的不規範的位置,并給予提示。規約插件是采用kotlin語言開發。
IDEA插件使用文檔:
https://github.com/alibaba/p3c/wiki/IDEA插件使用文檔
Eclipse插件使用文檔:
https://github.com/alibaba/p3c/wiki/Eclipse https://github.com/alibaba/p3c五、應用實時監控工具 ARMS
ARMS 是一款 APM 類的監控工具,提供前端、應用、自定義監控 3 類監控選項,可快速建構實時的應用性能和業務監控能力。
晚上10點收到37條報警資訊,你卻無從下手?
當我們發現問題的時候,客戶/業務方已經發起投訴?
每個月花幾十萬買伺服器,卻無法保障使用者體驗?
前端監控接入:
https://help.aliyun.com/document_detail/106086.html應用監控接入:
https://help.aliyun.com/document_detail/63796.html自定義監控:
https://help.aliyun.com/document_detail/47474.html擷取方式:(收費)
工具位址:
https://www.aliyun.com/product/arms21914303(釘群)
六、靜态開源站點搭建工具 Docsite
Docsite 一款集官網、文檔、部落格和社群為一體的靜态開源站點的解決方案,具有簡單易上手、上手不撒手的特質,同時支援 react 和靜态渲染、PC端和移動端、支援中英文國際化、SEO、markdown文檔、全局站點搜尋、站點風格自定義、頁面自定義等功能。
https://docsite.js.org/zh-cn/docs/installation.html項目位址:
https://github.com/txd-team/docsite七、Android 平台上的秒級編譯方案 Freeline
Freeline 可以充分利用緩存檔案,在幾秒鐘内迅速地對代碼的改動進行編譯并部署到裝置上,有效地減少了日常開發中的大量重新編譯與安裝的耗時。Freeline 最快捷的使用方法就是直接安裝 Android Studio 插件。
https://github.com/alibaba/freeline/blob/master/README-zh.md https://github.com/alibaba/freeline八、性能測試工具 PTS
PTS 可以模拟大量使用者通路業務的場景,任務随時發起,免去搭建和維護成本,支援 JMeter 腳本轉化為 PTS 壓測,同樣支援原生 JMeter 引擎進行壓測。
https://help.aliyun.com/document_detail/70290.html https://www.aliyun.com/product/pts九、雲效開發者工具KT
KT 可以簡化在 Kubernetes 下進行聯調測試的複雜度,提高基于Kubernetes的研發效率。
https://yq.aliyun.com/articles/690519 https://yq.aliyun.com/download/3393十、架構可視化工具 AHAS
AHAS 為 K8s 等容器環境提供了架構可視化的功能,同時,具有故障注入式高可用能力評測和一鍵流控降級等功能,可以快速低成本的提升應用可用性。
服務化改造過程中,想精确的了解資源執行個體的構成和互動情況,實作架構的可視化?
想引入真實的故障場景和演練模型?
低門檻獲得流控、降級功能?
https://help.aliyun.com/document_detail/90323.html https://www.aliyun.com/product/ahas十一、資料處理工具 EasyExcel
EasyExcel是一個用來對 Java 進行解析、生成Excel 的架構,它重寫了 poi 對07版 Excel 的解析,原本一個3M的 Excel 用POI sax需要100M左右記憶體,EasyExcel可降低到 KB 級别,并且再大的excel也不會出現記憶體溢出的情況。03版依賴 POI 的 sax 模式。在上層做了模型轉換的封裝,讓使用者更加簡單友善。
https://github.com/alibaba/easyexcel/blob/master/quickstart.md擷取方式:(開源)
https://github.com/alibaba/easyexcel十二、iOS 類工具 HandyJSON
HandyJSON 是一個用于 Swift 語言中的JSON序列化/反序列化庫。
與其他流行的Swift JSON庫相比,HandyJSON 的特點是,它支援純 Swift 類,使用也簡單。它反序列化時(把 JSON 轉換為Model)不要求 Model從 NSObject 繼承(因為它不是基于 KVC 機制),也不要求你為 Model 定義一個 Mapping 函數。隻要你定義好 Model 類,聲明它服從 HandyJSON 協定,HandyJSON 就能自行以各個屬性的屬性名為Key,從JSON串中解析值。
https://github.com/alibaba/HandyJSON/blob/master/README_cn.md https://github.com/alibaba/HandyJSON十三、雲上資源和應用部署工具 EDAS Serverless
EDAS Serverless 一款基于 Kubernetes,面向應用和微服務的 Serverless 平台。使用者無需管理和維護叢集與伺服器,即可通過鏡像、WAR 包和JAR 包,快速建立原生支援 Kubernetes 的容器應用,同時支援 Spring Cloud 和 Dubbo 等主流微服務架構。
https://help.aliyun.com/document_detail/102048.html擷取方式:(公測期間免費)
https://help.aliyun.com/document_detail/97792.html十四、資料庫連接配接池 Druid
Druid 是 Java 語言下的資料庫連接配接池,它能夠提供強大的監控和擴充功能。
https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98 http://central.maven.org/maven2/com/alibaba/druid/十五、Java 工具集 Dragonwell
Alibaba Dragonwell是阿裡巴巴内部OpenJDK定制版AJDK的開源版本, AJDK為線上電商,金融,物流做了結合業務場景的優化,運作在超大規模的,100,000+ 伺服器的阿裡巴巴資料中心。 Alibaba Dragonwell與Java SE标準相容,目前僅支援 Linux/x86_64平台。
https://github.com/alibaba/dragonwell8/wiki/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4Dragonwell8%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97 https://github.com/alibaba/dragonwell8