天天看點

JHipster生成微服務架構的應用棧(二)- 認證微服務示例1 生成認證微服務的工程代碼2 認證微服務的資料庫配置3 認證微服務的建構和啟動系列文章

本系列文章示範如何用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啟動資訊

JHipster生成微服務架構的應用棧(二)- 認證微服務示例1 生成認證微服務的工程代碼2 認證微服務的資料庫配置3 認證微服務的建構和啟動系列文章

現在開始問答環節

1.1 Which type of application would you like to create?

選擇生成的微服務類型

這是一個單選題,有4個選項,使用上下鍵切換選項。

這裡選擇

JHipster UAA server

,這是一種基于OAuth認證機制的微服務。

JHipster生成微服務架構的應用棧(二)- 認證微服務示例1 生成認證微服務的工程代碼2 認證微服務的資料庫配置3 認證微服務的建構和啟動系列文章

單擊回車繼續。

1.2 What is the base name of your application?

輸入微服務的名稱

預設名稱是目前目錄名

uaa

,也可以自己輸入名稱。

注意:名稱隻能是大小寫字母,數字和下劃線的任意組合,不允許任何其它字元。

JHipster生成微服務架構的應用棧(二)- 認證微服務示例1 生成認證微服務的工程代碼2 認證微服務的資料庫配置3 認證微服務的建構和啟動系列文章
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

,也可以自己輸入端口号,注意不要和别的微服務和程序的端口号沖突。

JHipster生成微服務架構的應用棧(二)- 認證微服務示例1 生成認證微服務的工程代碼2 認證微服務的資料庫配置3 認證微服務的建構和啟動系列文章
1.4 What is your default Java package name?

輸入微服務的java包名

根據整個應用棧的目錄層級,這裡輸入包名

com.mycompany.appstack

注意:包名要符合Java标準規範的要求。

JHipster生成微服務架構的應用棧(二)- 認證微服務示例1 生成認證微服務的工程代碼2 認證微服務的資料庫配置3 認證微服務的建構和啟動系列文章
1.5 Which service discovery server do you want to use?

選擇一個服務發現元件

這是一個單選題,有3個選項,使用上下鍵切換選項。

根據微服務體系規劃,這裡選擇

JHipster Registry

JHipster生成微服務架構的應用棧(二)- 認證微服務示例1 生成認證微服務的工程代碼2 認證微服務的資料庫配置3 認證微服務的建構和啟動系列文章
1.6 Which type of database would you like to use?

選擇使用的資料庫類型

可以看到支援的資料庫類型很多,這裡選擇預設選項

SQL

JHipster生成微服務架構的應用棧(二)- 認證微服務示例1 生成認證微服務的工程代碼2 認證微服務的資料庫配置3 認證微服務的建構和啟動系列文章
1.7 Which production database would you like to use?

選擇生産環境中使用的資料庫

這是一個單選題,有5個選項,使用上下鍵切換選項。

可以看到目前支援5種SQL資料庫,這裡選擇預設選項

MySQL

JHipster生成微服務架構的應用棧(二)- 認證微服務示例1 生成認證微服務的工程代碼2 認證微服務的資料庫配置3 認證微服務的建構和啟動系列文章
1.8 Which development database would you like to use?

選擇開發環境中使用的資料庫

H2調試起來簡單,但為了和生産環境保持一緻性,這裡選擇

MySQL

JHipster生成微服務架構的應用棧(二)- 認證微服務示例1 生成認證微服務的工程代碼2 認證微服務的資料庫配置3 認證微服務的建構和啟動系列文章
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!

JHipster生成微服務架構的應用棧(二)- 認證微服務示例1 生成認證微服務的工程代碼2 認證微服務的資料庫配置3 認證微服務的建構和啟動系列文章
1.10 Would you like to use Maven or Gradle for building the backend?

選擇使用Maven還是Gradle來建構微服務

這是一個單選題,有2個選項,使用上下鍵切換選項。

根據自己的開發環境需要,選擇相應的建構工具,這裡選擇預設選項

Maven

JHipster生成微服務架構的應用棧(二)- 認證微服務示例1 生成認證微服務的工程代碼2 認證微服務的資料庫配置3 認證微服務的建構和啟動系列文章
1.11 Which other technologies would you like to use?

選擇需要用到的技術元件

這是一個多選題,有4個選項,使用上下鍵切換選項,使用空格鍵選中選項,使用a鍵全選,使用i鍵取消全選。

根據自己的技術架構規劃,選擇相應的技術元件,也可以都不選擇。

JHipster生成微服務架構的應用棧(二)- 認證微服務示例1 生成認證微服務的工程代碼2 認證微服務的資料庫配置3 認證微服務的建構和啟動系列文章
1.12 Would you like to enable internationalization support?

是否需要國際化支援?

預設選擇是

Y

,如果不需要,輸入

n

;這裡選擇預設選項

Y

JHipster生成微服務架構的應用棧(二)- 認證微服務示例1 生成認證微服務的工程代碼2 認證微服務的資料庫配置3 認證微服務的建構和啟動系列文章
1.13 Please choose the native language of the application

選擇國際化支援中的母語

這是一個單選題,有37個選項,使用上下鍵切換選項。

注意:這個問題和上一個問題(1.12)的選擇有關聯性,上一個問題如果選擇

n

,這個問題不會出現。

JHipster生成微服務架構的應用棧(二)- 認證微服務示例1 生成認證微服務的工程代碼2 認證微服務的資料庫配置3 認證微服務的建構和啟動系列文章
1.14 Please choose additional languages to install

選擇國際化支援中的其它語言

這是一個多選題,有37個選項,使用上下鍵切換選項,使用空格鍵選中選項,使用a鍵全選,使用i鍵取消全選。

根據自己的業務規劃,選擇相應的語言,也可以都不選擇。

JHipster生成微服務架構的應用棧(二)- 認證微服務示例1 生成認證微服務的工程代碼2 認證微服務的資料庫配置3 認證微服務的建構和啟動系列文章
1.15 Besides JUnit and Jest, which testing frameworks would you like to use?

選擇單元測試工具

這是一個多選題,有2個選項,使用上下鍵切換選項,使用空格鍵選中選項,使用a鍵全選,使用i鍵取消全選。

JHipster生成微服務架構的應用棧(二)- 認證微服務示例1 生成認證微服務的工程代碼2 認證微服務的資料庫配置3 認證微服務的建構和啟動系列文章
1.16 Would you like to install other generators from the JHipster Marketplace?

是否需要從JHipster市場中安裝其它的開發工具?

N

,如果需要啟用,輸入

y

N

JHipster生成微服務架構的應用棧(二)- 認證微服務示例1 生成認證微服務的工程代碼2 認證微服務的資料庫配置3 認證微服務的建構和啟動系列文章

問答結束,開始生成工程代碼

這個過程,根據電腦性能和網速的不同,通常需要1-3分鐘。

JHipster生成微服務架構的應用棧(二)- 認證微服務示例1 生成認證微服務的工程代碼2 認證微服務的資料庫配置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           

如果一切正常,指令行會輸出建構成功資訊:

JHipster生成微服務架構的應用棧(二)- 認證微服務示例1 生成認證微服務的工程代碼2 認證微服務的資料庫配置3 認證微服務的建構和啟動系列文章

3.2 啟動

$ nohup ./target/uaa-0.0.1-SNAPSHOT.war &           

通過tail指令,檢視啟動日志:

$ tail -f nohup.out           

如果一切正常,日志會輸出啟動成功資訊:

JHipster生成微服務架構的應用棧(二)- 認證微服務示例1 生成認證微服務的工程代碼2 認證微服務的資料庫配置3 認證微服務的建構和啟動系列文章

3.3 注冊到JHipster Registry

啟動完成後,可以通過浏覽器通路

http://192.168.220.120:8761

,登入名和密碼預設都是

admin

JHipster生成微服務架構的應用棧(二)- 認證微服務示例1 生成認證微服務的工程代碼2 認證微服務的資料庫配置3 認證微服務的建構和啟動系列文章

可以看到在Instances Registered區域,uaa已經注冊。

系列文章

JHipster生成微服務架構的應用棧(一)- 準備工作

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

JHipster生成微服務架構的應用棧(三)- 業務微服務示例 JHipster生成微服務架構的應用棧(四)- 網關微服務示例 JHipster生成微服務架構的應用棧(五)- 容器編排示例

你現在的氣質裡,藏着你走過的路,讀過的書,愛過的人。