0


【SpringBoot+Eureka知识总结】

1.Eureka包含两个组件

①EurekaServer:提供服务的注册服务

各个微服务节点通过配置启动后,会在EurekaServer中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观看到

②EurekaClient:通过注册中心进行访问

它是一个java客户端,用于简化Eureka Server的交互,(每一个注册好的微服务节点就相当于是一个客户端)客户端同时也具备一个内置的,使用轮询(round-robin)负载算法的负载均衡器。在应用启动后客户端节点将会向EurekaServer发送心跳(默认周期是30秒)。如果EurekaServer在多个心跳周期内没有接收到某个服务节点的心跳,EurekaServer将会从服务注册表把这个服务节点移除(默认90秒)


2.如何使用?

1.建eurekaService模块

①pom文件引入

eureka-server

依赖(enrekaServer独有的依赖)

②配置文件引入

eureka:
    instance:
       hostname: localhost #eureka服务端实例名称
    client:
       #false 表示不向注册中心注册自己 如果需要注册自己,则写true
       register-with-eureka:false
       #false 表示自己就是注册中心,我的职责就是维护服务实例,并不需要去检索服务 如果不是,则写false
       fetch-registry:false
       service-url:
              #设置与eurekaServer交互的地址查询服务和注册服务都需要依赖这个地址
              defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

③启动类添加

@EnableEurekaServer

注解

备注: 启动后可用ip+该服务的端口进行访问,出来的就是Server端的界面 如:

localhost:7001/

2.建eurekaClient模块(服务的注册)

①pom文件引入

eureka-client

依赖(enrekaClient独有的依赖)

②配置文件引入

eureka:
    client:
       #表示是否将自己注册进eurekaServer  默认为true
       register-with-eureka:true
      #表示是否从eurekaServer抓取已有的注册信息,默认为true。单节点的eureka无所谓,集群必须设置为true才能配合ribbon使用负载均衡
       fetch-registry:true
       service-url:
              #设置与eurekaServer交互的地址查询服务和注册服务都需要依赖这个地址
              defaultZone: http://localhost:7001/eureka

③启动类添加

@EnableEurekaClient

注解

备注:启动该服务后,可以在eurekaServer界面application下看到该服务已经注册上来了


3.eureka工作流程

1.服务注册:将服务信息注册进注册中心

2.服务发现:从注册中心获取服务信息(实质:存key服务名 取value调用地址,key value形式 key存服务名字,value存调用地址)

3.具体步骤:

①先启动eureka注册中心

②启动服务提供者,如支付服务

③支付服务启动后,会把自身信息(比如服务调用地址)以别名的方式注册进erureka

④消费者模块,如order服务,在需要调用接口时,使用服务别名去注册中心获取实际的RPC远程调用地址

⑤消费者获取到地址后,底层逻辑是利用HttpClient技术实现远程调用

⑥消费者获得服务调用地址后,会缓存在本地jvm中,默认每间隔30秒更新一次服务调用地址

微服务远程调用最核心的是: 高可用,因此,注册中心不能只有一个,一旦注册中心出现问题,就会出现单点故障,因此需要搭建eureka集群


4.eureka集群搭建步骤

**原理:多个

eurekaServer

相互注册,互相照顾**

详细步骤

①建立两个或多个eurekaServer,pom文件都引入eureka-server依赖

②修改本机host文件,使得127.0.0.1映射出两个或多个的域名出来,否则本地搭建eureka集群无法完成

③修改各个

enrekaServer

的yml文件 eureka配置可参考如下:

 eureka:
     instance:
       hostname: enerka7002.com #eureka服务端实例名称(修改了host文件,eureka7002.com域名映射的是127.0.0.1)
     client:
       #false 表示不向注册中心注册自己 如果需要注册自己,则写true
       register-with-eureka:false
       #false 表示自己就是注册中心,我的职责就是维护服务实例,并不需要去检索服务 如果不是,则写false
       fetch-registry:false
       service-url:
         #设置与eurekaServer交互的地址查询服务和注册服务都需要依赖这个地址
         #此处为相互注册,注册的是另外一个eurekaServer的地址 达到eureka集群搭建的目的
         defaultZone: http://eureka7001.com:7001/eureka/

重点:各个eurekaServer配置文件中的service-url应该相关注册,即应该注册其他eurekaServer的地址,才能相互注册

④启动各个eurekaServer服务,输入其注册地址,看到页面上的ds deplicas栏下其注册的其他eurekaServer节点地址,application可看到注册到上面的微服务节点,即完成集群的搭建

⑤将各个微服务节点注册到我们的eurekaService集群中去,只需修改yml文件中的defaultZone配置,用逗号拼接集群中所有的微服务url即可

⑥启动各服务(先启动我们的eureka集群各服务,然后再启动各服务)


5.微服务节点搭建集群步骤

原理:相同的微服务名称下,对应多个微服务模块,客户端访问时只需要关心注册到eureka的微服务名称,服务调用时采用轮询负载均衡去调用集群中各个微服务模块
详细步骤:
①建立多个微服务模块,服务名称配置成一模一样的,然后注册到

eurekaServer

②调用时采用微服务名称调用方式,因此需要修改调用时的服务地址 比如将

http://localhost:8001/

修改为

http://cloud-payment-service/

TestTemplate

服务调用工具配置类中,需要在初始化实例对象的方法上添加
@loadBalanced注解,开启负载均衡功能(默认轮询方式),如果不添加,会直接报错,因为根据微服务名称不知道要调用哪一个

④启动该客户端服务,访问具体接口,可以用特殊的手段验证出,其调用集群中的微服务节点时时交替调用的,先一个后一个这种方式,达到负载均衡目的

备注:搭建集群可以的解决一部分高并发问题


6.eureka的自我保护机制

理论:
当eureka发现注册上来的服务连不上了(网络故障等),很长时间也没有接收到心跳,即使这样,也不会立即把该服务删除(好死不如赖活着),为了高可用。
尝试关闭eureka的自我保护机制(正式情况请慎用!!!)
①eurekaService服务需要修改配置文件:

eureka.server.enable-self-preservation =true

②测试是否关闭:修改eurekaclient服务的配置文件:

#向eurekaServer发送心跳的时间间隔:秒 默认为30秒,此处设置为1秒,为快速实现效果
enreka.instance.lease-renewal-interval-in-seconds =1
#当eurekaService检测心跳的周期:秒 默认90秒,此处设置为2秒,为快速发现eurekaClient没有发送心跳了,快速实现效果
eureka.instance.lease-expiration-duration-in-seconds =2

④结果:一当eurekaClient服务关闭了,eurekaServer会立即将其删除

标签: spring boot eureka java

本文转载自: https://blog.csdn.net/weixin_48792073/article/details/135871459
版权归原作者 小新丹 所有, 如有侵权,请联系我们删除。

“【SpringBoot+Eureka知识总结】”的评论:

还没有评论