一.服务之间通信 - 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的配置
- 超时配置