SpringCloud微服务总结
SpringCloud微服务
1.1 EureKa 注册中心
@EnableEurekaClient 提供者–消费者 建立连接后 EureKa崩溃仍可访问
高可用 运行多个注册中心 轮巡解决 可避免 崩溃
设置密码 保证安全 提供者 消费者 需要携带用户名密码
1.2 Ribbon 框架自带的负载均衡
轮巡解决 大访问量
1.3 Feign
一种声明式、模板化的HTTP客户端,可用于调用HTTP API实现微服务之间的远程服务调用。它的特点是使用少量的配置定义服务客户端接口,可以实现简单和可重用的RPC调用
简化HTTP 请求 避免拼接冗长字符串
自带负载均衡
1.3.1 Hystrix
断路器 快速失败防止浪费CPU 可通过仪表盘查看服务信息
1.4 Zuul
网关 配置路由 配置过滤器 优先级配置 请求拦截
1.5 配置中心
git配置
1.6 Sleuth
服务链路追踪 日志 微服务监控
1.7 Sidecar
跨平台服务调用
汇总
Spring Cloud 是一组框架和工具,旨在帮助开发者使用 Spring 构建分布式系统。它是构建微服务架构的一个强大平台,提供了许多常用的基础设施支持,特别是在云环境中。Spring Cloud 与 Spring Boot 配合使用,能够简化微服务的开发过程,并且为服务发现、负载均衡、断路器、分布式配置等提供了开箱即用的解决方案。
以下是 Spring Cloud 的一些关键特性和组件:
1. 服务发现 (Eureka)
- Eureka 是 Spring Cloud 提供的服务发现和注册中心。它允许服务自动注册到 Eureka 服务器中,并使其他服务能够发现并与它们进行通信。Eureka 采用客户端注册方式,服务会定期向 Eureka Server 注册其信息,并在失效时注销。
- Eureka Client: 服务端需要通过
@EnableEurekaClient
注解来启用 Eureka 客户端功能。 - Eureka Server: 作为服务的注册中心,Eureka Server 负责管理所有服务的注册信息。
2. 负载均衡 (Ribbon)
- Ribbon 是客户端负载均衡器,能够通过集成在客户端的算法进行请求的负载均衡。它与 Eureka 紧密集成,在服务发现时可以选择合适的服务实例来进行请求转发。
- 自动负载均衡: 通过使用
@LoadBalanced
注解,Spring Cloud 可以让你的 RestTemplate 客户端自动进行负载均衡。
3. 断路器 (Hystrix)
- Hystrix 是一个用于处理分布式系统中服务间通信故障的工具。它提供了一种方式来隔离服务,防止级联失败,并在服务不可用时提供回退机制。
- Hystrix Dashboard: 监控 Hystrix 的运行状态和健康度。
- Hystrix Command: 通过注解和编程方式实现服务调用时的容错控制。
4. API 网关 (Zuul / Spring Cloud Gateway)
- Zuul 是一个路由网关服务器,它提供动态路由、监控、过滤等功能,可以作为微服务的入口。所有外部请求都会通过 Zuul 路由到合适的微服务。
- Spring Cloud Gateway: 作为 Zuul 的替代品,提供更高效的路由功能,并且可以支持更多的现代特性,如 WebFlux 支持、更简洁的配置和更强的过滤功能。
5. 配置中心 (Spring Cloud Config)
- Spring Cloud Config 提供了一个集中的配置服务器,允许微服务从配置服务器获取配置,并支持动态刷新配置。配置可以保存在 Git 或 SVN 中。
- Config Server: 用于读取存储在远程 Git 仓库或本地文件系统的配置,并提供给客户端应用。
6. 消息总线 (Spring Cloud Bus)
- Spring Cloud Bus 用于在多个服务之间传播配置变更或事件。通过消息总线,配置变更可以实时通知到所有服务,避免重新启动服务来刷新配置。
7. 分布式跟踪 (Sleuth / Zipkin)
- Spring Cloud Sleuth 为 Spring 应用提供分布式跟踪功能,能够跟踪请求在多个服务中的传递过程。它通过生成全局唯一的跟踪 ID 来帮助开发者追踪请求。
- Zipkin 是一个分布式追踪系统,用于收集和分析服务调用链的数据,以帮助开发者识别性能瓶颈和问题。
8. 集成监控 (Spring Boot Actuator + Prometheus / Micrometer)
- Spring Boot Actuator 提供了对微服务运行时状态的监控,包括应用健康检查、度量、环境信息等。
- Micrometer 是 Spring 的度量库,能够与多个监控系统(如 Prometheus、Graphite、Datadog)集成。
9. 容错管理 (Resilience4j)
- Resilience4j 是一个轻量级的容错库,能够帮助开发者实现断路器、重试、限流等容错策略,作为 Hystrix 的替代品。
10. Spring Cloud Kubernetes
- Spring Cloud Kubernetes 提供了与 Kubernetes 的集成支持,允许 Spring Cloud 应用与 Kubernetes 的服务发现、配置管理等功能结合使用。
Spring Cloud 生态系统简要图
1 | +------------------+ +-----------------+ |
示例:Spring Cloud 微服务配置
假设你正在开发一个基于 Spring Cloud 的应用,下面是一些常见配置示例。
1. Eureka Server 配置
1 | @EnableEurekaServer |
2. Eureka Client 配置
1 | @EnableEurekaClient |
3. Zuul 网关配置
1 | @EnableZuulProxy |
4. Spring Cloud Config 配置
- 配置文件(application.yml)
1 | spring: |
5. Hystrix 配置
1 | @EnableCircuitBreaker |
Spring Cloud 使用场景
Spring Cloud 适合构建微服务架构,特别是在以下场景下表现尤为出色:
- 分布式系统:多个服务之间需要高效地通信,Spring Cloud 提供的工具能够帮助你实现服务发现、负载均衡、断路器等。
- 多租户应用:配置中心、消息总线等可以帮助实现多租户环境中的配置共享与管理。
- 微服务治理:通过断路器、负载均衡、服务注册和发现来确保微服务的可靠性。
- 容错和监控:通过 Hystrix、Sleuth 和 Actuator 提供的监控和容错功能,提升系统的稳定性和可维护性。
总结
Spring Cloud 为开发者提供了一个全面的微服务开发工具集,涵盖了从服务注册、服务发现、负载均衡、配置管理到容错机制等多个方面的功能。它与 Spring Boot 深度集成,极大地简化了分布式系统的开发、部署和运维。