SpringCloud(二):Eureka服务注册与发现

2. Eureka服务注册与发现

2.1 Eureka基础知识

服务治理

在这里插入图片描述

服务注册

在这里插入图片描述

Eureka两组件

在这里插入图片描述

2.2 单机Eureka构建步骤

eurekaServer端:服务注册中心

IDEA生成eurekaServer端服务注册中心类似物业公司

  • 建module

    • cloud-eureka-server7001
  • 改pom

    • spring-cloud-starter-netflix-eureka-server
  • 写yml

    • port:7001
    • hosthome:localhost #eureka服务端的实例名字
    • register-with-eureka: false #表示不向注册中心注册自己
    • fetch-registry: false #表示自己就是注册中心,职责是维护服务实例,并不需要去检索服务
    • defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
  • 主启动

    • 添加注解@EnableEurekaServer // 设置为服务注册中心 EurekaServer
  • 测试

    • 访问:http://localhost:7001/

EurekaClient端payment8001注册进服务端

EurekaClient端cloud-provider-payment8001将注册进EurekaServer成为服务提供者provider,类似尚硅谷学校对外提供授课服务

  • 改pom
    • 添加spring-cloud-starter-netflix-eureka-client
  • 写yml
    • 添加eurekaclient
    • register-with-eureka: true
    • fetchRegistry: true
    • defaultZone: http://localhost:7001/eureka
  • 主启动
    • 添加注解@EnableEurekaClinet
  • 测试
    • 先启动EurekaServer
    • 访问http://localhost:7001/,在Application中显示了支付模块
    • 微服务注册名就是spring:application:name

EurekaClient端order80注册进服务端

EurekaClient端cloud-consumer-order80将注册进EurekaServer成为服务消费者consumer,类似来尚硅谷上课消费的各位同学

  • 改pom
    • 添加spring-cloud-starter-netflix-eureka-client
  • 写yml
    • 添加eurekaclient
    • register-with-eureka: true
    • fetchRegistry: true
    • defaultZone: http://localhost:7001/eureka
  • 主启动
    • 添加注解@EnableEurekaClinet
  • 测试
    • 先启动EurekaServer
    • 访问http://localhost:7001/,在Application中显示了消费模块
    • 微服务注册名就是spring:application:name

2.3 集群Eureka构建步骤

互相注册,相互守望

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ClEj5e7p-1655004137626)(F:\1111yjs\笔记\SpringCloud.assets\image-20220611164609885.png)]

集群构建

  1. 参考参考cloud-eureka-server7001新建新建cloud-eureka-server7002
  2. 修改pom
  3. 修改映射配置
    • 找到C:\Windows\System32\drivers\etc路径下的hosts文件
    • 修改映射配置添加进hosts文件:127.0.0.1 eureka7001.com,127.0.0.1 eureka7002.com
  4. 写yml
    • 7001的yml修改如下:defaultZone: http://eureka7002.com:7002/eureka/ #设置与eureka server交互的地址查询服务和注册服务都需要依赖这个地址
    • 7002的yml修改如下:defaultZone: http://eureka7001.com:7001/eureka/ #设置与eureka server交互的地址查询服务和注册服务都需要依赖这个地址
  5. 主启动(复制cloud-eureka-server7001的主启动类到7002即可)

支付服务8001发布到集群

修改yml文件

service-url:
  # defaultZone: http://localhost:7001/eureka # 单机配置
  defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka  #集群版

订单服务80发布到集群

修改yml文件

service-url:
  # defaultZone: http://localhost:7001/eureka # 单机配置
  defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka  #集群版

支付服务集群构建

  1. 参考cloud-provider-payment8001新建新建cloud-provider-payment8002
  2. 改pom
  3. 写yml:改端口
  4. 主启动
  5. 修改 8001/8002 的 Controller
    • 在controller内新建属性serverPort,将端口号值赋予他
    • 在查询成功信息中输出端口号

负载均衡

  1. bug :每次访问都只有8001工作。这是因为原始订单服务访问地址写死,现改为注册中心微服务的名称public static final String PAYMENT_URL = "http://CLOUD-PAYMENT-SERVICE";
  2. 上述代码仍会报错,不再写死后需要提供默认的负载均衡方式。在order80的RestTemplate上添加注解@LoadBalanced,赋予RestTemplate负载均衡的能力。默认为轮询负载机制,一人一次。

2.4 actuator微服务信息完善

  1. 服务名修改:希望在eureka界面上只显示微服务名不显示前面localhost等。

    instance: instance-id: payment8001

  2. 访问信息有ip信息提示

    prefer-ip-address: true

2.5 服务发现Discovery

  1. 对于注册进eureka里面的微服务,可以通过服务发现来获得该服务的信息
  2. 修改cloud-provider-payment8001的Controller
    • 属性引入DiscoveryClient ,添加@Resource注解
    • discoveryClient.getServices()方法:微服务名称有哪些
    • discoveryClient.getServices()方法:当前微服务名称下的具体实例
  3. 8001主启动类:添加注解@EnableDiscoveryClient

2.6 Eureka自我保护

自我保护现象和原理

在这里插入图片描述
在这里插入图片描述

关闭自我保护

  1. 在7001的服务端

    • 关闭自我保护:enable-self-preservation: false
    • 心跳设置两秒:eviction-interval-timer-in-ms: 2000
  2. 在8001客户端

    • eureka.instance.lease-renewal-interval-in-seconds=1

      客户端向服务端发送心跳间隔时间,默认30秒

    • eureka.instance.lease-expiration-duration-in-seconds=2

      服务端收到最后一次心跳等待时间,默认90秒

  3. 先启动7001再启动8001,先关闭8001,8001马上被剔除

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

平什么阿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值