Spring Cloud微服务

发布于:2025-06-25 ⋅ 阅读:(19) ⋅ 点赞:(0)

1. 服务注册与发现

作用:让服务实例自动注册到注册中心,并动态发现可用服务。

  • Eureka(Netflix):传统注册中心,服务端与客户端模式,已停止更新。
  • Consul(HashiCorp):基于 Raft 算法,支持多数据中心,提供健康检查。
  • Nacos(阿里巴巴):阿里开源的注册中心与配置中心,支持动态服务发现、配置管理和流量管理。

Nacos服务需要下载。

在springboot项目中需要配置配置依赖nacos和loadbalancer

2. 服务调用与负载均衡

作用:实现微服务之间的远程调用,并均衡分配请求流量。

  • Ribbon:需要手动构建 HTTP 请求
  • FeignClient:在Ribbon上优化,不需要手动构建 HTTP 请求
@FeignClient("user-service") // 调用名为user-service的服务,这样不用手写httpRequest请求,简化代理逻辑
public interface UserService {
    @GetMapping("/users/{id}")
    User getById(@PathVariable Long id);
}

3. 服务网关

作用:作为系统入口,根据路由地址转发、负载均衡、权限校验、流量控制等。

  • Zuul(Netflix):传统网关,基于 Servlet,已停止维护。
  • Spring Cloud Gateway:新一代网关,基于 WebFlux,性能更高,支持动态路由和谓词匹配。

4. 配置文件

作用:集中管理微服务配置,支持动态更新。

  1. 将Nacos服务器中微服务配置文件import导入yml文件。
  2. 添加RefreshScope 注解实现动态刷新。

5. 断路器

作用:防止服务雪崩,当目标服务不可用时快速熔断,避免级联故障。

6. 链路追踪

作用:追踪分布式系统中请求的完整路径,定位性能瓶颈。

SpringCloud工作流程:

  1. 服务注册:微服务启动时向注册中心(如 Nacos)注册 IP 和端口。
  2. 服务发现:调用方通过注册中心获取可用服务列表。
  3. 请求路由:客户端通过 Feign+Ribbon 调用服务,或通过 Gateway 转发请求。
  4. 负载均衡:Ribbon 从服务列表中选择实例,均衡分配流量。
  5. 熔断保护:Resilience4j 监控服务健康状态,异常时触发熔断。
  6. 配置更新:配置中心推送更新,服务通过 RefreshScope 动态刷新配置。

网站公告

今日签到

点亮在社区的每一天
去签到