Spring Cloud_Eureka服务注册与发现

news2024/11/26 1:55:38

目录

  • 一、Eureka基础知识
    • 1.什么是服务治理
    • 2.什么是服务注册
    • 3.Eureka两组件
  • 二、单机Eureka构建步骤
    • 1.IDEA生成eurekaServer端服务注册中心
    • 2.服务提供者
    • 3.服务消费者

代码链接
https://github.com/lidonglin-bit/cloud

一、Eureka基础知识

1.什么是服务治理

SpringCloud封装了Netflix公司开发的Eureka模块来实现服务治理。
在传统的RPC远程调用框架中,管理每个服务与服务之间依赖关系比较复杂、所以需要进行服务治理,管理服务与服务之间依赖关联,以实现服务调用,负载均衡、容错等,实现服务发现与注册。

2.什么是服务注册

Eureka采用了CS的设计架构,Eureka Server作为服务注册功能的服务器,它是服务注册中心。
而系统中的其他微服务,使用Eureka的客户端连接到Eureka Server并维持心跳连接。这样系统的维护人员可以通过Eureka Server来监控系统中各个微服务是否正常运行。
在服务注册与发现中,有一个注册中心。当服务器启动的时候,会把当前自己服务器的信息,比如:服务通讯地址等以别名方式注册到注册中心上。
另一方(消费者服务),以该别名的方式去注册中心上获取到实际的服务通讯地址,然后,再实现本地RPC远程调用。
RPC远程调用框架核心设计思想:在于注册中心,因为使用注册中心管理每个服务与服务之间的一个依赖关系(服务治理概念)。
在任何RPC远程框架中,都会有一个注册中心(存放服务地址相关信息(接口地址))。
在这里插入图片描述

3.Eureka两组件

  • Eureka Server提供服务注册服务
    各个微服务节点通过配置启动后,会在Eureka Server中进行注册,这样Eureka Server中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观看到。
  • Eureka Client通过注册中心进行访问
    是一个Java客户端,用于简化Eureka Server的交互,客户端同时也具备一个内置的、使用轮询(round-robin)负载算法的负载均衡器。在应用启动后,将会在Eureka Server发送心跳(默认周期30秒)。如果Eureka Server在多个心跳周期内没有收到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移出(默认90秒)

二、单机Eureka构建步骤

整体结构
在这里插入图片描述

父工程pom文件

  <!-- 统一管理jar包版本 -->
    <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>

    <!-- 子模块继承之后,提供作用:锁定版本+子modlue不用写groupId和version  -->
    <dependencyManagement>
        <dependencies>
            <!--spring boot 2.2.2-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.2.2.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--spring cloud Hoxton.SR1-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--spring cloud alibaba 2.1.0.RELEASE-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.1.0.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>
                    <addResources>true</addResources>
                </configuration>
            </plugin>
        </plugins>
    </build>

1.IDEA生成eurekaServer端服务注册中心

1.建Module:cloud-eureka-server7001
2.改POM

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

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

    </dependencies>
</project>
  • 1.X和2.X的对比说明
1.X版本
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>

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

3.写YML

server:
  port: 7001
spring:
  application:
    name: cloud-eureka-server7001
eureka:
  instance:
    hostname: localhost
  #因为服务端不需要注册,所有为false
  client:
    register-with-eureka: false
    fetchRegistry: false
    service-url:
      defaultZone: http://localhost:7001/eureka

4.主启动

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

}

5.测试

http://localhost:7001/

2.服务提供者

EurekaClient端cloud-provider-payment8001将注册进EurekaServer成为服务提供者provider
1.建Module:cloud-provider-payment8001
2.改POM

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

3.写YML

spring:
  application:
    name: cloud-provider-payment8001
server:
  port: 8001
eureka:
  client:
    register-with-eureka: true
    fetchRegistry: true
    service-url:
      defaultZone: http://localhost:7001/eureka

4.主启动

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

5.测试
先启动EurekaServer

http://localhost:7001/

3.服务消费者

EurekaClient端cloud-consumer-order80将注册进EurekaServer成为服务消费者consumer
1.建Module:cloud-consumer-order80
2.改POM

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

3.写YML

spring:
  application:
    name: cloud-consumer-order80
server:
  port: 80
eureka:
  client:
    register-with-eureka: true
    fetchRegistry: true
    service-url:
      defaultZone: http://localhost:7001/eureka

4.主启动

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

5.测试
1)先要启动EurekaServer,7001服务
2)再要启动服务提供者8001服务和服务消费者80服务
3)eureka服务器
在这里插入图片描述
4)测试查询:http://localhost/consumer/payment/get/31
5)测试添加:postman测试添加
6)测试8001服务和80服务效果一样
在这里插入图片描述

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

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

相关文章

金融风控09

迁移学习 为什么要&#xff1f; 源域样本与目标域样本分布有区别&#xff0c;目标域样本量不够 平时建模用的迁移学习场景 1、新开某个消费分期场景样本量少&#xff0c;需要用其他场景的数据建模 2、业务被迫停滞3个月再重启&#xff0c;大部分训练样本比较老旧&#xff…

含分布式光伏的配电网集群划分和集群电压协调控制(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

激光在大气中传输特性

在光纤通信中&#xff0c;单模光纤在波长1.55μm窗口具有巨大的潜在带宽和极低的损耗&#xff0c;传输数字信号的容量已能达到10Tb&#xff0f;s&#xff0c;每信道光源功率仅需1mW左右&#xff0c;无中间放大的距离超过100km。而且&#xff0c;光纤作为光波导&#xff0c;红外…

PostSharp Ultimate添加模式和线程安全

PostSharp Ultimate添加模式和线程安全 PostSharpUltimate允许开发人员通过将重复的工作从人身上转移到机器上&#xff0c;从而消除样板代码。它包含最常见模式的现成实现&#xff0c;并为您提供了为自己的模式构建自动化的工具。开发人员通常根据设计模式进行思考&#xff0c;…

Go语言基础入门第一章

Go语言基础入门 Go语言的logo 为什么需要一个新的语言最近十年来&#xff0c;C/C在计算机领域得到了很好的发展&#xff0c;并没有新的系统编程语言出现。对开发程度和执行效率在很多情况下并不能兼得。要么是执行效率高&#xff0c;但是低效的开发和编译&#xff0c;如C&…

Redux Toolkit + React + Tailwind CSS 学习心得

Redux Toolkit React Tailwind CSS 学习心得 预览地址&#xff1a;https://goldenaarcher.com/movie-app-home-only&#xff0c;只实现了一个简单的首页功能&#xff0c;API 用的是 the Movie Database&#xff0c;不想用 API 的也可以装一个 faker-js/faker 用来随机生成伪…

学生护眼灯怎么选择?分享适合学生的护眼灯

现阶段的青少年与儿童的近视率非常高&#xff0c;选择一款好的台灯能够保证双眼的健康&#xff0c;首先先看亮度是否合理&#xff0c;不能刺眼&#xff0c;选择三基色灯管&#xff0c;光很柔和&#xff0c;看频闪&#xff0c;好的护眼台灯可以做到无可视频闪&#xff0c;是的视…

移动web适配和Less

移动web适配和Lessrem 适配rem 单位媒体查询flexible.js如何把设计稿的px转换为remLESSLess注释less 运算less 嵌套less 变量less导入less 导出控制当前Less文件导出less 禁止导出小结rem 适配 rem 单位 rem 是一个相对单位&#xff0c;1rem 就是 html 文字的大小 比如 /* …

Java基础10:常用API

Java基础10&#xff1a;常用API一、Math二、System1. currentTimeMillis2. arraycopy三、Runtime四、Object1. toString2. equals3. clone五、Objects六、BigInteger1. 构造方法&#xff08;获取BigInteger&#xff09;2. 常用方法七、BigDecimal1. 构造方法&#xff08;获取Bi…

计算机相关专业混体制的解决方案(考公务员)

文章目录序&#xff1a;编制介绍1、公务员报考要求2、公务员工作待遇3、公务员工作内容4、公务员报考复习序&#xff1a;编制介绍 编制介绍&#xff1a;编制&#xff0c;也就是常说的铁饭碗。 编制的诞生为了控制吃财政饭的人员数量无限膨胀而设置的&#xff0c;所以名额有限受…

密码学基本概念

密码学简介 密码是经过加密过后的口令&#xff0c;是指用特定的变换对数据信息进行加密保护或者安全身份认证的物质和技术&#xff0c;密码学是对安全通信技术的研究&#xff0c;要能够有效的防范潜在攻击&#xff0c;也就是对信息加密解密的过程。 密码基本性质 密码学的发展…

CSS3 选择器 :nth-child 与 :nth-of-type 区别

一、:nth-child 1.1 说明 :nth-child(n) 选择器匹配属于其父元素的第 N 个子元素&#xff0c;不论元素的类型。n 可以是数字、关键词或公式。 注意&#xff1a;如果第 N 个子元素与选择的元素类型不同则样式无效&#xff01; 1.2 示例 <style> div>p:nth-child(2…

1行Python代码识别身份证信息,还能自动告警,YYDS

大家好&#xff0c;这里是程序员晚枫。 录入身份证信息是一件繁琐的工作&#xff0c;如果可以自动识别并且录入系统&#xff0c;那可真是太好了。 今天我们就来学习一下&#xff0c;如何自动识别身份证信息并且录入系统~ 识别身份证信息 识别身份证信息的代码最简单&#x…

【金融量化】CTA策略之VeighNa量化实战笔记(1)

量化投资实战笔记 1 基本概念 1、一手股票&#xff1a;100支股票 2、收盘比开盘上涨的百分比&#xff1a;&#xff08;收盘-开盘&#xff09;/开盘 3、开盘比前日收盘的百分比&#xff1a;&#xff08;开盘-前日收盘&#xff09;/前日收盘 4、从dataframe中取每个月的第一天 …

Hgame-week 1(部分)

标题MISCSing InWhere am I神秘的海报e99p1ant_want_girlfriendWEDClassic Childhood Game改源码直接看jsBecome A MemberUser-Agent:Cookie:Referer:X-Forwarded-For:json请求方式登陆Guess Who I AmCRYPTO神秘的电话注意大小写REVERSEtest your IDAMISC Sing In aGdhbWV7V2…

【GPLT 二阶题目集】L2-027 名人堂与代金券

对于在中国大学MOOC&#xff08;http://www.icourse163.org/ &#xff09;学习“数据结构”课程的学生&#xff0c;想要获得一张合格证书&#xff0c;总评成绩必须达到 60 分及以上&#xff0c;并且有另加福利&#xff1a;总评分在 [G, 100] 区间内者&#xff0c;可以得到 50 元…

二十、Gtk4-GtkMenuButton, accelerators, font, pango and gsettings

本节将重新构造Tfe文本编辑器。 在工具栏上放置了打开、保存和关闭按钮。此外&#xff0c;GtkMenuButton被添加到工具栏中。当点击这个按钮时会显示一个弹出式菜单。在这里&#xff0c;弹出式的含义很广泛&#xff0c;包括下拉式菜单。新建、另存为、偏好和退出项目被放入菜单…

Java IO流之序列化流

序列化流/对象操作输出流 可以把Java中的对象写到本地文件中 序列化流的小细节 使用对象输出流将对象保存到文件时会出现NotSerializableException\color{#FF0000}{NotSerializableException}NotSerializableException 异常 解决方案&#xff1a;需要让JavaBean类实现Serializa…

【树】二叉树递归遍历和创建

二叉树的遍历二叉树的遍历是将二叉树的每个结点访问且访问一次遍历按根来说常用三种设访问根结点记作V&#xff0c;遍历根的左子树记作L&#xff0c;遍历根的右子树记作R&#xff1b;有&#xff1a;先序遍历VLR&#xff0c;中序遍历LVR&#xff0c;后序遍历LRV。这个遍历是递归…

设计模式 - 六大设计原则之ISP(接口隔离原则)

文章目录概述CaseBad ImplBetter Impl概述 接口隔离原则&#xff08;Interface Segregation Principle, ISP&#xff09;,要求尽量将臃肿庞大的接口拆分成更小的和更具体的接口&#xff0c;让接口中只包含相关的方法。 接口隔离是为了高内聚、低耦合。 在实际的开发中&#x…