JHipster生成微服務架構的應用棧(四)- 網關微服務示例


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

1 生成網關微服務的工程代碼

進入appstack/gateway目錄,輸入命令后回車:

$ cd gateway/
$ jhipster

命令行輸出JHipster啟動信息

現在開始問答環節

1.1 Which type of application would you like to create?

選擇生成的應用類型
這是一個單選題,有4個選項,使用上下鍵切換選項。
這里選擇Microservice gateway,也就是網關微服務。

單擊回車繼續。

1.2 What is the base name of your application?

輸入應用的名稱
默認名稱是當前目錄名gateway,也可以自己輸入名稱;這里使用默認名稱。
注意:名稱只能是大小寫字母,數字和下划線的任意組合,不允許任何其它字符。

單擊回車繼續。

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.

輸入微服務的端口號
默認端口號是8080,也可以自己輸入端口號,注意不要和別的微服務和進程的端口號沖突。

單擊回車繼續。

1.4 What is your default Java package name?

輸入應用的java包名
默認java包名是com.mycompany.myapp,也可以自己輸入包名;這里使用默認包名。
注意:包名要符合Java標准規范的要求。

單擊回車繼續。

1.5 Which service discovery server do you want to use?

選擇一個服務發現組件
這是一個單選題,有3個選項,使用上下鍵切換選項。
根據微服務體系規划,這里選擇JHipster Registry

單擊回車繼續。

1.6 Which type of authentication would you like to use?

選擇使用的認證類型
這是一個單選題,有3個選項,使用上下鍵切換選項。
根據微服務體系規划,這里選擇Authentication with JHipster UAA server (the server must be generated separately)

單擊回車繼續。

1.7 What is the folder path of your UAA application?

輸入uaa微服務所在的目錄
這是一個相對於gateway的相對路徑,默認路徑是../uaa,這就是我們之前生成uaa工程的目錄所在;如果之前生成的uaa目錄名是myuaa,那么這里要輸入../myuaa
注意:這個問題和上一個問題(1.6)的選擇有關聯性,上一個問題的不同選擇,會導致后續不同問題的出現。

單擊回車繼續。

1.8 Which type of database would you like to use?

選擇使用的數據庫類型
這是一個單選題,有4個選項,使用上下鍵切換選項。
可以看到支持的數據庫類型很多,這里選擇默認選項SQL

單擊回車繼續。

1.9 Which production database would you like to use?

選擇生產環境中使用的數據庫
這是一個單選題,有5個選項,使用上下鍵切換選項。
可以看到目前支持5種SQL數據庫,這里選擇默認選項MySQL

單擊回車繼續。

1.10 Which development database would you like to use?

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

單擊回車繼續。

1.11 Do you want to use Hibernate 2nd level cache?

是否需要使用Hibernate 2級緩存?
默認選擇是Y,如果不需要,輸入n;這里選擇默認選項Y

單擊回車繼續。

1.12 Would you like to use Maven or Gradle for building the backend?

選擇使用Maven還是Gradle來構建微服務
這是一個單選題,有2個選項,使用上下鍵切換選項。
根據自己的開發環境需要,選擇相應的構建工具,這里選擇默認選項Maven

單擊回車繼續。

1.13 Which other technologies would you like to use?

選擇需要用到的技術組件
這是一個多選題,有4個選項,使用上下鍵切換選項,使用空格鍵選中選項,使用a鍵全選,使用i鍵取消全選。
根據自己的技術架構規划,選擇相應的技術組件,也可以都不選擇。

單擊回車繼續。

1.14 Which Framework would you like to use for the client?

選擇前端框架
這是一個單選題,有2個選項,使用上下鍵切換選項。
根據自己的技術架構規划,選擇相應的前端框架,這里選擇默認選項Angular 6

單擊回車繼續。

1.15 Would you like to enable SASS support using the LibSass stylesheet preprocessor?

是否需要啟用樣式表預處理來支持SASS?
默認選擇是N,如果需要啟用,輸入y;這里選擇默認選項N

單擊回車繼續。

1.16 Would you like to enable internationalization support?

是否需要國際化支持?
默認選擇是Y,如果不需要,輸入n;這里選擇默認選項Y

單擊回車繼續。

1.17 Please choose the native language of the application

選擇國際化支持中的母語
這是一個單選題,有37個選項,使用上下鍵切換選項。
注意:這個問題和上一個問題(1.16)的選擇有關聯性,上一個問題如果選擇n,這個問題不會出現。

單擊回車繼續。

1.18 Please choose additional languages to install

選擇國際化支持中的其它語言
這是一個多選題,有37個選項,使用上下鍵切換選項,使用空格鍵選中選項,使用a鍵全選,使用i鍵取消全選。
根據自己的業務規划,選擇相應的語言,也可以都不選擇。

單擊回車繼續。

1.19 Besides JUnit and Jest, which testing frameworks would you like to use?

選擇單元測試工具
這是一個多選題,有2個選項,使用上下鍵切換選項,使用空格鍵選中選項,使用a鍵全選,使用i鍵取消全選。
根據自己的技術架構規划,選擇相應的技術組件,也可以都不選擇。

單擊回車繼續。

1.20 Would you like to install other generators from the JHipster Marketplace?

是否需要從JHipster市場中安裝其它的開發工具?
默認選擇是N,如果需要啟用,輸入y;這里選擇默認選項N

單擊回車繼續。

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

