栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

eureka运行机制

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

eureka运行机制

文章目录
  • eureka运行机制
  • 客户端连接eureka
  • 高可用
    • 商品的高可用
  • eureka高可用
  • Feign远程调用,和Ribbon负载均衡和重试
  • Ribbon重试

eureka运行机制
  • 注册 (首先启动eureka客户端)
    客户端向服务器注册时,会一次次反复注册,知道注册成功为止
  • 拉取
    客户端每30秒拉取一次注册表,更新本地缓存的注册表(如果有新的服务完成了注册,最长等三十秒之后在测试)
  • 心跳
    客户端每30秒向服务器发送一次心跳数据,如果服务器连续三次收不到一个服务的心跳,就会从注册表里删除该服务.
  • 自我保护模式
    在网络中断时,15分钟内,85% 服务器出现心跳异常(一次收不到心跳),就会自动进入自我保护模式,保护模式下所有注册信息,不删除,网络恢复后,可以自动退出保护模式,恢复正常模式.(开发调试期间,可以禁用保护模式,避免影响测试)
客户端连接eureka

修改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

  1. win+r.出入drivers
  2. 进入etc,打开hosts文件
  3. 用管理员运行启动,修改hosts文件
  4. 添加以下配置:
    127.0.0.1 eureka1
    127.0.0.1 eureka2
高可用 商品的高可用
  1. 修改Item的启动配置,添加springboot启动参数:--server.port=8001
    第一步:

    第二部:

    第三步:
  2. 复制启动配置,修改端口8002

第一步:

第二步:

启动8001和8002
访问eureka

eureka高可用 Feign远程调用,和Ribbon负载均衡和重试

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重试
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/531660.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号