1.环境准备
在pom里面添加
- 父工程管理依赖 SpringBoot , SpringCloud
2.Eureka 注册中心
- 导入依赖 : EurekaServer
- 配置类开启注册中心@EnableEurekaServer
- application.yml : 端口 ,服务名 , 主机名 ,Eureka客户端配置
3.搭建用户服务
- 导入依赖 : EurekaClient
- 配置类: @EnableDiscoveryClient/@EnableEurekaClient
- application.yml :端口,服务名,注册中心地址 ,使用ip注册
4.搭建订单服务
- 导入依赖 : EurekaClient
- 配置类: @EnableDiscoveryClient/@EnableEurekaClient
- application.yml :端口,服务名,注册中心地址 ,使用ip注册
5.服务之间通信
公共模块:
user-common : domain/user
用户服务:
- 依赖 user-common(在pom里面)
- 编写controller,返回user
订单服务:
- 依赖 user-common
- 定义RestTemplate的bean
- 编写controller :通过RestTemplate(ip:端口)调用用户服务,获取用户
6.Eureka高可用(随时访问随时有回复可以简单理解为高可用)
- 配置两个主机: peer1 ,peer2(注册中心)
- 使用SpringBoot【多环境】,配置2条Eureka配置
- 两个Eureka的配置相互注册
- 启动注意:取消 single instance only 的勾选
- 主配置文件使用spring.profiels.active指定配置文件
7.Ribbon集成
用户服务集群
- 复制一份user-server服务
- 配置: 一同两不同 , 服务名相同 , 端口不同 ,服务id不同
- 其他一样
订单服务
- 集成ribbon,导入依赖
- RestTmpate的bean方法加注解 @LoadBalanced
- 修改controller: 通过RestTemplate(服务名)调用用户服务,获取用户
8.Fiegn集成
- 导入依赖
- 配置类开启Fiegn:@EnableFeignClients
- 编写Fiegn的接口
- 接口打标签:@FeignClient(“目标服务名”)
- 接口中写方法
注意: 目标服务名就是要调用的目标服务的spring.application.name
接口中的方法 : 要根目标服务的controller的方法一致 ,才能调用成功
注意:四个一样: 服务名 ,requestMapping, 方法参数 ,方法返回值
9.Hystrix熔断
- 雪崩
- Hystrix : 限流 ,熔断 ,降级 ,缓存
ribbon和hystrix集成
- 导入hystrix依赖
- 在主配置类开启熔断 @EnableCircuitBreaker
- 在方法上贴标签: @HystrixCommand(fallbackMethod = “getUserByIdFallback”)
- 编写托底方法 getUserByIdFallback
Feign集成Hsytrix
- 配置文件开启hystrix: feign.hystrix.enable=true
- Feign的客户端接口 : @FeignClient(value = “user-server”,fallback = UserFeignClientFallback.class)
- 编写托底类: UserFeignClientFallback.class) 如下:
@Component
public class UserFeignClientFallback implements UserFeignClient
10.zuul网关
- 浏览器一对一网关,让后通过网关转为一对多