spring Cloud服務註冊中心eureka

Eureka是什麼?

1、Eureka是SpringCloud Netflix的核心子模組。

2、Eureka包含Eureka Server和Eureka Client。

3、Server提供註冊服務,存儲所有可用服務節點。

4、用於簡化Client與Server通訊複雜度。

 

eureka原理流程圖:

 

Eureka核心特性

一、服務註冊(Registry)
(1)Eureka Client在第一次心跳時向Eureka Server註冊
(2)註冊時會提供諸多自身元數據:主機名、埠、健康指標URL等
二、服務續約(Renew)
(1)Eureka Client通過發送心跳進行續約
(2)默認每30秒發送一次心跳
(3)如果90秒內Eureka Server未收到續約,則進行服務剔除
三、服務下線(Cancel)
(1)Eureka Client優雅退出時會發送cancel命令
(2)Eureka Server收到cancel命令時會刪除該節點

 

Eureka為什麼註冊慢?

Eureka註冊慢的根本原因是在於Eureka要保證AP特性

Eureka client 延遲註冊,默認30秒

Eureka server的響應快取,默認30秒

Eureka server的快取刷新,默認30秒

最極端最慢是90秒

 

Eureka的自我保護

Eureka server會自動更新續約更新閥值

Eureka server續約更新頻率低於閥值則進入保護模式

自我保護模式下Eureka server不會剔除任何註冊資訊

 

eureka環境搭建:

1、pom文件加以下maven依賴包:

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter</artifactId>
            <version>2.2.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-netflix-eureka-server</artifactId>
            <version>2.2.2.RELEASE</version>
        </dependency>
    </dependencies>

2、配置文件application.yml加以下配置:

server:
  port: 8761
  tomcat:
    uri-encoding: utf-8

eureka:
  instance:
    hostname: localhost
    # 優先使用IP地址方式進行註冊服務
    prefer-ip-address: true
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      defaultZone: http://localhost:${server.port}/eureka/

spring:
  application:
    name: spring-cloud-eureka

3、EurekaApplication.java文件加註解@EnableEurekaServer

啟動項目訪問//localhost:8761/

 

 

 

 eureka示例項目程式碼github地址//github.com/yuanzipeng/spring-cloud-eureka

 

Tags: