JHipster生成微服務架構的應用棧(二)- 認證微服務示例

本系列文章演示如何用JHipster生成一個微服務架構風格的應用棧。
環境需求:安裝好JHipster開發環境的CentOS 7.4(參考這裏
應用棧名稱:appstack
認證微服務: uaa
業務微服務:microservice1
網關微服務:gateway
實體名:role
主機IP:192.168.220.120html

1 生成認證微服務的工程代碼

由於業務微服務和網關微服務都會依賴uaa,因此首先生成uaa的工程代碼。
進入appstack/uaa目錄,輸入命令後回車:java

$ cd appstack/uaa/
$ jhipster

命令行輸出JHipster啓動信息

如今開始問答環節

1.1 Which type of application would you like to create?

選擇生成的微服務類型
這是一個單選題,有4個選項,使用上下鍵切換選項。
這裏選擇JHipster UAA server,這是一種基於OAuth認證機制的微服務。mysql

單擊回車繼續。git

1.2 What is the base name of your application?

輸入微服務的名稱
默認名稱是當前目錄名uaa,也能夠本身輸入名稱。
注意:名稱只能是大小寫字母,數字和下劃線的任意組合,不容許任何其它字符。github

單擊回車繼續。spring

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,也能夠本身輸入端口號,注意不要和別的微服務和進程的端口號衝突。sql

單擊回車繼續。docker

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?

選擇使用的數據庫類型
這是一個單選題,有4個選項,使用上下鍵切換選項。
能夠看到支持的數據庫類型不少,這裏選擇默認選項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?

選擇開發環境中使用的數據庫
這是一個單選題,有3個選項,使用上下鍵切換選項。
H2調試起來簡單,但爲了和生產環境保持一致性,這裏選擇MySQL

單擊回車繼續。

1.9 Do you want to use the Spring cache abstraction?

是否須要使用Spring Cache?
這是一個單選題,有5個選項,使用上下鍵切換選項。
根據實際場景須要,能夠選擇不一樣緩存組件;這裏簡單起見,選擇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 啓動

進入uaa目錄,輸入命令後回車:

$ 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已經註冊。

源碼

jhi-example-appstack

系列文章

JHipster生成微服務架構的應用棧(一)- 準備工做
JHipster生成微服務架構的應用棧(二)- 認證微服務示例
JHipster生成微服務架構的應用棧(三)- 業務微服務示例
JHipster生成微服務架構的應用棧(四)- 網關微服務示例
JHipster生成微服務架構的應用棧(五)- 容器編排示例

相關文章
相關標籤/搜索