Eureka应用

文章目录[隐藏]

服务中心

服务的注册发现对于微服务来说是一个非常重要的环节。在微服务架构中,每个服务(Service)是动态变化的,难以通过静态配置的方式维护服务,需要用到服务发现框架来完成服务(Service)的自动化管理。常见的服务中心框架有:

  1. Eureka
  2. Consul
  3. ETCD
  4. Zookeeper
  5. Nacos

它们的区别如下:

Eureka简介

Eureka是Netflix开发的服务发现框架,Spring Cloud将Eureka集成到子项目Spring-Cloud-Netflix中实现服务发现功能。

Spring Cloud框架下的服务发现Eureka包含两个组件,分别是:Eureka Server与Eureka Client。

  1. Eureka Server,也称为服务注册中心。各个服务启动后,会在Eureka Server中进行注册,这样Eureka Server的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。
  2. Eureka Client也称为服务(服务实例)。作为一个Java客户端,用于简化与Eureka Server的交互。

Eureka工作原理

Eureka Client注册在Eureka Server,Eureka Client中的服务Service是通过REST调用的。Eureka Client还具有缓存功能,它能够从Eureka Server查询当前注册的服务信息并缓存到本地,这样即使Eureka Server宕机,Eureka Client依然可以利用缓存中的信息调用服务。

Eureka Client存在两种角色,分别是服务提供者和服务消费者。

  1. 服务提供者( Eureka Client )启动后,会通过REST请求将自己注册在Eureka Server,并维护一个心跳(默认30秒发送一次心跳)进行服务续约,告诉Eureka Server“我还活着”,防止Eureka Server将该服务从服务列表剔除。
  2. 服务消费者用于获取Eureka Server注册的服务清单,并且该服务清单默认每隔30秒更新一次。服务消费者获取到服务清单后,能够根据自己的需求决定调用哪个服务,默认采用轮询方式调用,从而实现Eureka Client的负载均衡。

搭建Eureka Server

导入依赖

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>
      spring-cloud-starter-netflix-eureka-server
   </artifactId>
</dependency>

配置文件(yml)

server:
  port: 7000
spring:
  application:
    name: eureka-server
eureka:
  client:
    fetch-registry: false
    register-with-eureka: false
    service-url:
      defaultZone:
        http://${eureka.instance.hostname}:${server.port}/eureka/
  instance:
    hostname:
      localhost

yml文件无法使用中文注释(否则会报错),因此只能在这儿写了:

  1. 第八行表示是否向Eureka Server注册,默认true
  2. 第九行#表示是否从Eureka Server获取注册信息,默认true
  3. 由于此处仅搭建Server,因此无需注册和获取注册信息

启动类添加注解

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

启动,并访问http://localhost:7000/

目前暂未注册任何Eureka Client,因此显示不可用

服务提供者

导入依赖

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>
      spring-cloud-starter-netflix-eureka-client
   </artifactId>
</dependency>

配置文件

server:
  port: 7006
spring:
  application:
    name: eureka-provider
eureka:
  client:
    service-url:
      defaultZone: http://localhost:7000/eureka/
  instance:
    hostname: localhost

启动类添加注解

@SpringBootApplication
@EnableEurekaClient
public class EurekaProviderApplication {
   public static void main(String[] args) {
      SpringApplication.run(EurekaProviderApplication.class, args);
   }
}

启动,并访问http://localhost:7000/

注意Eureka也要运行

Eureka-provider已经成功注册到Eureka Server中了

服务消费者

导入依赖

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>
      spring-cloud-starter-netflix-eureka-client
   </artifactId>
</dependency>

配置文件

server:
  port:  7002
spring:
  application:
    name: eureka-consumer
eureka:
  instance:
    prefer-ip-address: true
  client:
    service-url:
      defaultZone: http://localhost:7000/eureka/

第8行用于设置是否显示主机ip

启动类添加注解

@SpringBootApplication
@EnableEurekaClient
public class EurekaConsumerApplication {
   public static void main(String[] args) {
      SpringApplication.run(EurekaConsumerApplication.class, args);
   }
}

启动,并访问http://localhost:7000/

Eureka-CONSUMER已经成功注册到Eureka Server中了

其他

有时会出现以下情况:

这是因为Eureka有自我保护机制,在默认的情况下,如果Eureka server 在一定的时候内,没有接受到某个微服务的心跳,就会注销该实例,默认时间是90秒。但是当网络发生故障的情况下,微服务和EurekaServer就无法通讯,这样就很危险,因为微服务本身是健康的,此时不应该注销该服务,而EurekaServer通过注销该服务来达到自我保护机制,当网络健康的时候,EurekaServer就会自动退出自我保护机制。可以通过配置文件关闭保护机制:

eureka:
  server:
    enable-self-preservation: false

源码下载

文件下载

  文件名称:本节代码.zip  文件大小:2.27MB
  下载声明:本站文件大多来自于网络,仅供学习和研究使用,不得用于商业用途,如有版权问题,请联系博主!
  下载地址:点击下载

提取码

注意:本段内容须“登录”后方可查看!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值