阿里提供的12種常用后端開(kāi)發(fā)工具
譯文【51CTO.com快譯】無(wú)論是從手動(dòng)編碼到自動(dòng)化開(kāi)發(fā),還是從重復(fù)勞動(dòng)到改進(jìn)創(chuàng)新,業(yè)界的開(kāi)發(fā)工具一直在隨著編程技術(shù)的發(fā)展而持續(xù)迭代。在此方面,阿里巴巴團(tuán)隊(duì)與阿里云平臺(tái)通過(guò)以開(kāi)源的方式,發(fā)布了各種基于云的應(yīng)用。與此同時(shí),他們也向公眾提供了一系列經(jīng)過(guò)了在各種業(yè)務(wù)場(chǎng)景中多年積累的技術(shù)實(shí)踐。
考慮到開(kāi)發(fā)人員涉獵技術(shù)的多樣性,本文將向您主要介紹的是阿里開(kāi)發(fā)團(tuán)隊(duì)常用的十二種后端工具,希望它們能夠幫助您開(kāi)發(fā)出更高效、更優(yōu)雅的軟件產(chǎn)品。
1. Arthas - Java在線診斷工具
Arthas是由阿里巴巴于2018年9月推出的針對(duì)Java應(yīng)用程序的開(kāi)源式在線診斷工具。
典型適用場(chǎng)景:
- 并不知道某個(gè)特定JAR包是從哪個(gè)類(lèi)被加載的,但又需要搞清楚為何自己的系統(tǒng)拋出了各種與類(lèi)相關(guān)的異常。
- 不清楚為何自己修改后的代碼無(wú)法被執(zhí)行;也不記得是否提交過(guò)哪些修改;或者不確定是否使用了正確的版本分支。
- 面對(duì)出現(xiàn)的問(wèn)題,無(wú)法進(jìn)行聯(lián)機(jī)調(diào)試;正在猶豫是否需要將各種日志添加到自己的應(yīng)用中,并再次發(fā)布。
- 遇到了某個(gè)用戶(hù)數(shù)據(jù)處理的問(wèn)題,但是無(wú)法進(jìn)行聯(lián)機(jī)調(diào)試、或予以脫機(jī)重現(xiàn)問(wèn)題。
- 希望通過(guò)全局視圖來(lái)監(jiān)控系統(tǒng)的運(yùn)行狀態(tài)。
- 需要使用一套解決方案,來(lái)監(jiān)控JVM的實(shí)時(shí)運(yùn)行狀態(tài)。
Arthas能夠支持Java開(kāi)發(fā)工具包(JDK)6及更高的版本,同時(shí)也支持Linux、Mac和Windows。Arthas使用的是命令行交互模式,并允許用戶(hù)使用Tab鍵自動(dòng)完成命令行中的剩余字符,進(jìn)而使得問(wèn)題的查找和診斷變得更加容易。
基礎(chǔ)教程:https://alibaba.github.io/arthas/arthas-tutorials?language=en&id=arthas-basics
高級(jí)教程:https://alibaba.github.io/arthas/arthas-tutorials?language=en&id=arthas-advanced
GitHub頁(yè)面:https://github.com/alibaba/arthas
2. Cloud Toolkit(云工具包) - IDE插件
Cloud Toolkit(https://www.alibabacloud.com/help/doc-detail/98551.htm?spm=a2c41.12911801.0.0.57544839B5EtTB)是一個(gè)集成式的開(kāi)發(fā)環(huán)境(IDE)插件,可用于幫助開(kāi)發(fā)人員更有效地開(kāi)發(fā)、測(cè)試、診斷和部署應(yīng)用程序。Cloud Toolkit允許開(kāi)發(fā)人員方便地將本地應(yīng)用程序部署到任何云端或本地主機(jī)上。Cloud Toolkit內(nèi)置了Arthas診斷工具,并支持高效地執(zhí)行各種終端命令和SQL語(yǔ)句。Cloud Toolkit適用于包括IntelliJ IDEA、Eclipse、PyCharm和Maven在內(nèi)的不同IDE。
典型適用場(chǎng)景:
- 針對(duì)每一次修改代碼,都需要反復(fù)打包。
- 不希望定期在Maven和Git之類(lèi)的代碼管理工具之間進(jìn)行來(lái)回切換。
- 既可以使用安全復(fù)制(SCP)工具上傳文件,有能夠使用XShell或SecureCRT登錄到服務(wù)器上替換部署包、或是重新啟動(dòng)服務(wù)器。
- 不希望為了將各種文件上傳到服務(wù)器的指定目錄,而定期在各種FTP和SCP工具之間來(lái)回切換。
下載鏈接:https://plugins.jetbrains.com/plugin/11386-alibaba-cloud-toolkit
3. ChaosBlade - 混沌工程類(lèi)故障注入工具
Chaosblade(https://github.com/chaosblade-io/chaosblade?spm=a2c41.12911801.0.0.57544839B5EtTB)是一種混沌工程類(lèi)工具。它遵循了各種混沌工程的實(shí)驗(yàn)原則,并提供了廣泛的故障場(chǎng)景,能幫助用戶(hù)提高分布式系統(tǒng)的容錯(cuò)能力和可恢復(fù)性。它通過(guò)注入各種潛在的故障,來(lái)提供包括延遲、異常、返回特定值、修改參數(shù)值、重復(fù)調(diào)用、以及捕捉塊異常等不同的故障方案。
典型適用場(chǎng)景:
- 難以測(cè)試各種微服務(wù)的容錯(cuò)能力。
- 無(wú)法驗(yàn)證容器編排配置的合理性。
- 不知如何實(shí)現(xiàn)PaaS層面上的魯棒性測(cè)試。
GitHub頁(yè)面:https://github.com/chaosblade-io/chaosblade
4. Alibaba Java Coding Guidelines - 編碼指南
此插件能夠檢測(cè)Java代碼中的編碼問(wèn)題,并給用戶(hù)提供相應(yīng)的提示。它是基于Kotlin語(yǔ)言開(kāi)發(fā)的。
IDEA插件的使用說(shuō)明:https://github.com/alibaba/p3c/tree/master/idea-plugin
Eclipse插件的使用說(shuō)明:https://github.com/alibaba/p3c/tree/master/eclipse-plugin
GitHub頁(yè)面:https://github.com/alibaba/p3c
5. Application Real-Time Monitoring Service(應(yīng)用實(shí)時(shí)監(jiān)控服務(wù),ARMS)
ARMS(https://www.alibabacloud.com/product/arms?spm=a2c41.12911801.0.0.57544839B5EtTB)是一種應(yīng)用程序性能管理(APM)工具。它通過(guò)提供三種監(jiān)控選項(xiàng):前端監(jiān)控、應(yīng)用程序監(jiān)控和自定義監(jiān)控,來(lái)幫助用戶(hù)自行實(shí)現(xiàn)實(shí)時(shí)應(yīng)用程序性能、以及業(yè)務(wù)監(jiān)控功能。
典型適用場(chǎng)景:
- 例如:您在22:00收到了37條令人崩潰的錯(cuò)誤消息,卻不知從何下手。
- 客戶(hù)或業(yè)務(wù)團(tuán)隊(duì)比您更早地發(fā)現(xiàn)了問(wèn)題。
- 雖然每個(gè)月在服務(wù)器上投入高達(dá)數(shù)萬(wàn)元,但是仍然無(wú)法保證提供良好的用戶(hù)體驗(yàn)。
應(yīng)用程序監(jiān)控集成:https://www.alibabacloud.com/help/doc-detail/63796.htm
自定義監(jiān)控:https://www.alibabacloud.com/help/doc-detail/47474.htm
產(chǎn)品頁(yè)面:https://www.alibabacloud.com/product/arms
6. Docsite - 開(kāi)源靜態(tài)網(wǎng)站生成器
Docsite(https://github.com/txd-team/docsite?spm=a2c41.12911801.0.0.57544839B5EtTB)是一種開(kāi)源的靜態(tài)網(wǎng)站生成器。它能夠幫助用戶(hù)自行構(gòu)建官方網(wǎng)站、文檔中心、博客站點(diǎn)、以及相應(yīng)的社區(qū)。它不但簡(jiǎn)單易用,而且能夠在PC和移動(dòng)端上支持多語(yǔ)言的界面交互、靜態(tài)渲染、SEO、標(biāo)記文檔。另外,它還具有諸如:全局網(wǎng)站搜索、網(wǎng)站樣式自定義、以及頁(yè)面定制等許多實(shí)用的功能。
教程:https://docsite.js.org/en-us/docs/installation.html
GitHub頁(yè)面:https://github.com/txd-team/docsite
7. Freeline - Second-Level Compilation Solution for Android
Freeline(https://github.com/alibaba/freeline?spm=a2c41.12911801.0.0.57544839B5EtTB)能夠緩存各種可重用類(lèi)的文件和資源索引,通過(guò)編譯代碼的各類(lèi)更新,它可以在幾秒鐘內(nèi)完成對(duì)于設(shè)備的部署??梢?jiàn),F(xiàn)reeline有效地減少了用戶(hù)在日常開(kāi)發(fā)過(guò)程中,花費(fèi)在重新編譯和安裝上的大量時(shí)間。另外,最方便使用Freeline的方法是直接安裝 Android Studio的插件。
教程:https://github.com/alibaba/freeline/blob/master/README.md
GitHub 頁(yè)面:https://github.com/alibaba/freeline
8. Alibaba Cloud Application High Availability Service(阿里云應(yīng)用高可用性服務(wù),AHAS)
AHAS提供了針對(duì)容器環(huán)境(如Kubernetes/K8s)的體系結(jié)構(gòu)可視化、基于故障注入的高可用性評(píng)估、以及一鍵式限流和降級(jí)等,許多強(qiáng)大的功能。AHAS可幫助用戶(hù)以低成本的方式,快速提高應(yīng)用程序的可用性。
典型適用場(chǎng)景:
- 在重建服務(wù)時(shí),希望以可視化的體系結(jié)構(gòu)、精確地了解資源實(shí)例的組合和交互。
- 需要提供真正的故障場(chǎng)景和發(fā)掘模型。
- 希望以較低的成本實(shí)現(xiàn)限流和降級(jí)等功能。
教程:https://www.alibabacloud.com/help/doc-detail/90323.htm
產(chǎn)品頁(yè)面:https://www.alibabacloud.com/product/ahas
9. EasyExcel - 數(shù)據(jù)處理工具
EasyExcel是一個(gè)分析Java代碼、并生成對(duì)應(yīng)Excel文件的框架。它針對(duì)Microsoft Excel 2007重寫(xiě)了Apache POI SAX分析器。一般而言,Apache POI SAX解析器需要使用大約100 MB的內(nèi)存,來(lái)處理3 MB大小的Excel文件;而EasyExcel只需要大約幾個(gè)KB。因此,無(wú)論Excel文件的體積如何,EasyExcel都能夠有效地消除內(nèi)存不足(out-of-memory,OOM)的問(wèn)題。而對(duì)于Microsoft Excel 2003而言,EasyExcel也會(huì)使用到Apache POI SAX 解析器,不過(guò)為了方便使用,它封裝了上層的模型轉(zhuǎn)換器。
教程:https://github.com/alibaba/easyexcel/blob/master/quickstart.md
GitHub 頁(yè)面:https://github.com/alibaba/easyexcel
10. HandyJSON for iOS
HandyJSON是一個(gè)使用Swift語(yǔ)言編寫(xiě)而成的json對(duì)象的序列化/反序列化庫(kù)。與其他流行的Swift JSON庫(kù)相比,HandyJSON不但易于被使用,而且支持完全的Swift類(lèi)。當(dāng)您在反序列化中使用HandyJSON來(lái)將JSON轉(zhuǎn)換為模型時(shí),由于HandyJSON并不基于KVC,因此所產(chǎn)生的模型不必繼承NSObject。當(dāng)然,您也不必為模型定義任何映射函數(shù)。在您定義并聲明了遵循HandyJSON協(xié)議的模型類(lèi)之后,HandyJSON會(huì)通過(guò)將屬性名稱(chēng)作為鍵值,去自動(dòng)分析JSON字符串中的數(shù)值。
教程:https://github.com/alibaba/HandyJSON/blob/master/README.md
GitHub 頁(yè)面:https://github.com/alibaba/HandyJSON
11. Druid - 數(shù)據(jù)庫(kù)連接池
Druid可謂Java 語(yǔ)言中最好的數(shù)據(jù)庫(kù)連接池,它提供了強(qiáng)大的監(jiān)控和擴(kuò)展功能。
教程:https://github.com/alibaba/druid/wiki/FAQ
GitHub 頁(yè)面:https://github.com/alibaba/druid
12. Alibaba Dragonwell Java 開(kāi)發(fā)套件
Alibaba Dragonwell是阿里團(tuán)隊(duì)內(nèi)部使用的開(kāi)源版定制OpenJDK。AJDK對(duì)于在線電子商務(wù)、財(cái)務(wù)和物流等應(yīng)用,進(jìn)行了基于業(yè)務(wù)場(chǎng)景的優(yōu)化。它一直運(yùn)行在阿里的超大型數(shù)據(jù)中心之中,而每個(gè)數(shù)據(jù)中心都有超過(guò)10萬(wàn)臺(tái)服務(wù)器。Alibaba Dragonwell符合Java SE的標(biāo)準(zhǔn)。不過(guò),它目前只支持Linux x86_64的平臺(tái)。
教程:https://github.com/alibaba/dragonwell8/wiki/Alibaba-Dragonwell8-User-Guide
GitHub 頁(yè)面:https://github.com/alibaba/dragonwell8
原文標(biāo)題:12 Backend Development Tools by Alibaba,作者:Leona Zhang
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】