日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

idea 一直在build_让web开发部署提速 8 倍的一款 IDEA 插件,你有在用?

發布時間:2023/12/4 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 idea 一直在build_让web开发部署提速 8 倍的一款 IDEA 插件,你有在用? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文:http://suo.im/4on4JE??來源于云棲社區>中間件小哥

作為一個 Java 程序員,我們大多數會在 Intellij IDEA 中基于 SpringBoot 來開發 WEB 應用,所以本文中的測評將會基于以下幾個架構來構建:

  • 開發環境:IDEA

  • 項目組織方式:Maven

  • 開發框架:SpringBoot

在接觸 Cloud Toolkit 之前,用什么方法來部署一個 SpringBoot 應用呢?

作為一個偏正經的測評人員,我不會為了凸顯出 Cloud Toolkit 的強大而去翻出一些上古的部署工具來做對比,而是直接使用 Intellij IDEA 的內置功能與之對比。

第一步:配置服務器信息

在?Tools -> Deployment?中找到 IDEA 對項目部署支持的內置插件,我們可以在其中進行服務器信息的配置,包括服務器地址和權限認證,并且在 Mapping 選項卡中完成本地工程與服務器路徑的映射。

第二步:配置 Maven 打包插件

<build>? <plugins>? ? <plugin>? ? ? <groupId>org.springframework.bootgroupId>? ? ? <artifactId>spring-boot-maven-pluginartifactId>? ? plugin>? plugins>build>

由于是 SpringBoot 應用,配置專用的打包插件后,可以將整個工程打成一個 fatjar,示例工程非常簡單:

@SpringBootApplication
@RestController
public?class?Application?{
? ?public?static?void?main(String[] args)?{
? ? ? SpringApplication.run(Application.class, args);
? ?}

? ?@RequestMapping("/hello")
? ?public?String?hello()?{
? ? ?return?"hello world~~~~~~~~~~~~~~~~";
? ? }
}

之后,只要執行 install,即可得到一個可運行的 jar 包:

第三步:部署 jar 包

由于我們在第一步已經配置過項目路徑與服務器路徑的映射,可以選擇直接對 fatjar 右鍵,upload 到遠程服務器上。

第四步:啟動應用

上圖中展示的是 IDEA 中兩個非常棒的內置功能,可以在?Tools -> Start SSH session?中開啟遠程服務器的終端,在 IDEA 下方可以執行遠程指令;

也可以在?Tools -> Deployment ->Browse Remote Host?中展開如圖右側的結構,可視化地瀏覽服務器上的文件列表,檢查應用是否部署成功。

在遠程終端中,找到對應的 fatjar,執行?java -jar spring-demo-1.0-SNAPSHOT.jar?便完成了整個部署流程。

IDEA 內置插件總結

IDEA 內置插件已經提供了相當強大的能力,整個部署過程我們完全沒有離開 IDEA!

避免了頻繁切換窗口,裝各種部署工具,可以說已經很方便了,Cloud Toolkit 必須要比這個部署過程做的更加強大才行,那下面就讓我們來體驗下 Cloud Toolkit 是怎么優化的吧。

Cloud Toolkit 初體驗

其他菜單項暫且拋到一邊,這 5 個核心能力應該就是 Cloud Toolkit 的核心了。

即使作為一個插件小白,應該也能夠望名知意,猜到這幾個菜單對應的功能:

  • Deploy to Host:部署到任意服務器。

    這一個功能決定了 Cloud Toolkit 強大的之處就是可以使得每個開發者受益,它其實并不是和阿里云廠商強綁定的。我會在下文重點測評下這個功能。

  • Deploy to ECS:這里的 ECS 指的阿里云的 ECS,如果你的服務部署在阿里云 ECS 上,可以選擇使用這個功能,獲得比 Deploy to Host 更加豐富的功能。

    在下文我也會簡單測評下這個功能。

  • Deploy to EDAS & EDAS Serverless:EDAS & EDAS Serverless 是阿里云提供的分布式服務治理服務,可以理解為商業版的 Dubbo,具有強大的服務治理、服務調度能力,Cloud Toolkit 對 EDAS 做了個性化的部署支持,讓使用者無需登錄控制臺,在 IDEA 中即可完成 EDAS 的部署。

  • Deploy to CS K8S:在云原生時代,很多應用使用容器化的方式進行部署,Cloud Toolkit 這一點做的還是不錯的,已經具備了容器化部署的能力,具有一定的前瞻性。

其實從簡單的功能介紹就可以看出,Cloud Toolkit 相比 IDEA 內置的部署能力的確是高出一大截了,甚至可以說,Deploy to Host 這一能力完全就可以覆蓋 IDEA 插件的所有能力,并且對流程還進行了一些簡化。

下面我重點測評下 Deploy to Host 這一能力,與之前的部署流程進行一個對比。

使用 Cloud Toolkit 把應用部署到任意服務器

上圖展示的 Deploy to Host 功能的配置項,實際上涵蓋了以下幾點:

  • 遠程服務器配置

  • 部署方式:Maven 構建,直接上傳文件(目前還不支持 Gradle 構建,可能在后續的版本會支持)

  • 本地文件與服務器路徑的映射配置

  • 啟動腳本的集成

賬號管理

SSH 登錄賬戶可以在?Preferences -> Alibaba Cloud Toolkit -> SSH Profile?中管理,找不到也沒關系,需要設置的時候一般都會有超鏈接跳轉,這點做得很人性化。

主機管理

服務信息可以在?Tools -> Alibaba Cloud ->Alibaba Cloud View?中展開,如下圖所示:

Deploy to Host

配置完賬號信息和主機信息,接下來只需要右鍵項目選擇?Alibaba Cloud -> Deploy to Host-> Run??,一切就搞定了。這個過程相比之前變得非常簡易:

  • 不需要自己打包,Cloud Toolkit 集成了 Maven 插件。

  • 不需要登錄遠程終端去執行腳本啟動服務,Cloud Toolkit 提供了應用部署生命周期必要的鉤子,只需要設置好啟動腳本即可。

  • 修改完本地代碼,點擊下 Deploy to Host,即可完成改動代碼的部署。

經過如上的測評過程,相信即使沒有使用過 Cloud Toolkit 的用戶,也可以直觀體會到這是一款怎么樣的插件了,并且它的功能是多么的實用。

使用 Cloud Toolkit 把應用部署到 ECS

從產品設計的角度來分析,Cloud Toolkit 提供如此多的部署能力,可以想到是其直接預設了使用人群。

例如一個阿里云的 ECS 用戶,在選擇部署方式時,既可以使用 Deploy to Host 也可以使用 Deploy to ECS;

再者,例如一個 EDAS 用戶,在選擇部署方式時,既可以使用 Deploy to Host、Deploy to ECS,也可以使用 Deploy to EDAS(EDAS 可以理解為一個定制化的 ECS)。

從產品的角度,越定制化的功能,其服務的人群越少,同時功能更強大;

從用戶體驗的角度,其實也透露了云服務的一個特點,云廠商正在為其所提供的云服務創造更好的用戶體驗,借助于此類插件,來降低使用者的開發運維門檻。

可以預見的一件事是,對于非阿里云用戶來說,Deploy to Host 是他們使用 Cloud Toolkit 最大的誘惑了。作為一個測評文章,除了介紹 Deploy to Host 之外,我還選擇了 Deploy to ECS 這一功能來進行測評。為此我購買了一臺阿里云的 ECS 來部署與上文相同的應用。

在阿里云控制臺可以獲取到賬號的 Access Key/Access Key Secret,在 IDEA 中的?Preferences -> Alibaba Cloud Toolkit -> Accounts?中可以設置賬號。

在賬號設置完畢后,Cloud Toolkit 看起來是通過內置的 API 直接關聯到了我的 ECS 實例,在選擇部署時,可以直接根據 region 選擇實例列表中的機器進行部署。

其余的部署流程和 Deploy to Host 相差無幾。也就是說,其實 Deploy to ECS 更多的完成了權限管理和主機管理,ECS 用戶使用這個功能就顯得非常高效了。

Cloud Toolkit 的亮點功能

Cloud Toolkit 除了主打的部署能力,還提供了不少亮點功能,我選擇了其中的 3 個功能來分享:上傳文件、遠程 Terminal、內置應用診斷功能來進行評測。

上傳文件

