SmartIDE v0.1.18 (cli build 3538) 已經發布,在過去的Sprint 18中,我們集中精力推進對 k8s 遠程作業區 的支持,同時繼續擴展SmartIDE對不同技術堆疊的支持,我們適配了針對分布式應用運行時Dapr以及資料科學計算分析工具Juypter的環境支持,在這個程序中,我們探索了VM-Like-Container的能力,為提供開發者優化的容器環境又邁進了一步,最后,我SmartIDE插件市場也迎來了它的第一個開源社區支持者,阿里螞蟻開源的國產IDE OpenSumi已經將 SmartIDE作為自己的默認插件源, 2022.05.19
阿里螞蟻OpenSumi采用SmartIDE插件市場提速10倍
在 Sprint 16中,我們開始支持阿里螞蟻開源的國產IDE開發框架 OpenSumi,并且在 Sprint 17 發布了 基于 Eclipse OpenVSX Registry 的 SmartIDE插件市場,OpenSumi的開發團隊在測驗了 SmartIDE插件市場之后發現速度提升可以達到10倍以上,并將其設定為OpenSumi內默認的插件市場來源,
下圖來自:https://github.com/opensumi/core/pull/1045 ,是 OpenSumi 團隊的測驗結果,

SmartIDE插件市場 是我們針對國內使用類 VSCode IDE 的開發者提供的開源插件市場鏡像服務,我們將 open-vsx.org 的國外站點通過 Github Action 自動同步到了部署在國內的站點中,經我們自己測驗速度提升2-5倍,此次經阿里螞蟻OpenSumi團隊的測驗結果提升10倍的原因可能是因為他們采用了批量插件安裝的方式,這個結果對于國內使用類 VSCode IDE 的團隊來說是一個好訊息,說明我們提供的 SmartIDE插件市場 開始發揮它應有的作用了,
在 Sprint 18 中,我們還對插件同步機制進行了改進,增加了按周期自動同步和歷史版本同步機制,這樣就可以確保國內的小伙伴及時獲取到最新的VSCode插件,
相關修改可以參考 https://github.com/SmartIDE/eclipse-openvsx/issues/2
以上PR已經在2022年5月18日合并進入OpenSumi的主分支,安裝 OpenSumi 的最新版就已經可以體驗插件極速安裝的快感了,
- OpenSumi 官網地址 https://opensumi.com
- SmartIDE 插件市場地址 https://marketplace.smartide.cn/
- 類VSCode IDE更新插件市場教程 https://smartide.cn/zh/docs/manual/marketplace/config/
Dapr 微服務開發環境支持 VM-Like-Container驗證通過
Dapr 是微軟主導的云原生開源專案,2019年10月首次發布,到正式發布 V1.0 版本的不到一年的時間內,github star 數達到了 1.2萬(現在已經超過1.7萬星),超過同期的 kubernetes、istio、knative 等,發展勢頭迅猛,業界關注度非常高,
Dapr 這個詞是是 「Distributed Application runtime」的首字母縮寫,非常精煉的解釋了 dapr 是什么:dapr 是一個為應用提供分布式能力的運行時,
Dapr官網 https://dapr.io

SmartIDE 團隊 Sprint14 開源了包括 .net6 環境在內的開發者鏡像相關代碼,在那個時間點對于 .net6 技術堆疊的支持已經完整,這個迭代中,我們針對 .net6 的開發者鏡像進行了改進,增加了 VM-Like-Container 的能力,以便可以完美支持 dapr 環境的搭建和除錯,
所謂 VM-Like-Container,其實就是將容器當成虛擬機來使用,大家可能會覺得有點奇怪,既然我們都容器化了,為什么還要開倒車,回到VM呢?這個其實和開發者的需求有關,一般的容器都是為了運維環境優化,并沒有考慮開發者的訴求,或者說這兩者的訴求的相互沖突的,運維要的是穩定,因此極盡所能剝奪一切容器內不必要組件,而開發者需要靈活,需要能夠在容器內按需構建自己的所需要的各種組件,比較典型的場景就是在容器中運行docker,也即是大家所說的 DIND (Docker in Docker) 的場景,對于開發者來說,確保應用可以用容器發布的最好方式就是在自己的開發環境中可以直接執行 docker build 和 docker run,這樣才能確保自己所交付的代碼是經過容器化環境測驗的,不至于等到流水線打包并部署完成以后才發現自己的代碼其實在容器中無法正確運行,
對于開發環境而言,提供內置的Docker環境意味這開發者有更加靈活的能力構建自己專屬的定制化環境,比如運行各種型別的中間件、同時運行和除錯應用的多個版本,臨時組網進行測驗等等,對于Dapr而言,dapr的開發工具需要使用docker環境來模擬微服務邊車 (sidecar) 的很多能力,比如最常見的服務發現和訊息佇列,都需要dapr運行一些中間件來提供相關的服務,以下就是在 SmartIDE 的 .net6(vscode) 開發環境中,運行一個機遇dapr的示例應用的截圖:
示例代碼庫地址:https://github.com/SmartIDE/sample-dapr-traffic-control

