微服務:整合 Spring Cloud Eureka - 注冊中心 Eureka Server


目錄

   微服務:整合 Spring Cloud Eureka - 注冊中心 Eureka Server 

   微服務:整合 Spring Cloud Eureka - 服務注冊 Eureka Client  

   微服務:整合 Spring Cloud Eureka - 服務發現 DiscoveryClient 

   微服務:整合 Spring Cloud Eureka - 服務消費以及Ribbon簡單使用 

   微服務:整合 Spring Cloud Eureka - 高可用集群  

   微服務:整合 Spring Cloud Eureka - .NET Core Mvc Api (C#) 

   微服務:整合 Spring Cloud Eureka - 服務治理機制  

   微服務:整合 Spring Cloud Eureka - 服務事件監聽  

   微服務:整合 Spring Cloud Eureka - 高級屬性Region、Zone

   微服務:整合 Spring Cloud Eureka - Rest接口文檔 

   微服務:整合 Spring Cloud Eureka - Security 安全保護

一、簡介

  服務治理可以說是微服務架構中最為核心和基礎的模塊,它主要用來實現各個微服務實例的自動化注冊和發現。Spring Cloud Eureka是Spring Cloud Netflix 微服務套件的一部分,主要負責完成微服務架構中的服務治理功能。

  Eureka由兩個組件組成:Eureka服務器和Eureka客戶端。Eureka服務器用作服務注冊服務器。Eureka客戶端是一個java客戶端,用來簡化與服務器的交互、作為輪詢負載均衡器,並提供服務的故障切換支持。

二、注冊中心設計

  先來一張圖感覺一下:

     

1、注冊中心:Eureka Server

  • 提供服務注冊和發現

2、服務提供者:Service Provider

  • 將自身服務注冊到Eureka,從而使服務消費方能夠找到

3、服務消費者:Service Consumer

  • 從Eureka獲取注冊服務列表,從而能夠消費服者

三、Eureka注冊中心搭建

1、項目結構

                

 

2、父pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.demo</groupId>
    <artifactId>spring-cloud-register</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>demo-register</module>
        <module>demo-service-provider</module>
        <module>demo-service-consumer</module>
    </modules>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Hoxton.SR1</spring-cloud.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>2.2.4.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

        </dependencies>
    </dependencyManagement>
</project>

3、demo-register 的 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>spring-cloud-register</artifactId>
        <groupId>com.demo</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>demo-register</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

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

    </dependencies>

</project>

 

4、RegisterApplication.java

package com.demo.register;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;


@EnableEurekaServer
@SpringBootApplication
public class RegisterApplication{

    public static void main(String[] args) {
        SpringApplication.run(RegisterApplication.class, args);
    }
}

 

5、application.yml

server:
  port: 8001
  servlet:
    context-path: /register

spring:
  application:
    name: demo-register

eureka:
  instance:
    hostname: localhost
  client:
    register-with-eureka: false
    fetch-registry: false
    instance-info-replication-interval-seconds: 30
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}${server.servlet.context-path}/eureka/

 配置說明:

  1、spring.application.name,定義服務名稱為demo-register;

  2、eureka.instance.hostname,指定了Eureka服務端的地址,因為我們是在本地搭建的,所以填寫為localhost即可;

  3、eureka.client.register-with-eureka,表示是否將服務注冊到Eureka服務端,由於我們這里是單節點的Eureka服務端,所以這里指定false;

  4、eureka.client.fetch-registry,表示是否從Eureka服務端獲取服務信息,因為這里是單節點的Eureka服務端,並不需要從別的Eureka服務端同步服務信息,所以這里設置為false;

  5、eureka.client.instance-info-replication-interval-seconds,微服務更新實例信息的變化到Eureka服務端的間隔時間,單位為秒,這里指定為30秒(這就是微服務啟動后,要過一會才能注冊到Eureka服務端的原因)。

  6、eureka.client.serviceUrl.defaultZone,指定Eureka服務端的地址,這里為當前項目地址,即 http://localhost:8001/register/eureka/

5、運行效果圖

  通過以上四個步驟,一個微服務的注冊中心已經搭建完畢。代碼就是這么簡單,不要懷疑自己。

  

 

 

 

 6、總結

  erueka的控制台顏值雖然不高,但是作為注冊中心還是很不錯的。eureka是一個高可用的注冊中心,zookeeper是高一致性的注冊中心。我們可以修改eureka的配置來提高eureka的高一致性。

  nacos是阿里系的微服務注冊中心,同時nacos也是配置中心。eureka、zookeeper、nacos都可以做為注冊中心,他們各有優點。最好是每個都了解一下。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM