注册中心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

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

相关推荐
weixin_462446239 小时前
【实战原创】Docker 清理指南:以 Coze Studio 为例的资源保留与清理实践(非万能方案)
docker·容器·eureka
bloglin999991 天前
启动容器报错ls: cannot access ‘/docker-entrypoint-initdb.d/‘: Operation not permitted
docker·容器·eureka
学习3人组1 天前
CentOS9安装Docker
docker·容器·eureka
HillVue1 天前
中国未来 AI 路径的百度样本
大数据·eureka·dubbo
檀越剑指大厂2 天前
查看 Docker 镜像详情的几种常用方法
docker·容器·eureka
轩轩Aminent2 天前
WSL 中的 Ubuntu 系统中使用 Docker
ubuntu·docker·eureka
斯普信专业组3 天前
Docker Registry 镜像缓存与客户端无感加速(以 Docker Hub 为例)
缓存·docker·eureka
颜淡慕潇3 天前
容器生态双核心:Podman与Docker深度对比及实战指南
docker·eureka·podman
周杰伦_Jay4 天前
【大模型数据标注】核心技术与优秀开源框架
人工智能·机器学习·eureka·开源·github
凯新生物4 天前
mPEG-SS-PLGA-DTX:智能药物递送系统
eureka·flink·ffmpeg·etcd