在這個示例中,我們使用了 dapr init 來初始化 dapr 開發環境,運行 dapr 的基礎服務,然后啟動 Mosquitto 作為 MQTT broker,RabbitMQ 作為訊息佇列以及其他的基礎服務,應用本身需要至少4個微服務組件才能正常作業:
TrafficControlService是交通控制服務,也是主服務,其業務邏輯是根據公路上的2個固定位置攝像頭反饋的資料,計算車輛通過攝像頭的車速,以便判斷是否存在超速行為,FineCollectionService是罰單處理服務,根據TrafficControlService發送過來的車牌資料,查詢車輛注冊資料庫(VehicleRegistrationService)獲取聯系人資訊,并發送郵件VehicleRegistrationService是車輛注冊資料庫,提供車輛資訊查詢,可以通過車牌號碼獲取車主資訊,比如郵件地址,Simulation/VisualSimuation是一個模擬器應用,用于模擬車輛行為,以便可以測驗以上服務的作業情況,在上圖中展示的是VisualSimulation的畫面,

下面這個視頻完整演示了如何使用 SmartIDE開發除錯 經典的Dapr示例 dapr-traffice-control,相關的啟動命令如下
smartide start https://github.com/SmartIDE/sample-dapr-traffic-control
視頻地址:https://www.bilibili.com/video/BV1iv4y1A7v4?spm_id_from=333.999.0.0
Jupyter Notebook 環境支持
遠程作業區 的一個重要優勢就是可以幫助開發者更好的利用遠程主機的強大算力和資料處理能力,在這個領域中 Jupyter Notebook 無疑是非常典型的應用型別,我們在 Sprint 18 中增加了對 Jupyter Notebook 的遠程作業區支持,現在開發者可以使用一個簡單的指令就可以啟動預裝 Jupyter Notebook 的遠程作業區,并且通過 --host 引數將這個 作業區漫游 到任意主機或者k8s環境中,相關指令如下:
## 啟動使用 Jupyter Notebook 的資料科學處理開發者容器
smartide new anaconda -t jupyter
## 在遠程主機上啟動
### 首先將自己的主機添加到 SmartIDE工具中,并獲取hostId
smartide host add <Ip-Address> --username <user> --password <pwd>
### 使用 --host 引數再次啟動
smartide new --host <hostId> anaconda -t jupyter
使用以上方式啟動的 Jupyter Notebook 環境還會內置一個 VSCode WebIDE,這樣可以利用內置的Git管理工具將制作好的 Notebook 提交到Git代碼倉庫中進行版本管理, 其他開發者就可以使用 smartide start <代碼庫地址> 指令一鍵將同樣的環境漫游到自己的本地開發機,主機或者k8s上,
為了讓大家更容易體驗,我們為大家提供了一個預置了示例 Notebook 的代碼庫,這個示例中內置了一個新冠疫情資料分析Notebook,
示例地址 https://github.com/SmartIDE/sample-anaconda-jupyter
使用這個 Notebook 對上海和北京最近的疫情資料的分析結果如下:

備注:以上資料分析僅為展示SmartIDE的產品特性,資料處理的非常粗糙,歡迎對
Juypter Notebook開發有興趣的小伙伴提交PR改進我們的分析演算法,
大家可以使用以下指令一鍵啟動上面這個示例
## 在本地開發機上啟動
smartide start https://github.com/SmartIDE/sample-anaconda-jupyter.git
## 在遠程主機上啟動
smartide start --host <hostId> https://github.com/SmartIDE/sample-anaconda-jupyter.git
啟動以后的效果如下,圖中:
- SmartIDE簡化指令方式
se = smartide - 內置在遠程作業區中的 VSCode WebIDE,這個遠程作業區中還預置了 Python 環境,開發者可以直接在VSCode中使用Python語言進行編程,
- 內置在作業區中的
Jupyter Notebook,加載了 “新冠疫情分析” 示例資料,這個 Notebook 通過讀取微信疫情小程式的API介面獲取實時資料,并利用圖表展示了上海過去60天疫情變化趨勢

在適配 Jupyter Notebook 的程序中,SmartIDE沒有修改一行產品代碼,完全利用我們所提供的 IDE組態檔 和 開發者鏡像模版庫 的能力完成,SmartIDE作為一款面向企業的B端產品,對于可擴展性能力的要求是根植于產品的設計核心,利用這種能力,企業在部署了SmartIDE之后無需進行二次開發就可以自助適配各種開發語言,工具和環境,大幅降低企業采納遠程作業區的技術門檻和實施成本,
下面的視頻展示了在 SmartIDE 中使用 Jupyter Notebook 分析上海和北京疫情資料的程序:
https://www.bilibili.com/video/BV1mZ4y1t7fj?spm_id_from=333.999.0.0
CLI k8s 模式支持(特性預覽)
SmartIDE CLI中已經增加了k8s相關指令,用戶現在可以使用 smartide start --k8s 來完成在k8s集群中啟動 遠程作業區 的操作,基于 計算器示例應用 的啟動命令如下:
smartide start --k8s SmartIDEAKS --namespace default --repourl https://github.com/idcf-boat-house/boathouse-calculator.git --filepath .ide/k8s.ide.yaml
使用這個指令之前用戶需要完成2個準備作業:
- 在k8s集群上安裝
smartide-file-storageclass,這個配置的目的是為了能夠讓 SmartIDE 可以支持各種型別的k8s服務,Storage Class (存盤類定義)是k8s上適配不同提供商的底層存盤driver而提供了一層隔離機制,在遠程作業區場景下,我們需要允許作業區中的多個開發容器共享的訪問同一份代碼/配置/環境變數/工具等資源,因此需要使用具備 ReadWriteMany 能力的存盤 driver, - 在本地的
.kube目錄中匯入你的k8s集群的kube-config檔案,這個步驟是為了允許 SmartIDE CLI 可以連接k8s進行操作的權限,
以下是匯入 storageclass 的相關指令,當前只提供Azure微軟云的組態檔,使用其他云平臺或者自建k8s平臺的小伙伴可以自行查找適合自己平臺的StorageClass組態檔,后續我們也會統一提供,
kubectl apply -f https://smartidedl.blob.core.chinacloudapi.cn/kubectl/resources/smartide-file-storageclass.yaml
另外,如果使用 azure-cli,可以直接使用以下指令快速創建k8s集群(測驗用途)并獲取集群的 kube-config 配置
az login
az account set -s <訂閱ID>
az group create --name <資源組名稱> --location southeastasia
az aks create -g <資源組名稱> -n <集群名稱> --location southeastasia --node-vm-size Standard_DS2_v2 --node-count 1 --disable-rbac --generate-ssh-keys
az aks get-credentials -g <資源組名稱> -n <集群名稱>
CLI k8s 模式現在已經支持一鍵啟動作業區和清除作業區操作,我們正在將這個cli能力集成到server中;在后續的迭代中大家會陸續獲得 server k8s 模式的更新,
社區早鳥計劃
如果你對云原生開發環境感興趣,請加入我們的 SmartIDE社區早鳥計劃
謝謝您對SmartIDE的關注,讓我們一起成為云原生時代的 Smart開發者, 享受 開發從未如此簡單 的快樂,
世界上不是所有的東西都是用直接經濟契約來維系的,比如:陽光,空氣,愛情和開源軟體,轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/498934.html
標籤:其他
下一篇:如何為visio擴展云服務圖示
