【微服务笔记01】微服务组件之Eureka注册中心的介绍及其基础环境的搭建

news2024/9/28 9:23:39

这篇文章,主要介绍微服务中的注册中心Eureka及其基础环境的搭建【源代码地址】。

目录

一、Eureka注册中心

1.1、什么是注册中心

1.2、注册中心原理

二、搭建Eureka注册中心环境

2.1、创建父工程,引入微服务依赖

2.2、创建Eureka服务端工程

(1)引入Eureka服务端依赖

(2)创建启动类

(3)添加配置文件

(4)启动工程测试

2.3、创建Eureka客户端工程

(1)引入Eureka客户端依赖

(2)创建启动类

(3)添加配置文件

(4)启动工程测试


一、Eureka注册中心

1.1、什么是注册中心

  • 微服务架构中,会有很多的服务,每个服务都有对应的IP地址和端口,以及相关的服务信息,这里就存在一个问题???
    • 就是服务A调用服务B的时候,怎么知道B的IP地址和端口信息呢???
    • 可以有多种解决方案,比如:将服务A的IP地址和端口,直接在服务B配置文件中写死,这样,调用服务的时候,通过配置文件就可以获取到IP和端口。
    • 上面这种方式不太灵活,如果服务A部署到另外一台机器上面,那么就需要修改服务B中的配置文件,这显然是不可取的方式。
  • 为了解决上面这种情况,于是就出现了注册中心。
    • 基本思想:单独一个服务出来,这个服务专门用于收集和保存所有微服务的IP地址和端口相关信息。
    • 如果某个服务A需要调用服务B,则首先到注册中心里面查询服务B的地址信息,拿到地址信息后,在进行服务的调用。
    • 这种模式下,无论服务A部署到哪一台机器上面,都不会影响到服务B,因为服务B都是从注册中心获取服务信息,它不用管注册中心如何收集和保存的服务B地址信息。

注册中心,可以理解成为是一个微服务之间的一个电话簿,其中某个微服务需要调用另一个微服务的时候,只需要从电话簿里面获取到指定微服务的IP等信息,然后通过Restful的方式进行服务的消费即可。

常见的注册中心有如下几种:

  • Eureka。
  • Consul。
  • Zookeeper。
  • Dubbo。
  • Nacos。

注册中心的核心功能主要是:服务注册和服务发现。

1.2、注册中心原理

Eureka注册中心,它是采用【C/S】模式实现的一种架构,它由两部分组成,分别是:Eureka服务端、Eureka客户端。

  • Eureka服务端:服务端用于接收和保存客户端注册的信息,即:服务注册。
  • Eureka客户端:客户端用于从Eureka服务端获取其他微服务的相关信息,和eureka服务端保持通信,即:服务发现。

Eureka注册中心大致运行原理如下图所示:

上图就是注册中心大致的一个过程,几乎所有的注册中心都是采用这种模式的,基本步骤如下。

  • 首先,搭建一个Eureka服务端作为注册中心。
  • 当服务提供者、服务消费者启动的时候,会将自身的地址信息发送给eureka注册中心进行保存。
  • 服务提供者、服务消费者会从注册中心获取所有可用服务列表。
  • 通过可用服务列表,服务消费者根据相关地址,通过HTTP或者消息组件调用服务提供者的接口进行服务消费。

二、搭建Eureka注册中心环境

2.1、创建父工程,引入微服务依赖

因为微服务是基于SpringBoot框架进行开发的,所以我们需要引入SpringBoot的依赖,并且还需要引入SpringCloud的依赖。

  • 在父工程里面,引入【SpringBoot】和【SpringCloud】两个依赖。
<?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.gitcode.eureka</groupId>
    <artifactId>eureka-demo</artifactId>
    <packaging>pom</packaging>
    <version>1.0.0</version>
    <modules>
        <module>eureka-server</module>
    </modules>

    <name>eureka-demo</name>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <!-- 引入SpringBoot依赖 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <dependencyManagement>
        <!-- 使用 dependencyManagement 依赖管理,统一管理组件的版本 -->
        <dependencies>
            <!-- 引入 SpringCloud 微服务依赖 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR12</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

