目录
微服务架构核心组件笔记整理
一、微服务生态简介
主要解决方案
二、消费者与提供者模式
提供者
消费者
开发环境与依赖
三、Eureka 服务注册与发现
依赖与配置
自我保护机制
服务信息获取
四、Eureka 集群与 CAP 理论
服务端发布
CAP理论核心
五、Ribbon 负载均衡
基本使用
控制器层
负载均衡策略与自定义算法
六、Feign 声明式服务调用
基本使用
七、服务熔断 Hystrix
基本使用
服务降级
Hystrix Dashboard 监控
八、Zuul 路由网关
基本使用
九、Spring Cloud Config 配置中心
基本使用
微服务架构核心组件笔记整理
一、微服务生态简介
定义
微服务是一种生态系统,而非单一技术。
目的
主要解决微服务架构中的以下问题:

主要解决方案
- API网关:Zuul
- 远程调用:Feign(基于HttpClient,同步、阻塞)
- 服务注册发现:Eureka
- 熔断机制:Hystrix
- API:需借助第三方或自定义
- 服务注册发现:Dubbo + Zookeeper
- 熔断:可集成Hystrix
二、消费者与提供者模式
- Restful服务:实现服务间通信
- 提供者:实现数据库交互,编写Controller层业务逻辑
- 消费者:无需数据库交互,直接调用提供者方法

提供者

消费者

开发环境与依赖
<!– 管理依赖,子模块可继承 –>
<dependencyManagement>
<dependencies>
</dependencies>
</dependencyManagement>
<!– 服务拆分思想:跨模块获取实体类 –>
<dependency>
<groupId>包名</groupId>
<artifactId>模块名或pom文件名</artifactId>
<version></version>
</dependency>
Spring Cloud开发规则:
- 所有实体类需实现序列化
- 数据库需有区分字段(如DATABASE())
三、Eureka 服务注册与发现
简介
Eureka是Netflix设计的服务注册中心,遵循AP原则。
作用
- 支持服务注册与发现,便于微服务定位与故障转移
- 只需服务标识符即可访问目标服务
原理
采用CS架构,EurekaServer作为注册中心。
依赖与配置
- 依赖:spring-cloud-starter-netflix-eureka-server
eureka:
instance:
hostname: localhost
instance-id: 描述信息
prefer-ip-address: true
client:
register-with-eureka: false
fetch-register: false
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
info:
app.name: app名称
company.name: 公司名称
- 注解:
- 服务端:@EnableEurekaServer
- 客户端:@EnableEurekaClient 或 @EnableDiscoveryClient
自我保护机制
- 异常断连或失效时(如心跳超时90秒),Eureka启动自我保护,保持服务信息。
服务信息获取

四、Eureka 集群与 CAP 理论
- 支持多节点互联,提升可靠性

服务端发布

CAP理论核心
- CA:如单点集群,扩展性差
- CP:如Zookeeper,保证一致性与分区容错
- AP:如Eureka,保证可用性与分区容错
Zookeeper保证CP,Eureka保证AP。


五、Ribbon 负载均衡
简介
Ribbon是Netflix开源的客户端负载均衡工具,集成于消费方进程,自动根据配置的规则分配请求。
负载均衡分类
- 集中式:如Nginx,独立设施负责转发
- 进程式:如Ribbon,集成于消费方,由客户端决定调用目标
基本使用
- 依赖:spring-cloud-starter-netflix-ribbon
@Configuration public class ConfigBean{ @Bean @LoadBalanced public RestTemplate getRestTemplate(){ return new RestTemplate(); } }
- 消费者模块配置,使其可随机访问服务

控制器层
- 通过服务名访问,实现负载均衡

负载均衡策略与自定义算法
// IRule负责配置负载均衡策略
@Bean
public IRule myRule(){
// 默认轮询,可改为随机
return new RandomRule();
}
// 自定义算法
@RibbonClient(name="服务名", configuration=自定义配置类名.class)
@Configuration
public class MyRule{
@Bean
public IRule myRule(){
return new 自定义算法类名();
}
}
六、Feign 声明式服务调用
定义
Feign是声明式Web Service客户端,简化了服务间的Http调用,集成了Ribbon,语法类似SpringMVC。
作用
让Java Http通信变得更简单。
基本使用
- 依赖:spring-cloud-starter-openfeign
@FeignClient(value="服务名")
public interface 接口名{
@GetMapping("/dept/{id}")
public 类 queryId(@PathVariable("id") Long id);
}
// 主启动类加注解
@EnableFeignClients(basePackages="包路径")

七、服务熔断 Hystrix
定义
Hystrix是用于应对“雪崩效应”的链路保护机制。
作用
- 当某微服务不可用或响应超时时,自动降级或熔断,快速返回错误,防止资源耗尽
术语
- 扇出:服务A调用B、C,B、C再调用其他服务
- 雪崩:链路上服务不可用,导致资源耗尽,系统崩溃
基本使用
- 依赖:spring-cloud-starter-netflix-hystrix
// 方法熔断
@HystrixCommand(fallbackMethod="方法名")
// 启用熔断
@EnableHystrix 或 @EnableCircuitBreaker
服务降级
定义
高并发下,选择性关闭部分服务,避免全部崩溃。
public class 类名 implements FallbackFactory{
// 实现降级逻辑
}
// Feign注解添加fallbackFactory
@FeignClient(value="服务名", fallbackFactory=类名.class)

Hystrix Dashboard 监控
- 依赖:spring-cloud-starter-netflix-hystrix-dashboard
- 主启动类注解:@EnableHystrixDashboard
- 监控页面路径:/hystrix
// 这是一个固定的


八、Zuul 路由网关
简介
- 路由:外部请求转发到具体服务实例,实现统一入口
- 过滤器:实现请求校验、服务聚合等
作用
实现路由与过滤。
基本使用
- 依赖:spring-cloud-starter-netflix-zuul
- 主启动类注解:@EnableZuulProxy
zuul:
routes:
mydept.serviceId: 服务名
mydept.path: /别名/**
ignored-services: 服务名 # 忽略指定服务
prefix: /前缀名 # 添加访问前缀
![]()
九、Spring Cloud Config 配置中心
简介
分为服务端与客户端,为微服务集中化管理外部配置。
作用
为各微服务应用提供中心化的外部配置。
基本使用
- 依赖:spring-cloud-config-server
- 主启动类注解:@EnableConfigServer
// 配置连接仓库

- 配置成功后,可通过 url/文件名 访问仓库中的文件
- bootstrap.yml 为系统级配置
// 客户端获取配置

- @Value 注入的均为GIT上的配置,实现远程管理

补充
Gateway 逐步取代Zuul,推荐学习Nacos与Spring Cloud Alibaba






