在本文中,我们将着眼于代码生成工具 JHipster 生成和支持的微服务架构。
JHipster 是一个代码生成工具,可以为 Kubernetes 创建 Web 应用程序、微服务、部署文件、云集成和 CI/CD Jenkins 文件。这个工具对于可以快速生成代码并避免创建样板代码的开发人员非常有帮助,可以节省 30% 的工作量。
JHipster 支持 Spring Boot 中的后端代码和 Angular/React/Vue.js 中的前端代码。
在本文中,我们将研究 JHipster 生成和支持的微服务架构。
微服务是独立的、模块化的可部署组件,按业务领域模型、可扩展、高效且可快速部署的业务功能拆分。
微服务有几个组件组成,包括服务注册、服务发现、健康检查、弹性、容错和安全。
JHipster 支持以下微服务组件来完成上述组件:
1. JHipster Registry:这是服务注册中心,不同的微服务可以在这里注册和发现配置。该注册表还提供监控和健康检查仪表板。
JHipster Registry 建立在 2 个组件之上:Netflix Eureka 和 Spring Cloud Config Server。
a、Netflix Eureka:Eureka 提供动态服务注册和发现。Eureka 维护了一个中央服务注册中心,可以注册新的微服务并在服务宕机时将其下架。注册表维护有关可用服务及其元数据的最新信息。注册到 Eureka 服务器的服务会发送它们的心跳,当客户端不再发送心跳时,服务就会从注册表中取出。
Eureka 提供动态发现,客户端在其中查找服务注册表以获取服务信息,例如服务的 URL,并通过 URL 进行连接。
b、Spring Cloud Config Server:这提供了用于管理所有微服务的属性和配置的集中存储。
微服务可以连接到cloud-config服务并获取配置详细信息,配置服务也可以暴露给 Rest API。
2、HashiCorp Consul: Consul 是来自 HashiCorp 服务发现客户端。Consul 为键值存储提供服务发现、容错、Vault。这是 JHipster Registry 的替代方案,可以提供服务发现和配置存储。
Eureka 支持用 Spring Boot 编写的应用程序服务。Consul 可以支持用 Java、Golang 或其他编程语言编写的多个客户端。
Consul 支持开箱即用的多个数据中心。运行 Consul 的节点运行一个 consul 代理来监控服务的健康状况。
3. JHipster API 网关
JHipster 提供网关,它是访问服务的单一入口点。网关提供请求、响应转换、API 安全、缓存、节流、路由、过滤和容错。
JHipster 网关集成了用于 API 网关功能的 Zuul 和用于弹性和断路器功能的 Hystrix。由于将来会删除对 Hystrix 的支持,因此 JHipster 正在寻找 Resilience4J 集成以实现断路器功能。
Hystrix 或 Resilience4J 阻止分布式系统中的级联故障,启用回退服务,控制系统的延迟。
JHipster API Gateway 将与 JHipster Registry 一起使用 Spring Cloud Load Balancer 进行服务发现和负载平衡 HTTP 请求。
4. JHipster Control Center: 控制中心监控和管理应用程序。控制中心提供以下功能:
a、Instances: Instances 提供应用程序实例的列表;当服务在 JHipster Registry 中注册时,该服务在实例列表中可用。它还提供了一个仪表板来查看列表。
b. Metrics: 指标由 Micrometer 管理,该 Micrometer 跟踪系统指标,如 JVM、HTTP 请求、缓存使用情况和数据库连接。
C、健康检查:健康检查与 Spring Actuator 集成以获取服务的健康状态。
d、日志:日志与 Logback 集成,用于跟踪正在运行的应用程序的日志。
e. API 文档:API 文档提供 Swagger APIn 文档。
5. JWT 的安全性: JWT 是一种无状态的安全机制,可以扩展到多个服务器。这是 JHipster 微服务的默认安全选项。
JWT 提供 Header、Payload 和 Signature。所有客户端会话数据都存储在令牌中。JWT 中没有进行服务器端会话管理。OAuth 2.0 支持 JWT 以实现安全传输。
6. JHipster UAA 的微服务安全性: JHipster UAA 是使用 OAuth2 的用户记账和创作微服务。
OAuth2 是一个可用于集中身份管理的授权框架。JHipster UAA 提供了一个 OAuth2 端点,该端点基于身份验证提供访问令牌。令牌提供细粒度的访问控制来访问基于 Rest 的服务。UAA 是授权服务器和资源服务器的组合。
示例 OAuth 流程如下所示:
使用 JHipster 为微服务生成的实例架构架构如下所示:
本文介绍了 JHipster 支持的不同微服务组件,让您了解如何使用 JHipster 构建微服务架构。谢谢阅读!