Spring Cloud微服务
目录
- 1. 服务注册与发现
- 2. 服务调用与负载均衡
- 3. 服务网关
- 4. 配置文件
- 5. 断路器
- 6. 链路追踪
- SpringCloud工作流程:
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. 配置文件
作用:集中管理微服务配置,支持动态更新。
- 将Nacos服务器中微服务配置文件import导入yml文件。
- 添加RefreshScope 注解实现动态刷新。
5. 断路器
作用:防止服务雪崩,当目标服务不可用时快速熔断,避免级联故障。
6. 链路追踪
作用:追踪分布式系统中请求的完整路径,定位性能瓶颈。
SpringCloud工作流程:
- 服务注册:微服务启动时向注册中心(如 Nacos)注册 IP 和端口。
- 服务发现:调用方通过注册中心获取可用服务列表。
- 请求路由:客户端通过 Feign+Ribbon 调用服务,或通过 Gateway 转发请求。
- 负载均衡:Ribbon 从服务列表中选择实例,均衡分配流量。
- 熔断保护:Resilience4j 监控服务健康状态,异常时触发熔断。
- 配置更新:配置中心推送更新,服务通过 RefreshScope 动态刷新配置。