這個過程可能會有點長,根據電腦性能和網速的不同,通常需要3-5分鍾。

至此,生成工程代碼成功完成。可以在appstack/gateway目錄下查看所有生成的文件。

2 生成實體代碼

接下來,是為microservice1中的實體表role生成前端資源。
在開始之前,確保microservice1已經為實體role生成過后端代碼。
進入appstack/gateway目錄,輸入命令后回車:

$ cd gateway/
$ jhipster entity role

命令行輸出實體已創建

現在開始問答環節

2.1 Do you want to generate this entity from an existing microservice?

是否為一個現有的業務微服務的實體生成前端資源?
默認選擇是Y,如果不需要添加,輸入n;這里選擇默認選項Y

單擊回車繼續。

2.2 Enter the path to the microservice root directory:

輸入這個現有的業務微服務的路徑
這是一個相對於gateway的相對路徑,對於microservice1工程來說,這里要輸入../microservice1

單擊回車繼續。

2.3 Do you want to update the entity? This will replace the existing files for this entity, all your custom code will be overwritten

是否要更新這個實體
這是一個單選題,有4個選項,使用上下鍵切換選項。
4個選項的意思分別是是的,重新生成這個實體是的,增加字段和關系是的,刪除字段和關系不,退出。這里選擇Yes, re generate the entity

單擊回車繼續。

問答結束,開始生成實體代碼

這個過程中會提示與已有文件有沖突,需要選擇處理方式,提示的輸入選項是Ynaxdh,說明如下:

Y: yes (Default)
n: no
a: yes to this question and all others (or always yes).
x: abort (exit)
d: show the differences between the old and the new file
h: help, list all options

這里選擇a

單擊回車。這里主要是生成實體對應的前端資源,根據實體的復雜程度不同,耗時也不盡相同,我們這個示例只有1個字段,生成很快,通常1-2分鍾就能完成。

至此,生成實體代碼成功完成。可以執行maven測試命令來驗證整個工程代碼(如果生成工程代碼時選擇的構建工具是Maven)

$ mvn test

如果一切正常,命令行會輸出成功信息:

3 生成前端資源

之前在生成工程代碼時選擇的前端組件是Angular,所以前端資源會按如下流程生成:
a, 生成工程代碼或者實體代碼的任務完成后,會自動觸發執行yarn install
b, yarn install執行完成后,會自動觸發執行webpack:build
c, webpack:build執行完成后,所有前端資源就已經生成了,默認是在gateway/target/www目錄下。

調試前端頁面

進入gateway目錄,輸入命令后回車:

$ cd gateway/
$ yarn start

如果一切正常,會啟動Webpack dev-server;

可通過瀏覽器訪問http://192.168.220.120:9000查看前端調試頁面。此時所有前端資源的修改,都會同步更新到瀏覽器上。

4 數據庫配置

4.1 啟動一個數據庫容器

在命令行,任意目錄下,啟動一個mysql容器;如果本地沒有mysql:5的鏡像,容器啟動時會自動去docker store下載鏡像。

$ docker container run --name gateway-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d -p 32800:3306 mysql:5

4.2 在數據庫中創建schema

通過客戶端連接上剛啟動的數據庫容器,添加一個名為gateway的schema。應用啟動時會自動在這個schema里面創建數據表。

4.3 修改應用的數據庫配置

spring.datasource.url中的端口號32800,與步驟4.1中-p參數指定的值保持一致。
spring.datasource.url中的schema名稱gateway,與步驟4.2中添加的schema名稱保持一致。
spring.datasource.password的值my-secret-pw,與步驟4.1中MYSQL_ROOT_PASSWORD參數指定的值保持一致。

$ cd gateway/
$ vi src/main/resources/config/application-dev.yml
# 修改數據庫連接相關配置
spring:
    datasource:
        url: jdbc:mysql://localhost:32800/gateway?useUnicode=true&characterEncoding=utf8&useSSL=false
        username: root
        password: my-secret-pw

5 構建和啟動

5.1 構建

進入gateway目錄,輸入命令后回車:

$ cd gateway/
$ mvn -Pdev package

如果一切正常,命令行會輸出構建成功信息:

5.2 啟動

進入gateway目錄,輸入命令后回車:

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

通過tail命令,查看啟動日志:

$ tail -f nohup.out

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

5.3 注冊到JHipster Registry

啟動完成后,可以通過瀏覽器訪問http://192.168.220.120:8761,登錄名和密碼默認都是admin

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

6 訪問網關微服務UI

6.1 訪問首頁

通過瀏覽器訪問http://192.168.220.120:8080,進入網關微服務的首頁:

點擊右上角賬號 - 登錄, 默認用戶名和密碼都是admin

6.2 實體頁面

登錄之后可以看到頁頭上的菜單,數據菜單下就是所有實體的操作頁面,這里能看到生成的實體role的子菜單:

點擊role子菜單,進入role實體的操作頁面,這里已經生成了基本的增刪改查功能,如果需要更多功能,就要定制開發了:

6.3 管理頁面

這里包括了如下功能頁面:

  • 網關
  • 用戶管理
  • 資源監控
  • 服務狀態
  • 配置
  • 審核
  • 日志
  • API

頁面功能都很直觀,點進去看一看就知道了。

6.4 語言頁面

這里就是國際化支持的頁面,生成工程代碼時選擇了哪些語言,這里就會提供哪些語言的子菜單:

源碼

jhi-example-appstack

系列文章

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM