注册中心Eureka

Eureka

文章目录

  • 前言
  • 一、Eureka是什么?
  • 二、使用步骤
    • 1.搭建一个SpringCloud项目
    • [2.启动类上增加注解 @EnableEurekaServer](#2.启动类上增加注解 @EnableEurekaServer)
    • [3.启动项目 访问 配置文件里定义的端口号](#3.启动项目 访问 配置文件里定义的端口号)
    • [4.启动成功访问 localhost:7000](#4.启动成功访问 localhost:7000)
    • [5.以同样的方式创建子项目 eureka-client-xx 作为 服务客户端 然后向eureka-server 服务中心注册](#5.以同样的方式创建子项目 eureka-client-xx 作为 服务客户端 然后向eureka-server 服务中心注册)
    • [5.client端启动成功再次访问 注册中心 eureka-server localhost:7000](#5.client端启动成功再次访问 注册中心 eureka-server localhost:7000)

前言

Eureka是Netflix开发的基于REST的服务发现框架,主要用于服务注册,管理,负载均衡和服务故障转移.

官方声明在Eureka2.0版本停止维护,不建议使用.但是Eureka是SpringCloud服务注册/发现的默认实现,所以目前还是有很多公司在使用.

一、Eureka是什么?

Eureka 是一个注册中心主要分为两部分:

Eureka Server: 作为注册中心Server端,向微服务应用程序提供服务注册,发现,健康检查等能力。

Eureka Client: 服务提供者,服务启动时,会向Eureka Server 注册自己的信息(IP,端口,服务信息等),Eureka Server 会存储这些信息。

常见的注册中心:

  1. Zookeeper:Zookeeper的官方并没有说它是一个注册中心,但是国内Java体系,大部分的集群环境都是依赖Zookeeper来完成注册中心的功能。
  2. Eureka:Eureka是Netflix开发的基于REST的服务发现框架,主要用于服务注册,管理,负载均衡和服务故障转移.
    官方声明在Eureka2.0版本停止维护,不建议使用.但是Eureka是SpringCloud服务注册/发现的默认实现,所以目前还是有很多公司在使用。
  3. Nacos:Nacos是Spring Cloud Alibaba架构中重要的组件,除了服务注册,服务发现功能之外,Nacos还支持配置管理,流量管理,DNS.动态DNS等多种特性。

二、使用步骤

1.搭建一个SpringCloud项目

3.在pom.xml文件中增加内容

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>org.zch</groupId>
    <artifactId>spring-cloud-demo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <!-- 项目统一管理版本 -->
        <java.version>1.8</java.version>
    </properties>

    <!--  等有了子项目 用于添加字模块 暂时没有创建 先注释掉了 等有了子项目就添加到这里 -->
    <!--
        <modules>
            <module>子模块1</module>
            <module>子模块2</module>
            <module>子模块3</module>
            <module>子模块4</module>
            <module>子模块5</module>
            <module>子模块6</module>
            <module>子模块7</module>
            <module>子模块8</module>
        </modules>
    -->

    <!--  管理依赖的版本号,并将版本号传递给子项目,此时只是管理,并不会下载依赖。springBoot和SpringCloud的版本号需要相互对应  -->
   <dependencyManagement>
       <dependencies>
           <!--  spring-cloud依赖版本管理器 -->
           <dependency>
               <groupId>com.alibaba.cloud</groupId>
               <artifactId>spring-cloud-alibaba-dependencies</artifactId>
               <version>2.2.6.RELEASE</version>
               <!--将版本号传递给子项目,必须加-->
               <type>pom</type>
               <scope>import</scope>
           </dependency>
           <!-- spring-cloud依赖版本管理器 -->
           <dependency>
               <groupId>org.springframework.cloud</groupId>
               <artifactId>spring-cloud-dependencies</artifactId>
               <version>Hoxton.SR9</version>
               <!--将版本号传递给子项目,必须加-->
               <scope>import</scope>
               <type>pom</type>
           </dependency>

           <!-- springboot依赖版本管理器 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.2.3.RELEASE</version>
                <!--将版本号传递给子项目,必须加-->
                <type>pom</type>
                <scope>import</scope>
            </dependency>

        </dependencies>

    </dependencyManagement>

    <!-- 添加项目构建插件 maven 我本地的maven3.6.1 jdk1.8  -->
    <build>
        <plugins>
            <!-- 添加插件maven3.6.1 编译器   -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <!-- 添加spring-boot编译器   -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.3.2.RELEASE</version>
            </plugin>
        </plugins>
    </build>

</project>

4.创建eureka-server项目 也是一个子模块

5.子模块创建出来了 ,添加依赖 配置子模块 pom.xml

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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <!-- 指向父级 -->
    <parent>
        <groupId>com.example</groupId>
        <artifactId>spring-cloud-demo01</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath/> 
    </parent>
    
    <!-- 子级 子模块信息 -->
    <groupId>com.example</groupId>
    <artifactId>eureka-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>eureka-server</name>
    <description>eureka-server</description>



    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <!-- 添加 eureka-server 依赖  -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
        <!-- 添加 web 依赖  -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <!-- 添加项目构建插件   -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

6.修改子项目配置文件 .yml 如果创建出来的不是yml建议改成yml

yaml 复制代码
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

2.启动类上增加注解 @EnableEurekaServer

java 复制代码
package com.example.eurekaserver;

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


@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {

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

}

3.启动项目 访问 配置文件里定义的端口号

4.启动成功访问 localhost:7000

5.以同样的方式创建子项目 eureka-client-xx 作为 服务客户端 然后向eureka-server 服务中心注册

eureka-client 子模块:

1.pom.xml

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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.example</groupId>
        <artifactId>spring-cloud-demo01</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.example</groupId>
    <artifactId>eureka-client</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>eureka-client</name>
    <description>eureka-client</description>


    <properties>
        <java.version>1.8</java.version>
    </properties>

    <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-client</artifactId>
            </dependency>


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

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

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

2.yml

yaml 复制代码
server:
  port: 8001
eureka:
  client:
    service-url:
      #注册服务中心地址 eureka-server 项目的端口
      defaultZone: http://localhost:7000/eureka/
#指定应用程序的名称
spring:
  application:
    name: eureka-client

3.启动类添加注解 @EnableDiscoveryClient

java 复制代码
package com.example.eurekaclient;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;


@EnableDiscoveryClient
@SpringBootApplication
public class EurekaClientApplication {

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

}

4.启动eureka-client

5.client端启动成功再次访问 注册中心 eureka-server localhost:7000

想要注册更多的服务 就按照上面 不断的加进来子项目 实际开发中应该会有很多子模块 注册进来 这里只是模仿一下 服务的注册 与 发现,便于理解,记录生活,记录美好,记录学习过程。

相关推荐
William一直在路上3 天前
回顾一下Docker的基本操作
docker·容器·eureka
赵成ccc3 天前
如何进行 Docker 数据目录迁移
docker·容器·eureka
ocean'4 天前
网络安全初级第一次作业
云原生·eureka
尘土哥4 天前
Docker 快速上手
docker·容器·eureka
陈小桔6 天前
Eureka实战
eureka
牧天白衣.9 天前
Docker相关内容
docker·容器·eureka
Liudef0610 天前
Docker企业级应用:从入门到生产环境最佳实践
docker·容器·eureka
呆萌的代Ma12 天前
解决Mac上的老版本docker desktop 无法启动/启动后一直转圈/无法登陆账号的问题
macos·docker·eureka
Li&&Tao13 天前
docker 常用命令
docker·容器·eureka
lingRJ77713 天前
微服务架构下的抉择:Consul vs. Eureka,服务发现该如何选型?
java·eureka·springcloud·consul·backend·microservices·servicediscovery