SpringCloud:Eureka注册中心,服务的注册与发现

Eureka发音:衣瑞卡

Eureka是什么

是Netfix的重要组件之一,是一个基于Rest的服务(http协议),用于定位服务,实现云端中间层服务的发现和故障转移,通俗的说就是负责服务的注册与发现的中间件,功能与zookeeper相似。

拓展:目前比较火的redis也可以做注册中心

Eureka工作原理

1.采用了c-s的架构设计,EuerkaServer作为服务的注册功能的服务器,它是注册中心

2.系统中的各微服务通过Euerka客户端连接EurekaServer并保持心跳连接(心跳链接相当于dubbo-admin),心跳机制属于EureServer,维护人员可以通过EurekaServer来监控各微服务是否运行正常

  Spring Cloud Netfix 的其他模块,如zuul就可以通过EurekaServer发现系统中的其他模块,并执行操作,

  心跳连接:通俗的说就像人一样,有心跳证明这个微服务还活着,没心跳就证明这个微服务有故障;类似定时任务,间隔多久检测一次心跳,

  客户端向EurekaServer发送心跳周期(默认为30秒),如果在多个周期内没有收到心跳就从注册表中移除(默认周期90秒)

3.EurekaServer需要开发人员自己写,不想zookeeper(直接下载,拿来即用)

自我保护机制

通俗的说就是在某时刻某个微服务不可用了(未知原因),Eureka不会立刻清理,依旧会对该服务进行保存

详解;

  通常情况下,如果Eureka在一定时间内没有收到某个服务实例的心跳,EurekaSever会注销该服务,但是当因为网络分区故障发生,如停电等造成服务实例没有了心跳,服务是没有问题的,此时如果EurekaServer直接按心跳机制去注销这些服务的话是不可取的,所以EurekaSever的自我保护机制就会起作用,他是通过判断:当EurekaServer节点在短时间内丢失大量的客户端时,Eureka就会去保护注册表中的信息,当网络故障恢复时,该EurekaServer节点就会自动退出自我保护机制

  它的设计哲学是:宁可保留错误的服务注册信息,也不盲目的删除任何可能健康的服务实例

  自我保护机制可以使用eureka.server.enable-self-preseration=false,禁用,不建议禁用

EurekaSever环境配置及注册测试

1.新建一个maven模块,当作EurekaSever

导入相关依赖

        <!--EurekaServer-->
        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka-server -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>
View Code

yaml配置EurekaSever

server:
  port: 7001

#Eureka配置
eureka:
  instance:
    hostname: localhost #Eureka服务端的实力名称
  client:
    register-with-eureka: false #表示是否向服务端注册自己,本身就是服务端
    fetch-registry: false #fetch-registry: false表示自己为服务端,注册中心
    service-url: #监控页面地址
      defaultZone: http://${eureka.instance.hostname}:${server.port}/erueka/
View Code

新建springboot主启动类,开启EurekaSever功能

////url:http://http://localhost:7001/
@EnableEurekaServer //开启Eurka服务端功能,可以接收别人注册进来
@SpringBootApplication
public class EurekaServer_7001 {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServer_7001.class,args);
    }
}
View Code

2。Eureka客户端

相关依赖

        <!--Eureka-->
        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>
        <!--完善eureka监控信息-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
View Code

yaml配置Eureka客户端

#Eureka的配置
eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka/
  instance:
    instance-id: springcloud-provider-dept8001 #修改eureka的默认描述信息

#info配置,作用:说明信息
info:
  app.name: king-springboot
  company.name: blog.king.com
View Code

主启动类开启相关功能:

@EnableDiscoveryClient //服务发现,企业级协同开发
@EnableEurekaClient //开启eureka客户端,在服务启动后自动注册到指定的EurekaServer中

最后打开相应的EureSever 的port

微服务中间件开发步骤

导入依赖
编写配置文件
开启指定功能(@Enablexxx)
配置类(@Configuration @Bean)部分需要

  

  

原文地址:https://www.cnblogs.com/CL-King/p/14312599.html