本系列文章演示如何用JHipster生成一個微服務架構風格的應用棧。
環境需求:安裝好JHipster開發環境的CentOS 7.4(參考這裏)
應用棧名稱:appstack
認證微服務: uaa
業務微服務:microservice1
網關微服務:gateway
實體名:role
主機IP:192.168.220.120html
由於業務微服務和網關微服務都會依賴uaa,因此首先生成uaa的工程代碼。
進入appstack/uaa目錄,輸入命令後回車:java
$ cd appstack/uaa/ $ jhipster
選擇生成的微服務類型
這是一個單選題,有4個選項,使用上下鍵切換選項。
這裏選擇JHipster UAA server
,這是一種基於OAuth認證機制的微服務。mysql
單擊回車繼續。git
輸入微服務的名稱
默認名稱是當前目錄名uaa
,也能夠本身輸入名稱。
注意:名稱只能是大小寫字母,數字和下劃線的任意組合,不容許任何其它字符。github
單擊回車繼續。spring
輸入微服務的端口號
默認端口號是9999
,也能夠本身輸入端口號,注意不要和別的微服務和進程的端口號衝突。sql
單擊回車繼續。docker
輸入微服務的java包名
根據整個應用棧的目錄層級,這裏輸入包名com.mycompany.appstack
。
注意:包名要符合Java標準規範的要求。數據庫
單擊回車繼續。瀏覽器
選擇一個服務發現組件
這是一個單選題,有3個選項,使用上下鍵切換選項。
根據微服務體系規劃,這裏選擇JHipster Registry
。
單擊回車繼續。
選擇使用的數據庫類型
這是一個單選題,有4個選項,使用上下鍵切換選項。
能夠看到支持的數據庫類型不少,這裏選擇默認選項SQL
。
單擊回車繼續。
選擇生產環境中使用的數據庫
這是一個單選題,有5個選項,使用上下鍵切換選項。
能夠看到目前支持5種SQL數據庫,這裏選擇默認選項MySQL
。
單擊回車繼續。
選擇開發環境中使用的數據庫
這是一個單選題,有3個選項,使用上下鍵切換選項。
H2調試起來簡單,但爲了和生產環境保持一致性,這裏選擇MySQL
。
單擊回車繼續。
是否須要使用Spring Cache?
這是一個單選題,有5個選項,使用上下鍵切換選項。
根據實際場景須要,能夠選擇不一樣緩存組件;這裏簡單起見,選擇No - Warning, when using an SQL database, this will disable the Hibernate 2nd level cache!
。
單擊回車繼續。
選擇使用Maven仍是Gradle來構建微服務
這是一個單選題,有2個選項,使用上下鍵切換選項。
根據本身的開發環境須要,選擇相應的構建工具,這裏選擇默認選項Maven
。
單擊回車繼續。
選擇須要用到的技術組件
這是一個多選題,有4個選項,使用上下鍵切換選項,使用空格鍵選中選項,使用a鍵全選,使用i鍵取消全選。
根據本身的技術架構規劃,選擇相應的技術組件,也能夠都不選擇。
單擊回車繼續。
是否須要國際化支持?
默認選擇是Y
,若是不須要,輸入n
;這裏選擇默認選項Y
。
單擊回車繼續。
選擇國際化支持中的母語
這是一個單選題,有37個選項,使用上下鍵切換選項。
注意:這個問題和上一個問題(1.12)的選擇有關聯性,上一個問題若是選擇n
,這個問題不會出現。
單擊回車繼續。
選擇國際化支持中的其它語言
這是一個多選題,有37個選項,使用上下鍵切換選項,使用空格鍵選中選項,使用a鍵全選,使用i鍵取消全選。
根據本身的業務規劃,選擇相應的語言,也能夠都不選擇。
單擊回車繼續。
選擇單元測試工具
這是一個多選題,有2個選項,使用上下鍵切換選項,使用空格鍵選中選項,使用a鍵全選,使用i鍵取消全選。
根據本身的技術架構規劃,選擇相應的技術組件,也能夠都不選擇。
單擊回車繼續。
是否須要從JHipster市場中安裝其它的開發工具?
默認選擇是N
,若是須要啓用,輸入y
;這裏選擇默認選項N
。
單擊回車繼續。
這個過程,根據電腦性能和網速的不一樣,一般須要1-3分鐘。
至此,生成認證微服務工程代碼成功完成。能夠在appstack/uaa目錄下查看全部生成的文件。
在命令行,任意目錄下,啓動一個mysql容器;若是本地沒有mysql:5的鏡像,容器啓動時會自動去docker store下載鏡像。
$ docker container run --name uaa-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d -p 32900:3306 mysql:5
經過客戶端鏈接上剛啓動的數據庫容器,添加一個名爲uaa
的schema。微服務啓動時會自動在這個schema裏面建立數據表。
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
進入uaa目錄,輸入命令後回車:
$ cd uaa/ $ mvn -Pdev package
若是一切正常,命令行會輸出構建成功信息:
進入uaa目錄,輸入命令後回車:
$ nohup ./target/uaa-0.0.1-SNAPSHOT.war &
經過tail命令,查看啓動日誌:
$ tail -f nohup.out
若是一切正常,日誌會輸出啓動成功信息:
啓動完成後,能夠經過瀏覽器訪問http://192.168.220.120:8761
,登陸名和密碼默認都是admin
:
能夠看到在Instances Registered區域,uaa已經註冊。
JHipster生成微服務架構的應用棧(一)- 準備工做
JHipster生成微服務架構的應用棧(二)- 認證微服務示例
JHipster生成微服務架構的應用棧(三)- 業務微服務示例
JHipster生成微服務架構的應用棧(四)- 網關微服務示例
JHipster生成微服務架構的應用棧(五)- 容器編排示例