手把手教你搭建SpringCloud项目(三)集成Eureka服务注册中心

news2025/3/7 2:57:27

我们首先了解 Eureka:官方介绍

一、了解Eureka

1、什么是服务治理?

Springcloud 封装了Netfix公司开发的Eureka模块来实现服务治理。在传统的RPC远程调用中,管理每个服务于服务之间依赖关系复杂,管理复杂,所以需要使用服务治理,管理服务于服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。

2、什么是服务注册与发现?

Eureka采用了CS的设计架构,Eureka Server服务端作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用Eureka Client客户端连接到Eureka Server服务端并维持心跳的连接,这样系统的维护人员就可以通过ureka Server来监控系统中的各个微服务是否正常运行。

在服务注册与发现中,有一个注册中心。当服务器启动的时候,会把当前自己服务器的的信息,比如:服务地址通讯等以别名方式注册到注册中心上,另一方(消费者|生产者)以该别名的方式去注册中心上获取到实际的服务通讯地址,然后再实现本地RPC调用和RPC远程调用框架核心设计思想。这里的重点就是注册中心,因为注册中心管理每个服务于服务之间的依赖关系。在任何的RPC框架中,都会有一个注册中心,存放服务地址相关信息,也就是接口地址。

下图为Eureka的架构图:
在这里插入图片描述

二、搭建Eureka服务端服务

新建一个module,是Eureka的服务。步骤和之前新建module是一样的,该module名称:cloud-eureka-server。参考前两篇文章。这里从修改pom文件开始贴代码。注意:主要就是添加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">
    <parent>
        <groupId>com.study.springcloud</groupId>
        <artifactId>mcroservice</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
 
    <artifactId>cloud-eureka-server</artifactId>
    <dependencies>
        <!--eureka-server-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
        <!-- 引入自己定义的api通用包,可以使用Payment支付Entity -->
        <dependency>
            <groupId>com.study.springcloud</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>
        <!--boot web actuator-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--一般通用配置-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
    </dependencies>
 
</project>

配置yml文件

server:
  port: 7001
eureka:
  instance:
    hostname: eureka7001.com #eureka服务端的实例名称
  client:
    register-with-eureka: false     #false表示不向注册中心注册自己。
    fetch-registry: false     #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    service-url:
      #设置与eureka  server交互的地址和注册服务都需要依赖这个地址
      defaultZone: http://eureka7001.com:7001/eureka/  #单机就是指向自己

主启动类:因为是Eureka的服务端,所以要加该注解@EnableEurekaServer

package com.buba.springcloud.eureka;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
 
 
@SpringBootApplication
@EnableEurekaServer
public class EurekaMain {
    public static void main(String[] args) {
        SpringApplication.run(EurekaMain.class,args);
    }
}

启动该项目,我们直接访问该地址http://localhost:7001/,端口7001就是改服务的端口,出现如下界面,说明启动成功。
在这里插入图片描述

现在Erueka的服务端已经启动成功,那我们现在就将我们的订单的生产者和消费者注册到我们Erueka的注册中心。

三、将生产者注册到Erueka服务中

首先我们修改的是cloud-provide-payment服务中的pom文件。只需要新增eureka-client的依赖。

<!--   添加eureka客户端的依赖     -->
 <dependency>
      <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
 </dependency>

接下来就是修改yml文件,在yml文件中新增如下配置。

#eureka配置
eureka:
  client:
    #表示是否将自己注册进eureka  默认为true
    register-with-eureka: true
    #是否从EurekaServer中抓取已有的注册信息,默认为true,单点无所谓,集群必须设置true才能和ribbon使用负载均衡
    fetch-registry: true
    service-url:
      #单机配置
      defaultZone: http://localhost:7001/eureka

然后修改主启动类,要加该注解@EnableEurekaClient

@SpringBootApplication
@EnableEurekaClient
public class PayMentMain {
    public static void main(String[] args) {
        SpringApplication.run(PayMentMain.class,args);
    }
}

最后我们要先启动Eureka服务端的服务,然后再启动生产者。然后在访问:http://localhost:7001/,会出现如下的界面,我们可以看到服务列表中有就了mcroservice-payment这个服务
在这里插入图片描述

服务列表中的mcroservice-payment这个服务名称是我们在mcroservice-payment这个服务中yml文件中配置的,如下图:
在这里插入图片描述

我们访问一下之前的接口看看是否能访问成功。输入http://localhost:8001/payment/get/1,可以成功访问,如下图。

在这里插入图片描述

四、将消费服务注册到Erueka服务中

具体的修改步骤跟我们上边的服务差不多,在cloud-consumer-order微服务项目中,只需要新增eureka-client的依赖。

