当前位置: 代码网 > it编程>编程语言>Java > springcloud Eureka服务注册与发现

springcloud Eureka服务注册与发现

2024年08月02日 Java 我要评论
Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务治理Eureka采用了CS的设计架构,Eureka Server 作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用 Eureka的客户端连接到 Eureka Server并维持心跳连接。这样系统的维护人员就可以通过 Eureka Server 来监控系统中各个微服务是否正常运行。在服务注册与发现中,有一个注册中心。

代码地址

代码上传到https://github.com/13thm/study_springcloud/tree/main/days3

eureka基础知识

什么是服务治理

spring cloud 封装了 netflix 公司开发的 eureka 模块来实现服务治理

什么是服务注册与发现

eureka采用了cs的设计架构,eureka server 作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用 eureka的客户端连接到 eureka server并维持心跳连接。这样系统的维护人员就可以通过 eureka server 来监控系统中各个微服务是否正常运行。

在服务注册与发现中,有一个注册中心。当服务器启动的时候,会把当前自己服务器的信息 比如 服务地址通讯地址等以别名方式注册到注册中心上。另一方(消费者|服务提供者),以该别名的方式去注册中心上获取到实际的服务通讯地址,然后再实现本地rpc调用rpc远程调用框架核心设计思想:在于注册中心,因为使用注册中心管理每个服务与服务之间的一个依赖关系(服务治理概念)。在任何rpc远程框架中,都会有一个注册中心(存放服务地址相关信息(接口地址))

下左图是eureka系统架构,右图是dubbo的架构,请对比请添加图片描述

单机版eurekaserver

idea生成eurekaserver端服务注册中心类似物业公司

具体看代码

eurekaclient端cloud-provider-payment8001

修改之前的cloud-provider-payment8001

具体看代码
4.测试 http://localhost:7001/
在这里插入图片描述

修改eurekaclient端cloud-consumer-order80

1.pom
2.主启动类 ,加注解
3.写yml
具体请看代码

4.启动测试
在这里插入图片描述
在这里插入图片描述

集群eureka构建步骤

在这里插入图片描述

新建cloud-eureka-server7002

1.改pom
2.修改映射配置

127.0.0.1  eureka7001.com
127.0.0.1  eureka7002.com

3.写yml

测试

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

将之前写的微服务加入eureka集群

将支付服务8001微服务发布到上面2台eureka集群配置中 --改yml

将订单服务80微服务发布到上面2台eureka集群配置中--改yml

在这里插入图片描述

测试

先要启动eurekaserver,7001/7002服务,再要启动服务提供者provider,8001,再要启动消费者,80
测试网址:

http://eureka7002.com:7002/
http://eureka7001.com:7001/
http://localhost/consumer/payment/get/1

新建cloud-provider-payment8002 (提供集群服务者)

1.新建cloud-provider-payment8002(跟8001 几乎一致)
2.改pom
3.写yml
4.主启动
5.业务类(粘贴过来)
6.修改8001/8002的controller
主要还是看代码哪里变化了

添加:
@value("${server.port}")
    private string serverport;
修改了返回值:添加了服务端口
return new commonresult(200,"插入成功,返回结果"+result+"\t 服务端口:"+serverport,payment);

 return new commonresult(200,"查询成功"+"\t 服务端口:"+serverport,payment);

修改80 controller
在这里插入图片描述

public static final string payment_url = "http://cloud-payment-service";

添加
在这里插入图片描述

测试:

http://localhost/consumer/payment/get/1
http://eureka7001.com:7001/eureka

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

actuator微服务信息完善

在这里插入图片描述
鼠标放上去没有显示ip地址
修改8001的yml 和8002的yml
添加

 instance:
    instance-id: payment8001
    prefer-ip-address: true     #访问路径可以显示ip地址
 instance:
    instance-id: payment8002
    prefer-ip-address: true     #访问路径可以显示ip地址

在这里插入图片描述

服务发现discovery

对于注册进eureka里面的微服务,可以通过服务发现来获得该服务的信息
修改cloud-provider-payment8001的controller 和 修改cloud-provider-payment8002的controller

添加以下代码:(具体看下载代码)

@resource
private discoveryclient discoveryclient;
@getmapping(value = "/payment/discovery")
    public object discovery()
    {
        list<string> services = discoveryclient.getservices();
        for (string element : services) {
            system.out.println(element);
        }

        list<serviceinstance> instances = discoveryclient.getinstances("cloud-payment-service");
        for (serviceinstance element : instances) {
            system.out.println(element.getserviceid() + "\t" + element.gethost() + "\t" + element.getport() + "\t"
                    + element.geturi());
        }
        return this.discoveryclient;
    }

在8001 和8002主启动类添加注解@enablediscoveryclient
在这里插入图片描述

测试

http://localhost:8001/payment/discovery
在这里插入图片描述
在这里插入图片描述

eureka自我保护(这章没有修改下载代码)

保护模式主要用于一组客户端和eureka server之间存在网络分区场景下的保护。一旦进入保护模式,

eureka server将会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据,也就是不会注销任何微服务。

怎么禁止自我保护?

注册中心eureakeserver端7001

出厂默认,自我保护机制是开启的:

eureka.server.enable-self-preservation=true

要把他关闭,使用eureka.server.enable-self-preservation = false 可以禁用自我保护模式(注册中心eureakeserver端7001 的yml 里面改)

修改生产者客户端eureakeclient端8001

server:
  port: 8001

###服务名称(服务注册到eureka名称)
spring:
    application:
        name: cloud-provider-payment

eureka:
  client: #服务提供者provider注册进eureka服务列表内
    service-url:
      register-with-eureka: true
      fetch-registry: true
      # cluster version
      #defaultzone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka
      # singleton version
      defaultzone: http://eureka7001.com:7001/eureka
#心跳检测与续约时间
#开发时设置小些,保证服务关闭后注册中心能即使剔除服务
  instance:
  #eureka客户端向服务端发送心跳的时间间隔,单位为秒(默认是30秒)
    lease-renewal-interval-in-seconds: 1
  #eureka服务端在收到最后一次心跳后等待时间上限,单位为秒(默认是90秒),超时将剔除服务
    lease-expiration-duration-in-seconds: 2

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com