如何快速搭建微服務開發測試環境

如何快速搭建微服務開發測試環境

一、背景

作為後端開發一名,在某天下午接到緊急任務,需要根據客戶需求快速搭建一套微服務架構的開發測試環境,以供客戶聯調。但是我們是小公司資源有限,在個人電腦上部署又很難對外提供服務。

經過一番查找,市場上符合開箱即用條件的廠商不多,有一些還是需要公有雲或私有雲部署,能提供開箱即用的SaaS化服務的就更少了。

比如:華為雲提供了軟體開發平台DevCloud,騰訊雲收購CODING後也推出了自己的研發管理平台,但是要使用這些大廠的服務,就要為他們的其他生態工具買單,在前期投入有限的情況下,只能放棄。

二、CODING

我們先來看一下CODING,功能很完善,從文檔管理、項目協同到部署測試,但是部署資源卻需要自己準備,官方只提供有效期為6個小時到示例集群。

三、華為雲

華為雲提供的軟體開發平台DevCloud同樣也有類似的功能,不過這類雲服務運營商,通常只能將應用部署在自家雲伺服器上。

四、StarOS

最後在朋友的推薦下,發現有一個名叫StarOS的一站式雲原生在線開發平台,正在進行公開試用,各項服務暫時免費,提供免運維的容器集群,開箱即用的研發設施,非常符合我的需求。

StarOS主要分為:應用工廠、應用商店、雲端編碼三大板塊。

1. 應用工廠

應用工廠顧名思義就是應用生產、發布的地方。StarOS最大的特色就是使用了組件化、可視化、可拖拉拽的應用編排模式,使得整個架構一目了然,非常清晰。

2. 應用商店

在應用商店裡是平台內置的應用,可供用戶快速發布自己想要的應用。

3. 雲端編碼

雲端編碼也就是在線IDE,可以在線編輯程式碼組件所引用的程式碼並推送。

五、搭建微服務架構圖

為了方便其他人員維護,特次記錄一下過程。

首先要做的準備工作:

  1. 確保在程式碼中使用環境變數來讀取被調用服務地址,並上傳至GitHub。
  2. 準備好nacos的docker鏡像(nacos/nacos-server:latest)。
  3. 準備好mysql8的docker鏡像(mysql:8)。
  4. 準備好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上快速搭建一個微服務開發測試環境,真的是一鍵達成,非常方便。

後續我會繼續完善這個微服務架構,預計後面會加入鏈路追蹤、消息隊列等。