如何快速搭建微服務開發測試環境
如何快速搭建微服務開發測試環境
一、背景
作為後端開發一名,在某天下午接到緊急任務,需要根據客戶需求快速搭建一套微服務架構的開發測試環境,以供客戶聯調。但是我們是小公司資源有限,在個人電腦上部署又很難對外提供服務。
經過一番查找,市場上符合開箱即用條件的廠商不多,有一些還是需要公有雲或私有雲部署,能提供開箱即用的SaaS化服務的就更少了。
比如:華為雲提供了軟體開發平台DevCloud,騰訊雲收購CODING後也推出了自己的研發管理平台,但是要使用這些大廠的服務,就要為他們的其他生態工具買單,在前期投入有限的情況下,只能放棄。
二、CODING
我們先來看一下CODING,功能很完善,從文檔管理、項目協同到部署測試,但是部署資源卻需要自己準備,官方只提供有效期為6個小時到示例集群。
三、華為雲
華為雲提供的軟體開發平台DevCloud同樣也有類似的功能,不過這類雲服務運營商,通常只能將應用部署在自家雲伺服器上。
四、StarOS
最後在朋友的推薦下,發現有一個名叫StarOS的一站式雲原生在線開發平台,正在進行公開試用,各項服務暫時免費,提供免運維的容器集群,開箱即用的研發設施,非常符合我的需求。
StarOS主要分為:應用工廠、應用商店、雲端編碼三大板塊。
1. 應用工廠
應用工廠顧名思義就是應用生產、發布的地方。StarOS最大的特色就是使用了組件化、可視化、可拖拉拽的應用編排模式,使得整個架構一目了然,非常清晰。
2. 應用商店
在應用商店裡是平台內置的應用,可供用戶快速發布自己想要的應用。
3. 雲端編碼
雲端編碼也就是在線IDE,可以在線編輯程式碼組件所引用的程式碼並推送。
五、搭建微服務架構圖
為了方便其他人員維護,特次記錄一下過程。
首先要做的準備工作:
- 確保在程式碼中使用環境變數來讀取被調用服務地址,並上傳至GitHub。
- 準備好nacos的docker鏡像(nacos/nacos-server:latest)。
- 準備好mysql8的docker鏡像(mysql:8)。
- 準備好mysql數據的初始化腳本,在mysql資料庫發布後執行(//github.com/alibaba/nacos/blob/develop/distribution/conf/nacos-mysql.sql)。
1. 搭建mysql
首先新建一個mysql8的項目,使用鏡像組件發布一個mysql應用,發布成功後使用nacos的sql腳本初始化資料庫。
鏡像組件的使用比較簡單,只需架構圖中拖入一個鏡像組件,並在鏡像地址欄中填寫mysql8的docker鏡像地址就好了。
如下圖。
然後配置mysql8組件的參數,暴露網路服務埠號3306。
設置環境變數MYSQL_ROOT_PASSWORD為組件參數PASSWORD,組件參數是組件對外提供的可配置選項,參數的值將由用戶在發布組件時錄入,也可以通過組件間連線由其他組件的輸出參數傳入。
再設置mysql的存儲路徑用於數據持久化。
組件設置完成後保存架構圖,點擊發布按鈕就可以發布mysql應用了。
在應用發布介面,mysql的訪問地址和3306埠都會隨機生成,當然也可以自行定義。
填寫好參數PASSWORD的值和mysql數據持久化的數據卷就可以發布了。
發布成功後,就可以通過mysql的訪問域名和埠進行連接了。
可以用navicat連接資料庫,然後用nacos的sql腳本初始化mysql資料庫。
為了讓mysql資料庫在其他項目中被使用,可在發布-運維監控
介面點擊組件的更多設置
,打開允許項目外調用
的開關。
資料庫準備好後,就可以搭建nacos了。
2. 搭建nacos
資料庫搭建好後採用同樣的方法,我們新建一個Spring Cloud項目,採取鏡像組件搭建nacos應用,在配置組件時,暴露的埠號和環境變數設置可參考官方docker部署文件(//github.com/nacos-group/nacos-docker/blob/master/example/standalone-mysql-8.yaml)。
搭建完nacos後,使用外部組件引入上一步搭建的mysql8資料庫。
外部服務組件是指通過網路調用的外部服務所形成的組件。其可以引用其他項目中的組件,也可以使用IP或域名,引用系統外的組件。
組件設置完成後,使用連線將這兩個組件連接起來。
註冊配置中心nacos就搭建完成了。
3. 搭建spring boot admin
接下來使用程式碼組件搭建服務監控spring boot admin,程式碼組件是指用git等源碼伺服器地址進行編譯構建的組件。
在架構圖中拖入一個程式碼組件,並綁定GitHub帳號,綁定完成後程式碼組件就可以拉取到該帳號在GitHub到程式碼倉庫了。
我的程式碼使用的是spring boot,所以在技術棧選項里選擇SpringBoot@JDK8
就好了。
然後配置組件的網路服務埠,通過環境變數NACOS_HOST
引入nacos服務地址。
組件設置完成後,使用連線將組件admin和組件nacos連接起來。
4. 搭建服務producer
參照以上步驟,使用程式碼組件搭建服務producer。
根據實際程式碼配置組件的網路服務埠,通過環境變數NACOS_HOST
引入nacos服務地址。
組件設置完成後,使用連線將組件producer和組件nacos連接起來。
5. 搭建服務cosumers
參照以上步驟,使用程式碼組件搭建服務cosumers。
根據實際程式碼配置組件的網路服務埠,通過環境變數NACOS_HOST
引入nacos服務地址。
組件設置完成後,使用連線將組件cosumers和組件nacos連接起來。
6. 搭建服務網關gateway
參照以上步驟,使用程式碼組件搭建服務網關gateway。
根據實際程式碼配置組件的網路服務埠,通過環境變數NACOS_HOST
引入nacos服務地址。
組件設置完成後,使用連線將組件gateway和組件nacos連接起來。
到這一步,一個spring cloud微服務架構的基礎框架就搭建完成了。
架構圖搭建完畢後,就可以發布應用看看效果了。
7. 發布
在發布介面,系統會自動生成各個服務的隨機域名和埠,當然也可以自定義域名和埠,要注意的是自定義域名和埠時不能重複,否則發布會失敗。
發布成功後可通過相應的域名來訪問服務。
按照以上步驟,就可以在StarOS上快速搭建一個微服務開發測試環境,真的是一鍵達成,非常方便。
後續我會繼續完善這個微服務架構,預計後面會加入鏈路追蹤、消息隊列等。