Rainbond 服務間通訊策略,埠別名的巧用
今天給大家介紹一下 Rainbond 的一個小技巧——埠別名。
埠別名,顧名思義,是給元件埠定義一個別名。
埠別名的設定
當進入到埠管理頁面,點選使用別名,即可設定埠的別名,如下圖所示:
埠別名的作用
定義好埠別名後,Rainbond 會為該別名生成兩個對外環境變數:埠別名_HOST和埠別名_PORT。比如,埠別名是 MYSQL,則對應的環境變數就是MYSQL_HOST和MYSQL_HOST。
不知道大家發現沒有,這兩個環境變數,其實就是該埠的訪問方式,訪問方式=埠別名_HOST:埠別名_PORT。 比如:埠別名是 MYSQL,對應的訪問方式就是MYSQL_HOST:MYSQL_PORT,即127.0.0.1:3306。
還有一個很重要的點就是,不管元件所屬應用的治理模式怎麼變,埠別名_HOST都可以感知到。
也就是說,只要需要訪問該埠的元件依賴上該元件,則可以很方便地知道其訪問方式;不管應用的治理模式怎麼變化,這個訪問的方式會作出相應的變化,一直保持是正確的。
Spring 元件連線 MySQL
為了做更進一步的說明,我們以Spring 元件連線 MySQL為例,看看 Spring 是如何方便地獲取 MySQL 的訪問方式。
熟悉 Spring 的同學可能知道,其配置檔案可以是這樣子的:
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:${MYSQL_PORT:localhost}/db_example
spring.datasource.username=springuser
spring.datasource.password=ThePassword
可能有些同學不熟悉 Spring,不過沒有關係。我們只需要知道,Spring 會用環境變數去渲染配置檔案裡的變數。
只要 Spring 元件依賴了 MySQL 元件,Rainbond 則會把 MySQL 元件的對外環境變數注入到 Spring 元件裡。
換句話說,Spring 元件依賴了 MySQL 之後,就會自動地得到環境變數MYSQL_HOST和MYSQL_HOST。如果 MYSQL_HOST=127.0.0.1,MYSQL_PORT=3306, 經 Spring 渲染後,資料庫的連結地址則變成了spring.datasource.url=jdbc:mysql://127.0.0。1:3306/db_example,從而可以正確的訪問 MySQL 元件。
總結
埠別名是 Rainbond 元件間的通訊裡的一個非常方便的功能,通過為埠設定別名,可以很方便地獲取到該埠的訪問方式。
Rainbond 雲原生應用管理平臺,實現微服務架構不用改程式碼,管理 Kubernetes 不用學容器,幫企業實現應用上雲,一站式將任何企業應用持續交付到 Kubernetes 叢集、混合雲、多雲等基礎設施。是 Rainstore 雲原生應用商店的支撐平臺。
1. Rainbond 官網
2. Rainbond 安裝使用
3. Rainbond 參考手冊全集