如何快速搭建微服務開發測試環境
一、背景
作為後端開發一名,在某天下午接到緊急任務,需要根據客戶需求快速搭建一套微服務架構的開發測試環境,以供客戶聯調。但是我們是小公司資源有限,在個人電腦上部署又很難對外提供服務。
經過一番查詢,市場上符合開箱即用條件的廠商不多,有一些還是需要公有云或私有云部署,能提供開箱即用的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資料庫釋出後執行(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上快速搭建一個微服務開發測試環境,真的是一鍵達成,非常方便。
後續我會繼續完善這個微服務架構,預計後面會加入鏈路追蹤、訊息佇列等。