阿里開發者工具盤點:用它!讓開發事半功倍


阿里開發者工具盤點:用它!讓開發事半功倍


阿里妹導讀:工欲善其事,必先利其器。從人工到自動化,從重複到創新,信息技術不斷演進,開發者工具也在發展。開發效率低下往往是忽略了工具的使用,正確地使用開發者工具,可以讓開發效率獲得倍速提升。


阿里巴巴將自身在業務場景下的技術沉澱,通過開源、雲上實現或工具等形式對外開放,今天阿里妹就對阿里巴巴內部沉澱下來的開發者工具和資源做了一輪盤點,希望能幫助開發者們提高開發效率、更優雅地寫代碼。


一、鏡像站


穩定高速種類全


鏡像站對開中國開發者來說可謂必備利器,受國際網絡出口帶寬的影響,大多數開源軟件官網的速度慢,穩定性不足。作為國內最富盛名的鏡像站之一,阿里巴巴鏡像站利用其在雲服務上的優勢,提供快速、穩定的鏡像分發服務。目前主要包括OPSX,NPM(NodeJS),composer(PHP)和goproxy。


鏡像內容方面,以OPSX為例,目前已覆蓋了主流操作系統 CentOS,Ubuntu,Fedora,Gentoo,Debian,FreeBSD和對做 docker 鏡像幫助很大的Alpine。


阿里開發者工具盤點:用它!讓開發事半功倍


編程語言覆蓋了Python,Ruby,Perl,R。


軟件方面除了 Apache 下的所有知名軟件 Hadoop,Hive,Cassdra,Spark 都有覆蓋,還包括 docker,zabbix,ceph,mongodb,mariadb 也都有,基本上主流軟件更新都可以在這個鏡像站搞定。如果你對鏡像有需求,阿里妹牆裂推薦哦。


二、開源工具


助力開發,全面實用

★ Alibaba Dragonwell


Alibaba Dragonwell 是阿里巴巴內部 OpenJDK定製版 AJDK 的開源版本, AJDK 為在線電商,金融,物流做了結合業務場景的優化,運行在超大規模的,100,000+ 服務器的阿里巴巴數據中心。Alibaba Dragonwell 與 Java SE標準兼容,目前提供JDK8和11兩個長期支持(LTS)版。


2019年6月我們發佈了Dragonwell8的正式版,您可以通過簡單的兩步安裝Dragonwell8產品:在阿里雲開發者社區工具平臺-開源工具找到Alibaba Dragonwell的鏈接,點擊進入github地址後選擇下載。


你也可以通過阿里雲yum源或者Dragonwell8 Docker鏡像來使用,詳情請參考:Dragonwell8Wiki:https://github.com/alibaba/dragonwell8/wiki


Alibaba Dragonwell8 提供了兩個在阿里巴巴的生產環境中進行過廣泛驗證的特性:JWarmUp 和 JavaFlight Recorder。


JWarmUp 的原理如下圖所示:


阿里開發者工具盤點:用它!讓開發事半功倍


一個典型的應用場景是當應用需要發佈新版本的時候:


  • 首先 JWarmUp 在 Beta 環境(或者有著和生產環境類似流量的其他場景)的單臺機器上短時間執行 Java 應用,並記錄、收集這段時間裡面 JIT 編譯器所做動作的一些元數據。
  • 然後,會把這些元數據複製到生產環境的每一臺包含了新版本代碼的機器/容器裡面。
  • 最後,在生產環境機器中通過 JWarmUp 參數加載 beta 環境生成的元數據,來指導生產環境的機器在啟動應用的過程中就完成 JIT 預熱。


這樣當用戶請求進入的時候,應用就會處於性能最高的峰值狀態。


JFR(Java Flight Recorder)是JVM 內置的基於事件的性能分析特性,這是 Oracle JDK7u4 版本開始提供的商業特性,2018 年的時候在 JDK11 上開源了這個特性,但是一直沒有針對 JDK8 版本的支持。


阿里巴巴和 RedHat、Azul、Amazon 等公司一起合作嘗試把這個特性移植回 JDK8上,不過該 patch 暫時還沒有合併回 OpenJDK8u倉庫,我們在 Alibaba Dragonwell 8 中提供了 Alibaba 移植的 JFR 版本,用於幫助用戶提前獲取這方面的支持。


JFR 的用法很簡單,用戶使用命令行參數或者 jcmd 命令控制 HotSpot 輸出性能數據到文件中,然後就能使用開源的 jmc 工具在圖形界面中打開、分析生成的數據文件了。


2019年12月,阿里巴巴開源了Dragonwell 11項目併發布了11.0.5.1-preview版本,基於最新的LTS版OpenJDK11,提供了JFR Object Profiling特性並默認支持了ZGC策略,希望可以幫助用戶享受最新的Java技術紅利。

Arthas


