- eureka运行机制
- 客户端连接eureka
- 高可用
- 商品的高可用
- eureka高可用
- Feign远程调用,和Ribbon负载均衡和重试
- Ribbon重试
- 注册 (首先启动eureka客户端)
客户端向服务器注册时,会一次次反复注册,知道注册成功为止 - 拉取
客户端每30秒拉取一次注册表,更新本地缓存的注册表(如果有新的服务完成了注册,最长等三十秒之后在测试) - 心跳
客户端每30秒向服务器发送一次心跳数据,如果服务器连续三次收不到一个服务的心跳,就会从注册表里删除该服务. - 自我保护模式
在网络中断时,15分钟内,85% 服务器出现心跳异常(一次收不到心跳),就会自动进入自我保护模式,保护模式下所有注册信息,不删除,网络恢复后,可以自动退出保护模式,恢复正常模式.(开发调试期间,可以禁用保护模式,避免影响测试)
修改2,3,4模块(此处2,3,4是自己创建的测试项目)
1 . 添加eureka client依赖
org.springframework.cloud spring-cloud-starter-netflix-eureka-client
2 . yml配置eureka地址
- [] 客户端地址: http://eureka1:2001/eureka
# eureka注册中心配置
eureka:
client:
service-url:
# 可以从云服务商购买不同地点的eureka服务器
# 这里可以改成云服务商提供的地点
# 自己的服务器只能写defaultZone
defaultZone: http://eureka1:2001/eureka
3 .修改hosts,添加eureka1和eureka2
- win+r.出入drivers
- 进入etc,打开hosts文件
- 用管理员运行启动,修改hosts文件
- 添加以下配置:
127.0.0.1 eureka1
127.0.0.1 eureka2
- 修改Item的启动配置,添加springboot启动参数:--server.port=8001
第一步:
第二部:
第三步:
- 复制启动配置,修改端口8002
第一步:
第二步:
启动8001和8002
访问eureka
04订单,远程调用商品和用户
1. 添加feign依赖:
org.springframework.cloud spring-cloud-starter-openfeign
2. 启动类添加注解@EnableFeignClient
3. 定义远程调用接口
- 创建ItemClient接口调用Item
@FeignClient(name = "item-service") //1. 调用哪个服务
public interface ItemClient {
@GetMapping("/{orderId}") //2. 调用服务的哪个路径
JsonResult> getItems(@PathVariable String orderId);// 3. 向这个路径提交什么参数
@PostMapping("/decreaseNumber")//2. 调用服务的哪个路径
JsonResult> decreaseNumber(@RequestBody List- items);// 3. 向这个路径提交什么参数
}
- 创建UserClient接口调用User
@FeignClient(name = "user-service")
public interface UserClient {
@GetMapping("/{userId}")//2. 调用服务的哪个路径
JsonResult getUser(@PathVariable Integer userId);// 3. 向这个路径提交什么参数
@GetMapping("/{userId}/score")//2. 调用服务的哪个路径
JsonResult> addScore(@PathVariable Integer userId,// 3. 向这个路径提交什么参数
@RequestParam("score") Integer score);// 3. 向这个路径提交什么参数
}
4.
Ribbon重试- 调用后台服务时, 如果失败可以自动发起重试调用
- feign集成ribbon,默认启动了重试
- 重试参数: (x+1)*(y+1)
ribbon.MaxAutoRetries
(单台服务器的重试次数默认是0)
ribbon.MaxAutoRetriesNextServer
(更换服务器的次数默认是1)
ribbon.ReadTimeout
(默认是1000毫秒超时)
ribbon.ConnectTimeout
与后台服务建立连接的超时时间,默认1000毫秒
ribbon.OkToRetryOnAllOperations
是否对所有请求方式都重试,默认只对GET重试