<!--   添加eureka客户端的依赖     -->
 <dependency>
      <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
 </dependency>

接下来就是修改yml文件,在yml文件中新增如下配置。

#eureka配置
eureka:
  client:
    #表示是否将自己注册进eureka  默认为true
    register-with-eureka: true
    #是否从EurekaServer中抓取已有的注册信息,默认为true,单点无所谓,集群必须设置true才能和ribbon使用负载均衡
    fetch-registry: true
    service-url:
      #单机配置
      defaultZone: http://localhost:7001/eureka

然后修改主启动类,要加该注解@EnableEurekaClient

@SpringBootApplication
@EnableEurekaClient
public class OrderMain {
    public static void main(String[] args) {
        SpringApplication.run(OrderMain.class,args);
    }

最后我们要先启动Eureka服务端的服务,然后再启动消费者服务。然后在访问:http://localhost:7001/,会出现如下的界面,我们可以看到服务列表中有除了有mcroservice-payment这个服务外,还新增了mcroservice-order这个服务。

在这里插入图片描述

现在生产者服务和消费者服务都已经成功注册到我们Eureka的注册中心, 下面测试一下消费者服务,是否可以成功访问。输入http://localhost/consumer/payment/get/1,访问成功,如下图:

在这里插入图片描述

我们成功的将生产者和消费者成功注册到了注册中心, 也可以通过接口获取信息。so easy。

在这里插入图片描述

下一篇文章继续搭建集群版的Eureka,持续关注、点赞。我们持续更新中。

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

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

相关文章

113. 路径总和 II

113. 路径总和 II 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a; 原题链接&#xff1a; 113. 路径总和 II https://leetcode.cn/problems/path-sum-ii/ 完成情况&#xff1a; 解题思路&#xff1a; /**解题思路&#xff1a;* 和之前一…

msys2安装与配置: 在windows上使用linux工具链g++和包管理工具pacman C++开发

文章目录 为什么用这个msys2下载、doc安装&#xff0c;很简单初次运行&#xff0c;做些配置更新软件安装与卸载方法安装必要的软件包设置win环境变量在windows terminal中使用在vscode中使用 为什么用这个msys2 方便windows上的C开发demo&#xff0c;不需要VS了方便C开发安装o…

Redis缓存更新策略以及常见缓存问题

文章目录 一、什么是缓存&#xff1f;二、添加Redis缓存三、缓存更新策略四、缓存穿透五、缓存雪崩六、缓存击穿七、缓存工具封装 一、什么是缓存&#xff1f; 缓存就是数据交换的缓冲区(Cache)&#xff0c;是存储数据的临时地方&#xff0c;一般读写性能较好&#xff0c;常见…

Mac环境配置(Java)----使用bash_profile进行配置

1、打开软件--终端 2、首先查看本机Java的安装地址&#xff08;系统默认的&#xff09; /usr/libexec/java_home -V 查看到Java8安装的路径如下&#xff1a; 3、如果是第一次配置环境变量&#xff0c;使用命令&#xff1a;【touch .bash_profile】创建一个.bash_profile隐藏…

多表查询例题

目录 创建学生表 创建分数表 查看表结构 向两张表插入数据 1.查间student表的昕有记录 ​2.查间student表的第2条到4条记录 ​3.从student表查间所有学生的学号(id)、姓名(name)和院系(department)的信息 ​4.从student表中查间计算机系和英语系的学生的信息 ​5.从stu…

免费nas diy

安装Debian11 * 安装时选择ssh-server服务 * 安装时选中non-free contrib 还有bullseye-backports non-free 可以安装闭源驱动 bullseye-backports 可以更新内核 安装完成后,编辑/etc/apt/sources.list文件,关闭光驱源 并 切换到国内源 安装新内核6.1,重启后,可以移除老内…

监控指标111

P95、P99.9百分位数值——服务响应时间的重要衡量指标 开发技术 开发技术 2021-02-01 388次浏览 前段时间&#xff0c;在对系统进行改版后&#xff0c;经常会有用户投诉说页面响应较慢&#xff0c;我们看了看监控数据&#xff0c;发现从接口响应时间的平均值来看在500ms左右&…

数据结构--线性表以及其顺序存储结构

这里写目录标题 线性表的定义和特征定义特征 案例引入稀疏多项式链表实现多项式相加小结 线性表的类型定义&#xff08;抽象数据类型&#xff09;定义格式基本操作小结 线性表的顺序表示和实现实现1顺序存储表示顺序表中元素存储位置的计算 实现2顺序表的优点问题出现结构体表示…

你需要跟踪分析产品知识库的哪些关键数据

当你拥有一个产品知识库时&#xff0c;了解如何跟踪和分析关键数据指标是非常重要的。这些数据可以提供有关知识库使用情况、用户行为和满意度的宝贵见解。 在本文中&#xff0c;我们将探讨你需要跟踪的几个重要数据指标&#xff0c;以帮助你优化和改进产品知识库的效果和价值。…

大语言模型评估全解:评估流程、评估方法及常见问题

编者按&#xff1a;随着对大语言模型&#xff08;LLM&#xff09;评估领域的深入研究&#xff0c;我们更加清楚地认识到全面理解评估过程中的问题对于有效评估LLM至关重要。 本文探讨了机器学习模型评估中出现的常见问题&#xff0c;并深入研究了LLM对模型评估领域带来的重大挑…

Blazor 自定义可重用基础组件之 Dialog (Bootstrap Modal)

对话框是常用的组件之一&#xff0c;可以提供信息提示&#xff0c;也可以设置表单录入数据等。但是&#xff0c;Bootstrap Modal需要JS互操作&#xff0c;这个不太懂&#xff0c;只能绕过。这里没有一句JS代码&#xff0c;非常好用。 以下是具体代码&#xff1a; &#xfeff…

Drools用户手册翻译——第三章 构建,部署,应用和运行(六)剩余部分

终于是把这一章给看完了&#xff0c;看完也有点懵&#xff0c;需要重新梳理实践一下&#xff0c;最主要是概念有些多&#xff0c;不过还好&#xff0c;多用一用就明白了。 甩锅声明&#xff1a;本人英语一般&#xff0c;翻译只是为了做个笔记&#xff0c;所以有翻译错误的地方…

SciencePub学术 | 物联网类重点SCIEEI征稿中

SciencePub学术 刊源推荐: 物联网类重点SCIE&EI征稿中&#xff01;CCF推荐&#xff0c;对国人友好&#xff01;信息如下&#xff0c;录满为止&#xff1a; 一、期刊概况&#xff1a; 物联网类重点SCIE&EI 【期刊简介】IF&#xff1a;7.0-7.5&#xff0c;JCR1区&#…

算法训练营第四十一天||● 343. 整数拆分 96.不同的二叉搜索树

● 343. 整数拆分 这道有难度&#xff0c;不看题解肯定 想不到用动态规划&#xff0c;看了题解后能大概明白&#xff0c;但还不是很清晰&#xff0c;不太明白递推公式中强调的与dp[i]还要比较一次&#xff0c;也不明白第一次去最大最的那个比较 需要后面继续看 动规五部曲&a…

深度强化学习落地方法论训练篇:PPO、DQN、DDPG、学习率、折扣因子等

为了保证 DRL 算法能够顺利收敛,policy 性能达标并具有实用价值,结果有说服力且能复现,需要算法工作者在训练前、训练中和训练后提供全方位一条龙服务。我记得 GANs 刚火起来的时候,因为训练难度高,有人在 GitHub 上专门开了 repository,总结来自学术界和工业界的最新训练…

麦穗检测Y8S

采用YOLOV8训练&#xff0c;得到PT模型&#xff0c;然后直接转ONNX&#xff0c;使用OPENCV的DNN&#xff0c;不需要其他依赖&#xff0c;支持C/PYTHON 麦穗检测Y8S

CodeGeex论文阅读

《CodeGeeX: A Pre-Trained Model for Code Generation with Multilingual Evaluations on HumanEval-X》 论文地址&#xff1a;https://arxiv.org/pdf/2303.17568.pdf 代码地址&#xff1a;https://github.com/THUDM/CodeGe 一、简介 CodeGeeX&#xff0c;是一个具有130亿…

<数据结构>NO10.快速排序|递归|非递归|优化

文章目录 快速排序递归实现快速排序hoare版本DigHole版本前后指针版本 非递归实现快速排序算法优化1. 针对有序数组进行优化2. 针对全相等数组进行优化 算法分析时间复杂度空间复杂度 快速排序 快速排序&#xff08;英语&#xff1a;Quicksort&#xff09;&#xff0c;又称分区…

0基础学习VR全景平台篇 第64篇:高级功能-自定义LOGO和密码访问

一、功能说明 VR视频的高级功能目前有两项&#xff0c;分别是自定义LOGO和密码访问。 二、后台编辑界面 1、自定义LOGO&#xff1a;支持JPG、PNG、GIF格式的图片&#xff0c;大小不超过5M&#xff0c;建议高度不超过500px&#xff0c;设置后显示在VR视频的左上角位置。 2、密…

Vue学习随堂记录

计算属性和监听器 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </he…