</project>
  • 注意:SpringBoot的版本和SpringCloud的版本是有对应关系的,不同的SpringBoot版本需要使用不同的SpringCloud版本,可以从下面这个地址查找对应的微服务版本。

【SpringBoot和SpringCloud版本对应关系】,这个地址中描述了版本的对应关系,如下图所示:

2.2、创建Eureka服务端工程

(1)引入Eureka服务端依赖

  • 创建【eureka-server】子工程,在pom文件里面引入【spring-cloud-starter-netflix-eureka-server】依赖。
<?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>
    <parent>
        <groupId>com.gitcode.eureka</groupId>
        <artifactId>eureka-demo</artifactId>
        <version>1.0.0</version>
    </parent>

    <artifactId>eureka-server</artifactId>
    <version>1.0.0</version>

    <name>eureka-server</name>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <!-- 引入 Web 工程 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- 引入 eureka 服务端依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>
</project>

(2)创建启动类

  • 创建工程启动类,并且启动类上面添加【@EnabledEurekaServer】注解,开启Eureka服务端功能。
package com.gitcode.eureka;

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

/**
 * @version 1.0.0
 * @Date: 2022/12/30 11:05
 * @Copyright (C) ZhuYouBin
 * @Description:
 */
// 开启 Eureka 服务端
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApp {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApp.class, args);
    }
}

(3)添加配置文件

  • 在【application.yml】配置文件中,添加eureka相关的配置信息。
server:
  port: 8761
spring:
  application:
    name: eureka-server # 微服务工程应用名称

# eureka配置
eureka:
  instance:
    hostname: ${spring.application.name}
  client:
    register-with-eureka: false # 是否将自己注册到eureka注册中心
    fetch-registry: false # 是否从eureka注册中心获取注册信息

(4)启动工程测试

结果上面三个步骤,eureka服务端工程已经创建完成了,下面就是启动工程,浏览器访问【http://localhost:8761/】即可看到注册中心的界面,如下图:

2.3、创建Eureka客户端工程

(1)引入Eureka客户端依赖

  • 创建【eureka-client】子工程,在pom文件里面引入【spring-cloud-starter-netflix-eureka-client】依赖。
<?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>
    <parent>
        <groupId>com.gitcode.eureka</groupId>
        <artifactId>eureka-demo</artifactId>
        <version>1.0.0</version>
    </parent>

    <artifactId>eureka-client</artifactId>
    <version>1.0.0</version>

    <name>eureka-client</name>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <!-- 引入 Web 工程 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- 引入 eureka 客户端依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    </dependencies>
</project>

(2)创建启动类

  • 创建工程启动类,并且启动类上面添加【@EnabledEurekaClient】注解,开启Eureka客户端的功能。
package com.gitcode.eureka;

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

/**
 * @version 1.0.0
 * @Date: 2022/12/30 11:05
 * @Copyright (C) ZhuYouBin
 * @Description:
 */
// 开启 Eureka 客户端
@EnableEurekaClient
@SpringBootApplication
public class EurekaClientApp {
    public static void main(String[] args) {
        SpringApplication.run(EurekaClientApp.class, args);
    }
}

(3)添加配置文件

server:
  port: 9527
spring:
  application:
    name: eureka-client # 微服务工程应用名称

# eureka配置
eureka:
  instance:
    hostname: ${spring.application.name}
  client:
    register-with-eureka: true # 是否将自己注册到eureka注册中心
    fetch-registry: true # 是否从eureka注册中心获取注册信息
    service-url:
      defaultZone: http://localhost:8761/eureka/ # eureka服务端的地址

(4)启动工程测试

启动eureka服务端工程和eureka客户端工程,然后浏览器访问【http://localhost:8761/】注册中心,可以在eureka注册中心界面看见一个客户端信息。

到此,Eureka注册中心的环境搭建完成了。

综上,这篇文章结束了,主要介绍微服务中的注册中心Eureka及其基础环境的搭建。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/129325.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

全球公开的DEM数据产品