阿里巴巴2018年9月開源的Java線上診斷工具,它採用命令行交互模式,提供了豐富的功能,是排查jvm相關問題的利器。具體包括:


  • 提供性能看板,包括線程、cpu、內存等信息,並且會定時的刷新。
  • 根據各種條件查看線程快照。比如找出cpu佔用率最高的n個線程等。
  • 輸出jvm的各種信息,如gc算法、jdk版本、ClassPath等。
  • 查看/設置sysprop和sysenv。
  • 查看某個類的靜態屬性,也可以通過ognl語法執行一些語句。
  • 查看已加載的類的詳細信息,比如這個類從哪個jar包加載的。也可以查看類的方法的信息。
  • dump某個類的字節碼到指定目錄。
  • 直接反編譯指定的類。
  • 查看類加載器的一些信息。
  • 可以讓jvm重新加載某個類。
  • 監控方法的執行,同時可以獲取到執行的入參、出參以及拋出的異常。
  • 追蹤方法執行的調用棧,以及各個方法的調用時間。
  • 在線編譯,熱更新代碼
  • 生成熱點代碼火焰圖


原理圖及支持的命令列表:


阿里開發者工具盤點:用它!讓開發事半功倍

阿里開發者工具盤點:用它!讓開發事半功倍


★ ChaoBlade


ChaosBlade 是阿里巴巴開源的一款遵循混沌工程原理和混沌實驗模型的實驗注入工具,幫助企業提升分佈式系統的容錯能力,並且在企業上雲或往雲原生系統遷移過程中業務連續性保障。ChaosBlade 不僅使用簡單,而且支持豐富的實驗場景,場景包含:


基礎資源:比如 CPU、內存、網絡、磁盤、進程等實驗場景。


Java 應用:比如數據庫、緩存、消息、JVM 本身、微服務等,還可以指定任意類方法注入各種複雜的實驗場景。


C++ 應用:比如指定任意方法或某行代碼注入延遲、變量和返回值篡改等實驗場景。


Docker 容器:比如殺容器、容器內 CPU、內存、網絡、磁盤、進程等實驗場景。


雲原生平臺:比如 Kubernetes 平臺節點上 CPU、內存、網絡、磁盤、進程實驗場景,Pod 網絡和 Pod 本身實驗場景如殺 Pod,容器的實驗場景如上述的 Docker 容器實驗場景。


相關生態圖如下:


阿里開發者工具盤點:用它!讓開發事半功倍


★ P3C:


P3C可以幫助Java開發者檢測代碼中村在的不規範的位置並給與提示。規約插件採用Kotlin語言進行開發。


★ Funcraft:


Serverless 應用開發調試部署工具。

三、阿里雲開放平臺


豐富的API和SDK向開發者提供阿里雲開放能力。


阿里開發者工具盤點:用它!讓開發事半功倍


★ API


  • API文檔:可以找到阿里雲已經開放API的產品及相應的文檔地址。
  • API Endpoint:查詢各產品OpenAPI的訪問Endpoint,可以直接訪問該Endpoint或用於配置SDK。
  • API 在線調試:支持快速檢索、可視化調試 API、在線命令行工具、同步動態生成可執行 SDK Example 代碼。
  • API 錯誤中心:在這裡可以搜索接收到的錯誤碼,並獲取簡單的解決提示。


★ SDK


提供多語言的 SDK 為用戶封裝 API 簽名計算,組織請求結構,構建連接池提升請求效率和性能,解析返回結果等。讓開發者不用複雜代碼即可訪問雲服務器、雲數據庫RDS、雲監控等多個阿里雲服務。阿里雲SDK包含:Java SDK、PythonSDK、GO SDK、PHP SDK、.NET SDK、Node.js SDK等。


阿里開發者工具盤點:用它!讓開發事半功倍


四、阿里雲代碼示例庫


經典代碼一鍵複製


阿里開發者工具盤點:用它!讓開發事半功倍


阿里雲CodeSample以場景為維度,支持以雲產品和語言為條件選取目標代碼。告別CTRL+C,CTRL+V,點擊圖標一鍵複製,好用到沒朋友。

五、雲產品工具


優質且免費的阿里雲產品工具。


雲產品通用


Cloud Toolkit


