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

好大的泡泡發表於2021-08-17

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

一、背景

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

經過一番查詢,市場上符合開箱即用條件的廠商不多,有一些還是需要公有云或私有云部署,能提供開箱即用的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資料庫釋出後執行(https://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部署檔案(https://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上快速搭建一個微服務開發測試環境,真的是一鍵達成,非常方便。

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

相關文章