1 简介 全球公开版地形数据包括&#xff1a;GTOPO30-DEM、ASTER-GDEM、SRTM90、ALOS-AW3D30等&#xff0c;其他的诸如World DEM及ALOS-AW3D (5m分辨率&#xff09;等全球地形数据不能免费获得。 SRTM&#xff1a;由NASA 及国家地理空间情报局NGA采用2000年2月发射的“奋进号”…

word文件损坏打不开如何修复?文件丢失怎么办?

我们日常办公中&#xff0c;经常用到Word文档。但是有时会遇到word文件损坏、无法打开的情况。这时该怎么办&#xff1f;接着往下看&#xff0c;小编在这里就给大家带来Word文件修复的方法&#xff0c;以及Word文件丢失如何恢复的方法&#xff01; 一、Word文件损坏怎么办 部分…

【vsan数据恢复】磁盘离线导致分布式存储瘫痪的数据恢复案例

vsan数据恢复环境&#xff1a; 一组4台服务器搭建vsan集群&#xff1b; 每台服务器配置有2组分别由6块硬盘组成的磁盘阵列&#xff0c;上层是虚拟机文件。 vsan故障&#xff1a; 在运行过程中&#xff0c;某一个节点的一块硬盘离线&#xff0c;vsan安全机制启动&#xff0c;开始…

梦想云图Node.JS服务 ( 最近更新时间:2022-12-30 10:04:50 )

说明 后台提供梦想Node.JS服务&#xff0c;方便调用控件后台功能&#xff0c;Windows服务程序所在目录:Bin\MxDrawServer\Windows&#xff0c;Linux服务程序所在目录:Bin\Linux\MxDrawServer 梦想云图Node.JS服务 &#xff08; 最近更新时间&#xff1a;2022-12-30 10:04:50 …

第三个脚本——时间加速and视频倍速

目录 本文主要内容 granr属性介绍 run-at属性 时间加速原理 视频倍速原理 完整示例 本文主要内容 介绍grant属性&#xff0c;run-at属性以及时间加速&#xff0c;视频倍速原理 granr属性介绍 相关函数四个&#xff1a; GM_setValue GM_getValue GM_listValues GM_del…

json基本使用与简介

一、简介 二、json两种构造结构 三、js解析JSON 1、JSON2解析JSON 2.用eval()方法把JSON字符串转化成JSON对象. 3&#xff0e;使用JSON2中的JSON对象的parser()方法解析JSON字符串 4. 使用JSON2中的JSON对象的stringify ()方法把JSON对象转换成字符串 5、案例 四、Java解…

【模型部署】人脸检测模型DBFace C++ ONNXRuntime推理部署(1)

系列文章目录 【模型部署】人脸检测模型DBFace C ONNXRuntime推理部署&#xff08;0&#xff09; 【模型部署】人脸检测模型DBFace C ONNXRuntime推理部署&#xff08;1&#xff09; 【模型部署】人脸检测模型DBFace C ONNXRuntime推理部署&#xff08;2&#xff09; 文章目录…

深度学习训练营之灵笼人物识别

深度学习训练营之灵笼人物识别原文链接环境介绍前置工作设置GPU导入数据数据查看数据预处理加载数据可视化数据检查数据配置数据集prefetch()功能详细介绍&#xff1a;归一化查看归一化后的数据构建VGG-19网络VGG优点VGG缺点利用官方给到的网络网络结构编译模型训练结果可视化预…

第03讲:GitHub的使用

一、创建远程仓库 访问GitHub官方网站&#xff0c;并创建账号&#xff0c;然后按照以下图示创建项目 复制仓库地址 二、远程仓库的操作 命令作用git remote -v查看当前所有远程地址别名git remote add 别名 远程地址起别名git push 别名 分支推送本地分支上的内容到远程仓库…

vscode+opencv+mingw+cmake配置vscode下的opencv环境

目录介绍安装VsCode安装mingw安装cmake安装opencv&#xff0c;以及其扩展库 opencv_contrib安装python利用cmake生成opencv的Makefile文件cmake命令进行编译&#xff0c;安装配置opencv环境变量配置VSCODE测试DEMO介绍 参考链接&#xff1a;https://www.cnblogs.com/czlhxm/p/…