Cloud Toolkit 是免費的本地 IDE 插件,支持IntelliJ IDEA、Eclipse、PyCharm、Maven、VSCode以及其他版本,幫助開發者更高效地開發、測試、診斷並部署應用。通過插件,可以將本地應用一鍵部署到任意服務器,甚至雲端(ECS、EDAS、Kubernetes、ACR 和 小程序雲 等);並且還內置了 Arthas 診斷、Dubbo工具、Terminal 終端、文件上傳、函數計算 和 MySQL 執行器等工具。(產品官網:https://www.aliyun.com/product/cloudtoolkit)


通過該插件,你可以:


  • 一鍵部署本地 IDE 內項目到任意遠程服務器
  • 一鍵部署本地 IDE 內項目到阿里雲 EDAS、SAE 和Kubernetes
  • 本地 Docker Image 打包和倉庫推送工具
  • 遠程服務器實時日誌查看
  • 阿里雲小程序開發工具
  • 阿里雲函數計算開發工具
  • 阿里雲 RDS 內置 SQL 執行器
  • 內置 Terminal 終端
  • 文件上傳
  • Apache Dubbo 框架項目模板&代碼生成
  • Java 程序診斷工具
  • RPC 服務端雲聯調


Cloud Shell


網頁版命令行工具,允許用戶通過命令行管理阿里雲資源。


CLI


在Alibaba Cloud SDK for GO 之上構建的開源工具。藉助此工具,您可以通過調用阿里雲開放 API 來管理阿里雲產品。該命令行工具與阿里雲開放 API 一一對應,靈活性高且易於擴展。您可基於該命令行工具對阿里雲原生 API 進行封裝,擴展出您想要的功能。


數據庫


數據庫備份DBS


為數據庫提供連續數據保護、低成本的備份服務。它可以為多種環境的數據提供強有力的保護,包括企業數據中心、其他雲廠商、混合雲及公共雲。


阿里開發者工具盤點:用它!讓開發事半功倍


數據傳輸服務DTS


DTS支持關係型數據庫、NoSQL、大數據(OLAP)等數據源間的數據傳輸。它是一種集數據遷移、數據訂閱及數據實時同步於一體的數據傳輸服務。數據傳輸致力於在公共雲、混合雲場景下,解決遠距離、毫秒級異步數據傳輸難題。它底層的數據流基礎設施為阿里雙11異地多活基礎架構, 為數千下游應用提供實時數據流,已在線上穩定運行5年之久。


數據庫和應用遷移 ADAM


ADAM是一款把數據庫和應用遷移到阿里雲(公共雲或專有云)的產品,顯著地降低了上雲的技術難度和成本,尤其是Oracle數據庫應用。ADAM全面評估上雲可行性、成本和雲存儲選型,內置實施協助,數據、應用遷移等工具,確保可靠、快速上雲。


阿里開發者工具盤點:用它!讓開發事半功倍


基礎倉庫


開放雲原生應用中心 ——Cloud Native App Hub,一個面向開發者的雲原生應用市場。


阿里開發者工具盤點:用它!讓開發事半功倍


容器鏡像服務(ContainerRegistry)


ACR提供安全的鏡像託管能力,穩定的國內外鏡像構建服務,便捷的鏡像授權功能,方便用戶進行鏡像全生命週期管理。容器鏡像服務簡化了Registry的搭建運維工作,支持多地域的鏡像託管,並聯合容器服務等雲產品,為用戶打造雲上使用Docker的一體化體驗。


阿里開發者工具盤點:用它!讓開發事半功倍


遷移工具


遷雲工具


幫助你完成服務器遷移到阿里雲的P2V和V2V。


閃電立方


為用戶提供安全、高效、便捷的數據傳輸服務。支持將對象存儲、文件存儲從不同設備、不同雲服務商遷移和同步到阿里雲。它提供在線遷移和離線遷移(閃電立方)兩種遷移方式,致力於解決大規模數據傳輸效率、安全問題等難題。


Serverless


FC WebIDE


一款開發Serverless的雲端開發工具。


FC VSCode Extension


圖形化開發調試及操作函數計算資源工具。

六、小程序雲開發平臺


一雲多端


阿里開發者工具盤點:用它!讓開發事半功倍


小程序雲


小程序雲(Mini Program Cloud)是阿里雲面向小程序場景提供的一站式雲服務,幫助開發者實現一雲多端的業務戰略,提供了有服務器和無服務器兩種模式。雲應用是有服務器模式,提供了包括資源編排、應用託管等服務。小程序Serverless是無服務模式,提供了開發、運營、業務增值等服務。跨端開發工具鏈為開發者提供了一次開發全網小程序運行的能力,並在一朵雲內實現統一的資源管理、統一的數據運營和統一的業務設計。


Serverless


阿里雲小程序Serverless提供包括雲函數、數據存儲、文件存儲等一整套後端服務。開發者通過API方式即可獲取雲函數、數據存儲、文件存儲、音視頻、圖像處理等服務,不需要關心服務器或底層運維設施,可以更專注於代碼和業務本身。


跨端IDE


uni-app跨平臺開發擴展支持在阿里雲小程序開發者工具中將uni-app工程編譯為微信小程序,並同時打開微信開發者工具。跨端IDE內置跨端框架,支持一次開發多端運營,兼容支付寶、微信等主流小程序框架。


本地插件


支持通過IntelliJ IDEA、Eclipse、Pycharm等直接發佈到雲應用服務。


分享到:


相關文章: