本系列文章示範如何用JHipster生成一個微服務架構風格的應用棧。
環境需求:安裝好JHipster開發環境的CentOS 7.4(
參考這裡)
應用棧名稱:appstack
認證微服務: uaa
業務微服務:microservice1
網關微服務:gateway
實體名:role
主機IP:192.168.220.120
1 生成認證微服務的工程代碼
因為業務微服務和網關微服務都會依賴uaa,是以首先生成uaa的工程代碼。
進入appstack/uaa目錄,輸入指令後回車:
$ cd appstack/uaa/
$ jhipster
指令行輸出JHipster啟動資訊

現在開始問答環節
1.1 Which type of application would you like to create?
選擇生成的微服務類型
這是一個單選題,有4個選項,使用上下鍵切換選項。
這裡選擇
JHipster UAA server
,這是一種基于OAuth認證機制的微服務。
單擊回車繼續。
1.2 What is the base name of your application?
輸入微服務的名稱
預設名稱是目前目錄名
uaa
,也可以自己輸入名稱。
注意:名稱隻能是大小寫字母,數字和下劃線的任意組合,不允許任何其它字元。
1.3 As you are running in a microservice architecture, on which port would like your server to run? It should be unique to avoid port conflicts.
輸入微服務的端口号
預設端口号是
9999
,也可以自己輸入端口号,注意不要和别的微服務和程序的端口号沖突。
1.4 What is your default Java package name?
輸入微服務的java包名
根據整個應用棧的目錄層級,這裡輸入包名
com.mycompany.appstack
。
注意:包名要符合Java标準規範的要求。
1.5 Which service discovery server do you want to use?
選擇一個服務發現元件
這是一個單選題,有3個選項,使用上下鍵切換選項。
根據微服務體系規劃,這裡選擇
JHipster Registry
1.6 Which type of database would you like to use?
選擇使用的資料庫類型
可以看到支援的資料庫類型很多,這裡選擇預設選項
SQL
1.7 Which production database would you like to use?
選擇生産環境中使用的資料庫
這是一個單選題,有5個選項,使用上下鍵切換選項。
可以看到目前支援5種SQL資料庫,這裡選擇預設選項
MySQL
1.8 Which development database would you like to use?
選擇開發環境中使用的資料庫
H2調試起來簡單,但為了和生産環境保持一緻性,這裡選擇
MySQL
1.9 Do you want to use the Spring cache abstraction?
是否需要使用Spring Cache?
根據實際場景需要,可以選擇不同緩存元件;這裡簡單起見,選擇
No - Warning, when using an SQL database, this will disable the Hibernate 2nd level cache!
1.10 Would you like to use Maven or Gradle for building the backend?
選擇使用Maven還是Gradle來建構微服務
這是一個單選題,有2個選項,使用上下鍵切換選項。
根據自己的開發環境需要,選擇相應的建構工具,這裡選擇預設選項
Maven
1.11 Which other technologies would you like to use?
選擇需要用到的技術元件
這是一個多選題,有4個選項,使用上下鍵切換選項,使用空格鍵選中選項,使用a鍵全選,使用i鍵取消全選。
根據自己的技術架構規劃,選擇相應的技術元件,也可以都不選擇。
1.12 Would you like to enable internationalization support?
是否需要國際化支援?
預設選擇是
Y
,如果不需要,輸入
n
;這裡選擇預設選項
Y
1.13 Please choose the native language of the application
選擇國際化支援中的母語
這是一個單選題,有37個選項,使用上下鍵切換選項。
注意:這個問題和上一個問題(1.12)的選擇有關聯性,上一個問題如果選擇
n
,這個問題不會出現。
1.14 Please choose additional languages to install
選擇國際化支援中的其它語言
這是一個多選題,有37個選項,使用上下鍵切換選項,使用空格鍵選中選項,使用a鍵全選,使用i鍵取消全選。
根據自己的業務規劃,選擇相應的語言,也可以都不選擇。
1.15 Besides JUnit and Jest, which testing frameworks would you like to use?
選擇單元測試工具
這是一個多選題,有2個選項,使用上下鍵切換選項,使用空格鍵選中選項,使用a鍵全選,使用i鍵取消全選。
1.16 Would you like to install other generators from the JHipster Marketplace?
是否需要從JHipster市場中安裝其它的開發工具?
N
,如果需要啟用,輸入
y
N
問答結束,開始生成工程代碼
這個過程,根據電腦性能和網速的不同,通常需要1-3分鐘。
至此,生成認證微服務工程代碼成功完成。可以在appstack/uaa目錄下檢視所有生成的檔案。
2 認證微服務的資料庫配置
2.1 啟動一個資料庫容器
在指令行,任意目錄下,啟動一個mysql容器;如果本地沒有mysql:5的鏡像,容器啟動時會自動去docker store下載下傳鏡像。
$ docker container run --name uaa-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d -p 32900:3306 mysql:5
2.2 在資料庫中建立schema
通過用戶端連接配接上剛啟動的資料庫容器,添加一個名為
uaa
的schema。微服務啟動時會自動在這個schema裡面建立資料表。
2.3 修改微服務的資料庫配置
spring.datasource.url中的端口号
32900
,與步驟2.1中-p參數指定的值保持一緻。
spring.datasource.url中的schema名稱
uaa
,與步驟2.2中添加的schema名稱保持一緻。
spring.datasource.password的值
my-secret-pw
,與步驟2.1中
MYSQL_ROOT_PASSWORD
參數指定的值保持一緻。
$ cd uaa/
$ vi src/main/resources/config/application-dev.yml
# 修改資料庫連接配接相關配置
spring:
datasource:
url: jdbc:mysql://localhost:32900/uaa?useUnicode=true&characterEncoding=utf8&useSSL=false
username: root
password: my-secret-pw
3 認證微服務的建構和啟動
3.1 建構
進入uaa目錄,輸入指令後回車:
$ cd uaa/
$ mvn -Pdev package
如果一切正常,指令行會輸出建構成功資訊:
3.2 啟動
$ nohup ./target/uaa-0.0.1-SNAPSHOT.war &
通過tail指令,檢視啟動日志:
$ tail -f nohup.out
如果一切正常,日志會輸出啟動成功資訊:
3.3 注冊到JHipster Registry
啟動完成後,可以通過浏覽器通路
http://192.168.220.120:8761
,登入名和密碼預設都是
admin
:
可以看到在Instances Registered區域,uaa已經注冊。
系列文章
JHipster生成微服務架構的應用棧(一)- 準備工作JHipster生成微服務架構的應用棧(二)- 認證微服務示例
JHipster生成微服務架構的應用棧(三)- 業務微服務示例 JHipster生成微服務架構的應用棧(四)- 網關微服務示例 JHipster生成微服務架構的應用棧(五)- 容器編排示例你現在的氣質裡,藏着你走過的路,讀過的書,愛過的人。