有些腳本我們希望在本地編輯之后上傳到服務器上,Cloud Toolkit 對每一個主機都提供了一個 Upload 操作,可以將本地的文件上傳到遠程主機上,并且還可以觸發一個 commond,這個功能也是很人性化的,因為上傳腳本后,往往需要運行一次,避免了我們再登錄到遠程主機上執行一次運行操作。

遠程 Terminal

特別是在 Mac 系統中,我一直苦惱的一件事便是如何管理眾多的遠程機器,我偶爾需要去搭建了博客的主機上查看個人博客為什么掛了,偶爾又要去看看我的 VPN 主機排查下為什么無法轉發流量了,在開發測試階段,又要經常去測試主機上執行一些簡單的命令。

所有這一切通過 ssh 工具去完成都不麻煩,但所有的麻煩事集合到一起時往往會讓我變得焦頭爛額,針對這一點,Cloud Toolkit 簡直是一個 Life Saver。

事實上,在前面的測評中我們已經了解到 IDEA 內置了遠程 Terminal 這個功能,Cloud Toolkit 是進一步優化了它的體驗,用戶可以直接在可視化的頁面選擇想要遠程登錄的主機,在對主機加了 Tag 之后,這個過程會更加直觀。

內置應用診斷功能

在測評體驗過程中,意外地發現了 Cloud Toolkit 的一個功能支持,就是前面的截圖有顯示,但我未提到的 Diagnostic (診斷)功能。

Cloud Toolkit 集成了阿里巴巴開源的一款應用診斷框架 --Arthas。

  • 對于本地主機,可以直接通過?Tools -> Alibaba Cloud -> Diagnostic Tools?開啟診斷。

  • 對于遠程主機,可以通過主機管理中的 Diagnostic 選項卡,開啟遠程診斷。

在過去,我們想要進行診斷,必須要手動在服務器上安裝 Arthas,然而Cloud Toolkit 借助 Remote Terminal 和 Arthas 的集成,讓這一切都可以在 IDEA 中完成,似乎是想要貫徹這個原則:徹底杜絕第三方工具,一切都用插件完成。

當你遇到以下類似問題而束手無策時,Arthas?可以幫助你解決:

  • 這個類從哪個 jar 包加載的?為什么會報各種類相關的 Exception?

  • 我改的代碼為什么沒有執行到?難道是我沒 commit?分支搞錯了?

  • 遇到問題無法在線上 debug,難道只能通過加日志再重新發布嗎?

  • 線上遇到某個用戶的數據處理有問題,但線上同樣無法 debug,線下無法重現!

  • 是否有一個全局視角來查看系統的運行狀況?

  • 有什么辦法可以監控到 JVM 的實時運行狀態?

  • 作為一個偏正經的評測,我們試用一下遠程診斷的功能,選取比較直觀的 trace 命令來進行評測。

    如上圖所示,我們構造了一個慢請求,其中 invokeServiceA_B() 相對于其他方法十分耗時,我們希望通過 Cloud Toolkit 定位到慢調用的源頭,找出 invokeServiceA_B 這個罪魁禍首。

    點擊 IDEA 中對應部署服務器的 Diagnostic 菜單項,就會出現如上圖所示的一個 Arthas 診斷頁面,它會自動關聯到用戶的 Java 進程,用戶只需要選擇相應診斷的進程即可。

    在關聯到相應的進程之后,我們執行 trace 指令?trace moe.cnkirito.demo.Application * -j。

    這個指令的含義是當?moe.cnkirito.demo.Application?中的任意方法被觸發調用后,會打印出相應的調用棧,并計算耗時,-j?的含義是過濾掉 JDK 內置的類,簡化堆棧。

    正如上圖所示,我們定位到是 invokeServiceA 的 invokeServiceA_B 最為耗時。

    用戶可以自行監控對應的方法,把 * 替換為想要監控的方式即可。(更多的監控指令可以參考 Arthas 文檔鏈接:https://alibaba.github.io/arthas/)

    ?--完--

    【源碼+視頻】SSM框架開發酒店管理系統,速度保存,手慢無!

    【源碼+視頻】SSM框架實現的學生系統源碼分享,速度保存,手慢無!

    在看?

    總結

    以上是生活随笔為你收集整理的idea 一直在build_让web开发部署提速 8 倍的一款 IDEA 插件,你有在用?的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。