Springcloud常用组件----Eureka

         Eureka是Netflix开源的服务发现组件,本身是基于REST的服务,它包含Server和Client两部分,SpringCloud将它集成在Spring Cloud Netflix中,从而实现微服务的注册与发现。

  1. Eureka Server提供微服务的发现的能力,各个微服务启动时会向其注册自己的信息,如ip、端口、微服务名等,Eureka Server会定时存储这些信息,并且会缓存这些注册表的信息,这样就不用每次都去请求Eureka Server,从而降低了Eureka Server的压力,其次当所有的Eureka Server节点宕掉,服务消费者依然可以从这些缓存中的信息找到服务提供者,完成调用。
  2. Eureka Client 是一个Java客户端,用于简化与Eureka Client的交互,微服务启动后会周期的(30s)的向Eureka Server发送心跳以续约自己的租期,如果Eureka Server在一定时间内没有收到某个(client)微服务的实例心跳记录(默认90s),则Eureka Server则会注销该实例.
  3. 默认情况下,Eureka Server同时也是个Eureka Client,多个Eureka Server实例可通过配置文件来实现相互注册的方式,来实现服务注册的表中的数据同步

        现在我们就开启两个Eureka Server 和一个Eureka Client,对其使用有一定的了解,首先eureka server需要引入,并且启动springboot项目启动类上加入注解@EnableEurekaServer以此来声明这是一个Eureka Server,同时在配置文件中加入相关配置,如下,同时复制一份,也启动端口8703,这时候就有两个Eureka Server了。

备注:有必要说一下的就是defaultZone:这里面输入的地址是你要向哪个注册中心注册的地址,不能填写client的地址,否则会报错:无法注册到此地址,如果有多个注册中心假设A,B,用逗号分隔符分开。那么A,B都会有你这个实例对象了,如假设你是A注册中心,你只填写了向B注册中心注册,也会将B注册中心注册的客户端复制过来,也就是上面说的相互注册。

 <!-- 提供服务注册与发现的能力 -->
 <dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
 </dependency>
server:
  port: 8701
spring:
  application:
    name: eurekaServer8701 #此处切记不能用a_b命名

#注册发现
eureka:
  instance:
    hostname: localhost
    #将自己的ip注册到Eureka Server上,不配置 则是将自己的操作系统的hostname注册到EurekaServer上  默认false
    prefer-ip-address: true
  server:
    #关闭自我保护模式(默认是true  当一定时间内没有收到某个微服务实例的心跳时90s,不会注销这个微服务,这是eureka的自我保护模式)
    enable-self-preservation: true
  client:
    #是否将自己注册到EurrkeServe
    register-with-eureka: true
    #表示是否从EurekaServer获取注册信息,默认为true,表示需要从其他server同步信息,因为当前应用是一个单点Eureka Server,无需同步其它节点Eureka Server节点数据
    fetch-registry: true
    #设置与EurekaServer 交互的地址,查询服务和注册服务都依赖这个地址,多个地址用,分割,http://127.0.0.1:8703/eureka/,必须是开启的
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
      #,http://127.0.0.1:8703/eureka/

       现在我们编写eureka client作为微服务实例(生产者/消费者),也是需要引入eureka-server包,然后在启动器上添加@EnableEurekaClient注解,声明这是一个微服务实例客户端,当然也可以使用@EnableDiscoveryClient代替刚才的注解,在springclound中,服务发现组件有很多选择,例如Zookeepr,Consul等,此注解为各种服务组件提供了支持,该注解是spring-cloud-conmmons项目注解是一个高度抽象的注解,而@EnableEurekaClient则是Eureka的client,只能与Eureka一起工作,

<!-- 提供服务注册与发现的能力 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    <version>2.1.1.RELEASE</version>
</dependency>

分别启动三个项目,输入http://localhost:8701/  可看到如下界面。

显然,当我们微服务项目很多的时候,每个微服务项目都要填写这些配置信息,向谁注册啊,需要配置那些东西啊,很烦,于是统一构建一个配置中心势在必行。未完待续。

发布了73 篇原创文章 · 获赞 18 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_40826106/article/details/94782655
今日推荐