在本文中,我們將著眼于代碼生成工具 JHipster 生成和支持的微服務(wù)架構(gòu)。
JHipster 是一個(gè)代碼生成工具,可以為 Kubernetes 創(chuàng)建 Web 應(yīng)用程序、微服務(wù)、部署文件、云集成和 CI/CD Jenkins 文件。這個(gè)工具對(duì)于可以快速生成代碼并避免創(chuàng)建樣板代碼的開發(fā)人員非常有幫助,可以節(jié)省 30% 的工作量。
JHipster 支持 Spring Boot 中的后端代碼和 Angular/React/Vue.js 中的前端代碼。
在本文中,我們將研究 JHipster 生成和支持的微服務(wù)架構(gòu)。
微服務(wù)是獨(dú)立的、模塊化的可部署組件,按業(yè)務(wù)領(lǐng)域模型、可擴(kuò)展、高效且可快速部署的業(yè)務(wù)功能拆分。
微服務(wù)有幾個(gè)組件組成,包括服務(wù)注冊(cè)、服務(wù)發(fā)現(xiàn)、健康檢查、彈性、容錯(cuò)和安全。
JHipster 支持以下微服務(wù)組件來完成上述組件:
1. JHipster Registry:這是服務(wù)注冊(cè)中心,不同的微服務(wù)可以在這里注冊(cè)和發(fā)現(xiàn)配置。該注冊(cè)表還提供監(jiān)控和健康檢查儀表板。
JHipster Registry 建立在 2 個(gè)組件之上:Netflix Eureka 和 Spring Cloud Config Server。
a、Netflix Eureka:Eureka 提供動(dòng)態(tài)服務(wù)注冊(cè)和發(fā)現(xiàn)。Eureka 維護(hù)了一個(gè)中央服務(wù)注冊(cè)中心,可以注冊(cè)新的微服務(wù)并在服務(wù)宕機(jī)時(shí)將其下架。注冊(cè)表維護(hù)有關(guān)可用服務(wù)及其元數(shù)據(jù)的最新信息。注冊(cè)到 Eureka 服務(wù)器的服務(wù)會(huì)發(fā)送它們的心跳,當(dāng)客戶端不再發(fā)送心跳時(shí),服務(wù)就會(huì)從注冊(cè)表中取出。
Eureka 提供動(dòng)態(tài)發(fā)現(xiàn),客戶端在其中查找服務(wù)注冊(cè)表以獲取服務(wù)信息,例如服務(wù)的 URL,并通過 URL 進(jìn)行連接。

b、Spring Cloud Config Server:這提供了用于管理所有微服務(wù)的屬性和配置的集中存儲(chǔ)。
微服務(wù)可以連接到 cloud-config 服務(wù)并獲取配置詳細(xì)信息。配置服務(wù)也可以暴露給 Rest API。

2、HashiCorp Consul: Consul 是來自 HashiCorp 的服務(wù)發(fā)現(xiàn)客戶端。Consul 為鍵值存儲(chǔ)提供服務(wù)發(fā)現(xiàn)、容錯(cuò)、Vault。這是 JHipster Registry 的替代方案,可以提供服務(wù)發(fā)現(xiàn)和配置存儲(chǔ)。
Eureka 支持用 Spring Boot 編寫的應(yīng)用程序服務(wù)。Consul 可以支持用 Java、Golang 或其他編程語(yǔ)言編寫的多個(gè)客戶端。
Consul 支持開箱即用的多個(gè)數(shù)據(jù)中心。運(yùn)行 Consul 的節(jié)點(diǎn)運(yùn)行一個(gè) consul 代理來監(jiān)控服務(wù)的健康狀況。
3. JHipster API 網(wǎng)關(guān)
JHipster 提供網(wǎng)關(guān),它是訪問服務(wù)的單一入口點(diǎn)。網(wǎng)關(guān)提供請(qǐng)求、響應(yīng)轉(zhuǎn)換、API 安全、緩存、節(jié)流、路由、過濾和容錯(cuò)。
JHipster 網(wǎng)關(guān)集成了用于 API 網(wǎng)關(guān)功能的 Zuul 和用于彈性和斷路器功能的 Hystrix。由于將來會(huì)刪除對(duì) Hystrix 的支持,因此 JHipster 正在尋找 Resilience4J 集成以實(shí)現(xiàn)斷路器功能。
Hystrix 或 Resilience4J 阻止分布式系統(tǒng)中的級(jí)聯(lián)故障,啟用回退服務(wù),控制系統(tǒng)的延遲。
JHipster API Gateway 將與 JHipster Registry 一起使用 Spring Cloud Load Balancer 進(jìn)行服務(wù)發(fā)現(xiàn)和負(fù)載平衡 HTTP 請(qǐng)求。

4. JHipster Control Center: 控制中心監(jiān)控和管理應(yīng)用程序。控制中心提供以下功能:
a、Instances: Instances 提供應(yīng)用程序?qū)嵗牧斜恚划?dāng)服務(wù)在 JHipster Registry 中注冊(cè)時(shí),該服務(wù)在實(shí)例列表中可用。它還提供了一個(gè)儀表板來查看列表。
b. Metrics: 指標(biāo)由 Micrometer 管理,該 Micrometer 跟蹤系統(tǒng)指標(biāo),如 JVM、HTTP 請(qǐng)求、緩存使用情況和數(shù)據(jù)庫(kù)連接。
C、健康檢查:健康檢查與 Spring Actuator 集成以獲取服務(wù)的健康狀態(tài)。
d、日志:日志與 Logback 集成,用于跟蹤正在運(yùn)行的應(yīng)用程序的日志。
e. API 文檔:API 文檔提供 Swagger APIn 文檔。
5. JWT 的安全性: JWT 是一種無狀態(tài)的安全機(jī)制,可以擴(kuò)展到多個(gè)服務(wù)器。這是 JHipster 微服務(wù)的默認(rèn)安全選項(xiàng)。
JWT 提供 Header、Payload 和 Signature。所有客戶端會(huì)話數(shù)據(jù)都存儲(chǔ)在令牌中。JWT 中沒有進(jìn)行服務(wù)器端會(huì)話管理。OAuth 2.0 支持 JWT 以實(shí)現(xiàn)安全傳輸。

6. JHipster UAA 的微服務(wù)安全性: JHipster UAA 是使用 OAuth2 的用戶記賬和創(chuàng)作微服務(wù)。
OAuth2 是一個(gè)可用于集中身份管理的授權(quán)框架。JHipster UAA 提供了一個(gè) OAuth2 端點(diǎn),該端點(diǎn)基于身份驗(yàn)證提供訪問令牌。令牌提供細(xì)粒度的訪問控制來訪問基于 Rest 的服務(wù)。UAA 是授權(quán)服務(wù)器和資源服務(wù)器的組合。
示例 OAuth 流程如下所示:

使用 JHipster 為微服務(wù)生成的實(shí)例架構(gòu)架構(gòu)如下所示:

本文介紹了 JHipster 支持的不同微服務(wù)組件,讓您了解如何使用 JHipster 構(gòu)建微服務(wù)架構(gòu)。謝謝閱讀!