2020年2月15日
一.服务之间通信 - RestTemplate
1.搭建公共的User-common模块 - 编写domain/user
2.pay-server 和 user-server 依赖 user-common
3.user-server编写controller 返回User对象
4.pay-server 支付服务定RestTemplate的Bean
5.pay-server编写controller 使用RestTemp调用user-server获取结果 - 使用ip:端口调用 -> “http://localhost:1000/user/”+id;
二.Ribbon集成
1.user-server的集群 : 一模一样多建立一个user-server,注意:端口不一样 ,instance-id不一样 ,其他的一定要一样
2.pay-server集成Ribbon , 导入Ribbon的jar包
3.修改 @RestTemplate的@Bean定义的方法,加上 @LoadBalanced
4.修改pay-servercontroller,让RestTemplate使用服务名的方式实现调用 -> “http://user-server/user/”+id
5.定义负载均衡策略: 配置负载均衡的@Bean -> 负债均衡接口 IRule
三.Feign集成
1.新建项目order-server
2.基本工作: 导入依赖(web包,eureka-client , user-comm , openfeign )
3.主配置类:开启Feign: @EnableFeignClients
4.编写Feign的接口 :
- 接口上打: @FeignClient(value = “user-server”) :目标服务的名字
- 接口中方法:跟目标服务的controller中的方法一致 1.url要一样 , 2参数要一样 , 3返回值要一样
5.编写controller: 注入 Fiegn接口,实现服务调用
四.集成Hystrix
1.基本概念
2.Ribbon集成Hystrix
- 导入jar spring-cloud-starter-netflix-hystrix
- 主配置类开启Hystrix:@EnableCircuitBreaker - 方法打熔断标签: @HystrixCommand(fallbackMethod = “payFallback”)
- 编写拖地方法:
3.Feign集成Hystrix
- 不用导包
- 开启Hystrix :
feign:
hystrix:
enabled: true - 在@FeignClient标签,指定fallback属性指定托底类
- 编写托底类:注意拖地类要实现Feign接口 ,复写方法实现拖地数据
- 托底类需要打 @Component标签
五.zuu的集成
1.创建zuul项目
2.导入jar包: eureka-client ,web包,zuul包
3.主配置类: @EnabelZuulProxy
4.测试:http://zuul的ip:zuul的port/服务名字/资源路径
5.zuul配置
- zuul:ignored-services 忽略使用服务名的方式访问
- routes :指定服务的访问路径
- 注册到eureka的配置
- 超时配置
6.zuul的执行流程 开始 -> preFilter -> cumstomFilter -> routingFilter -> 我们的微服务 -> postFilter ->结束
->出现异常ErrorFilter
7.自定义Filter
- 编写类,集成ZuulFilter
- 复写四个方法: filterType 类型 ; filterOrder 顺序 ;shouldFilter 时候执行run方法 ;run 核心业务逻辑方法
- 类上打@Component标签
六.配置中心
1.配置中心工作流程: git仓库(码云、订单配置文件) -> config Server -> 微服务
2.码云创建仓库,创建配置文件
3.搭建配置中心服务
- 导入服务端的jar包
- 配置类开启配置中心 @EnableConfigServer
- 配置配置中心 :注册到Eeureka, 配置码云的地址
4.修改订单服务
- 导入config client客户端的jar包
- 删掉本地的配置(备份)
- 创建bootstrap.yml配置文件
配置“配置中心的地址”,“配置文件名字”,“环境”