教育行业回访话术

近些年来&#xff0c;随着知识经济的快速发展&#xff0c;教育市场呈现良好的增长态势。越来越多的人开始通过参加各种培训来提升自己&#xff0c;教育行业竞争十分激烈。 前言 近些年来&#xff0c;随着知识经济的快速发展&#xff0c;教育市场呈现良好的增长态势。而且由于受…

人力资源软件对中小企业的七点重要性

对于中小企业&#xff08;SMB&#xff09;来说&#xff0c;员工就意味着一切。你的员工几乎掌握着企业的整体增长和发展&#xff0c;他们可以成就企业&#xff0c;但也能破坏企业的发展。为了提高员工效率&#xff0c;中小型企业需要出色的人力资源管理。员工只有在受到重视和培…

被新手忽视的 自谐振频率点

在MHz的DCDC和RF LNA电路中&#xff0c;被新手忽视的 自谐振频率点Self-Resonant Frequency 计算公式为 下图显示了 1μF&#xff0c;封装为 1206 的陶瓷电容器的阻抗&#xff08;MLCC有经典的V型阻抗-频率曲线。随着频率升高&#xff0c;寄生电感的影响开始凸显&#xff0c;阻…

Faster RCNN网络源码解读(Ⅴ) --- GeneralizedRCNNTransform图像初始化代码解析

目录 一、代码作用&#xff08;transform.py&#xff09; ​编辑 二、代码解析 2.1 GeneralizedRCNNTransform类 2.1.1 初始化函数__init__ 2.1.2 normalize标准化处理 2.1.3 将图像以及bndbox进行缩放resize 2.1.4 batch_images 2.1.5 正向传播 forward 2.1.6 后…

分布式系统共识机制:一致性算法设计思想

分布式系统共识机制&#xff1a;一致性算法设计思想Paxos 算法节点角色算法流程Raft 算法节点角色核心机制leader选举日志复制PBFTHotstuff门限签名核心机制二阶段提交协议三阶段提交协议这次以一个宏观的角度去总结 自己学习过的一致性算法。一致性算法的目标就是让分布式系统…

Java开发 - 树(二叉树,二叉排序树,红黑树)

目录 前言 你好&#xff0c;认识一下&#xff0c;我是树 二叉树与二叉排序树 二叉排序树特点 为什么说二叉排序树查询效率要高于链表呢&#xff1f; 元素的类型 比较器 手写二叉排序树 定义一棵二叉树 增加元素 查询元素 修改元素 删除元素 遍历二叉树 重写toS…

JAVA注解处理API实战

简介 ​ 插件化注解处理(Pluggable Annotation Processing)API JSR 269提供一套标准API来处理Annotations( JSR 175),实际上JSR 269不仅仅用来处理Annotation&#xff0c;它建立了Java 语言本身的一个模型,它把method、package、constructor、type、variable、enum、annotatio…

工业远程I/O模块 CANopen 通讯

1.对象字典OD 对象字典是每个CANopen设备必须具有的功能&#xff0c;它包含了设备所有可以被访问的参数&#xff0c;客户端使用索引(Index)和子索引(Sub-index)来读写对象字典里的参数。 对象字典主要用来设定设备组态及进行非即时的通讯。每个对象采用16位索引的方式来寻址&…

01Editor最新破解

文章目录01Editor最新版注册算法逆向1.定位注册算法代码2.整体注册算法3.Check1算法分析4.Check2算法分析5.获得正确的任意用户名对应的序列号01Editor最新版注册算法逆向 1.定位注册算法代码 【版本】13.0.164bit\textcolor{green}{【版本】13.0.1\ 64bit}【版本】13.0.1 64b…

Redis集群系列七 —— 散列插槽分析

集群状态日志分析 Redis 分片集群引入了一个逻辑上的插槽或哈希槽概念&#xff0c;将集群划分为16384&#xff08;0~16383&#xff09;个槽位&#xff0c;集群中的每个节点占据一部分槽位数&#xff0c;在逻辑上将集群中的所有节点构成了一块完整的内存空间。 这个日志中可以通…