https://www.jhipster.tech/jhipster-registry/
JHipster Registry介紹
JHipster Registry有三個作用:
- Eureka Server, 為微服務叢集提供服務注冊與發現,并提供http通路的路由和負載均衡功能
- Spring Cloud Config server,作為運作時的配置中心
- 管理中心,提供了控制台去監控并管理注冊在上面的服務
是以,要使用JHipster來搭建微服務叢集,必須要先搭建一個JHipster Registry
JHipster Registry安裝
安裝部署
非常簡單
- 從github克隆到本地:
git clone https://github.com/jhipster/jhipster-registry.git
- 如果本地啟動:
./mvnw -Pdev,webpack
- 如果打包:
,然後執行./mvnw -Pprod package
去運作java -jar jhipster-registry-<version>.jar --spring.profiles.active=prod
注意:啟動時可能會報錯,我把解決方法放在了JHipster大坑集合裡,有需要可以去看看
Spring profile
JHipster Registry是如何使用配置檔案對我們使用者來說是非常重要的
JHipster Registry擁有
dev
以及
prod
兩個不同環境的配置檔案,預設使用的是
dev
與我們一般在
application.yml
裡配置
spring.profiles.active
來指定預設環境不同,JHipster Registry是在項目的啟動類
JHipsterRegistryApp
裡定義的預設環境:
public static void main(String[] args) {
SpringApplication app = new SpringApplication(JHipsterRegistryApp.class);
//在這個方法裡設定了預設的環境是dev
DefaultProfileUtil.addDefaultProfile(app);
Environment env = app.run(args).getEnvironment();
logApplicationStartup(env);
}
JHipster Registry是怎麼作為配置中心的呢?
JHipster Registry除使用
src/main/resources
檔案夾下的配置檔案外,還使用了
composite
配置檔案(也是yml格式的配置檔案),該檔案就是實作配置中心的關鍵
composite
配置檔案在不同的環境下存放的地方不同(這裡建議打開項目的目錄去檢視)
- dev環境:本地讀取,預設放在項目根目錄下的
檔案夾下central-config
- prod環境:通過git讀取,預設在
https://github.com/jhipster/jhipster-registry-sample-config
我們可以從
central-config
檔案夾下看到,裡面已經有一個
application.yml
檔案了,這是JHipster Registry給的初始預設檔案。我們自己可以往
central-config
檔案夾下裡面加
yml
檔案來添加自己的配置
注意:
- 那如果想更改
配置檔案的存放位址怎麼辦呢?原來JHipster Registry把composite
配置檔案的設定放在了composite
目錄下的bootstrap.yml (prod環境為bootstrap-prod.yml)裡src/main/resources
- 之前提到,
配置檔案的預設目錄是在項目根目錄下的composite
檔案夾中,是以如果是打central-config
包再啟動且指定jar
時,那麼就要在--spring.profiles.active=dev
包同一目錄下建一個jar
檔案夾central-config
#截取一段dev環境的例子
cloud:
config:
server:
bootstrap: true
#具體就是這裡了
composite:
- type: native
search-locations: file:./central-config
如何使用
預設端口是8761,是以直接通路
http://localhost:8761/
即可,會出現控制台了
服務注冊與發現
很簡單,控制台首頁能看到相關資訊
配置中心
如圖,點選右上角Configuration - Cloud config
就會進入配置資訊的頁面
這裡要講一下的是,這裡的配置資訊,顯示的就是之前講的
composite
配置檔案裡的内容,
任何注冊到注冊中心的服務,都會拿到這裡的配置去覆寫掉自己的相同配置。例如,app_1 在自己的配置檔案裡自定義了一個屬性
test.name
值為
v1
,然後JHipster Registry裡也在
composite
配置檔案裡定義了一個
test.name
值為
v2
,那麼app_1 在使用這個值時,實際上值是
v2
也可以添加
appname-profile.yml
這樣名字的
composite
配置檔案(放在
composite
配置檔案的目錄下,例如dev環境就放在
central-config
檔案夾裡),這裡的
appname
指的是服務名稱,
profile
指的是環境名,例如一個名為
studentService
的服務的
dev
環境的配置檔案,就是
studentService-dev.yml
。 這個配置檔案的作用是,它隻會被
studentService
這個服務在dev環境下所讀取到。而預設的application.yml(注意,指的是
composite
預設的配置檔案,而不是springboot的那個)是所有服務公用的