Eureka入门 ; 服务注册中心,服务注册服务发现;SpringCloud eureka

news2024/11/23 10:20:47

一、引入

Spring Cloud封装了netflix公司的Eureka模块来进行实现服务治理。

在传统的RPC远程调用框架中,管理每个服务服务之间依赖关系比较复杂,所以需要服务治理,管理服务之间的依赖。可以实现服务注册、调用、负载均衡、容错等技术。

image-20230505220722812

1. 服务注册与发现

image-20230505220806087

2. Eureka概念

eureka包含两个不同的组件: Eureka Server和Eureka Client

Eureka Server

提供注册服务,各个服务节点可以通过配置启动,会在Eureka Server中注册

Eureka Client

是一个Java客户端,简化和Eureka Server的交互,客户端同时具备内置的、是用轮询的负载算法,来检测服务是否还活着。默认每个心跳周期为30s,若EurekaServer在三个周期内没收到某个服务心跳,则会将服务注册表中这个服务节点移除。

3. Eureka原理

二、eureka使用

1. 单点模式

  1. 建立eureka的ServerMoudle

    image-20230505222625938

  2. 编写pom文件

     <dependencies>
            <!-- 服务注册中心的服务端 eureka-server -->
            <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka-server -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            </dependency>
    
            <!--        <dependency>-->
            <!--            <groupId>com.atguigu.springcloud</groupId>-->
            <!--            <artifactId>cloud-api-commons</artifactId>-->
            <!--            <version>${project.version}</version>-->
            <!--        </dependency>-->
    
            <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web  -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools -->
            <!--        <dependency>-->
            <!--            <groupId>org.springframework.boot</groupId>-->
            <!--            <artifactId>spring-boot-devtools</artifactId>-->
            <!--            <scope>runtime</scope>-->
            <!--            <optional>true</optional>-->
            <!--        </dependency>-->
    
            <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
            <!--        <dependency>-->
            <!--            <groupId>org.projectlombok</groupId>-->
            <!--            <artifactId>lombok</artifactId>-->
            <!--        </dependency>-->
    
            <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-test -->
            <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>
    
  3. 配置yaml文件

    server:
      port: 7001
    eureka:
      instance:
        hostname: localhost
      client:
        serviceUrl:
        	#交互依赖该地址
          defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka
         #证明自己是注册中心服务
        registerWithEureka: false
     	# 不进行注册
    	 fetchRegistry: false
    
  4. 添加注解

    开启eureka服务。

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

    显示以下网页则说明服务启动成功。

    image-20230505222912158

    1. 消费者服务注册

    1. 引入Eureka-client的依赖
      <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>
    
    
    1. 配置yaml文件
    eureka:
      client:
        register-with-eureka: true    #表示不向注册中心注册自己
        fetch-registry: true   #表示自己就是注册中心,职责是维护服务实例,并不需要去检索服务
        service-url:
          #设置与eureka server交互的地址查询服务和注册服务都需要依赖这个地址
          defaultZone: http://localhost:7001/eureka
    
    1. 在主启动类添加注解启动
    @SpringBootApplication
    @EnableEurekaClient
    public class OrderMainApplication {
        public static void main(String[] args) {
      	SpringApplication.run(OrderMainApplication.class);
        }
    }
    

    image-20230505224920437

    支付模块同以上步骤。


2、集群模式

image-20230506221812246

微服务PRC远程服务调用当中,最核心的就是高可用

注册服务中心,让其互相注册。互相守望。

1、 修改host文件,添加域名映射本机

######### springCloud2022.5.6 ##########
127.0.0.1 eureka7001.com
127.0.0.1 eureka7002.com

2、 创建两个服务注册中心微服务,两个服务实现互相调用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xvS02GNX-1685436004724)(C:\Users\JaneOnly\AppData\Roaming\Typora\typora-user-images\image-20221111234237970.png)]

#服务一
server:
  port: 7001
eureka:
  instance:
    hostname: eureka7001.com
  server:
    responseCacheUpdateIntervalMs: 3000
    responseCacheAutoExpirationInSeconds: 180
    evictionIntervalTimerInMs: 3000
  client:
    serviceUrl:
      defaultZone: http://eureka7002.com:7002/eureka
    healthcheck:
      enabled: true
    registerWithEureka: false
    fetchRegistry: false

# 服务二
server:
  port: 7002
eureka:
  instance:
    hostname: eureka7002.com
  server:
    responseCacheUpdateIntervalMs: 3000
    responseCacheAutoExpirationInSeconds: 180
    evictionIntervalTimerInMs: 3000
  client:
    serviceUrl:
      defaultZone: http://eureka7001.com:7001/eureka
    healthcheck:
      enabled: true
    registerWithEureka: false
    fetchRegistry: false

# 注册集群
server:
  port: 8001
spring:
  application:
    name: cloud-pri-service
  datasource:
    url: jdbc:mysql://localhost:3306/springcloud?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
    driver-class-name: com.mysql.jdbc.Driver
    username: root
    password: root
  devtools:
    restart:
      enabled: true

mybatis:
  type-aliases-package: com.atjianyi.entites #配置别名
  mapper-locations: classpath:com/atjianyi/mapper/xml/*.xml #配置mapper映射文件
  configuration:
    map-underscore-to-camel-case: true #配置文件

eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
# 注册测服务名称相同
server:
  port: 8002
eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
     #添加主机名称
   instance:
     instance-id: payment8002
     prefer-ip-address: true #显示IP
  1. 启动服务,就可以访问eureka服务查看注册微服务。

image-20230506225134757

  1. 配置支付微服务集群

    以上步骤我们配置Eureka Server的多个集群服务,那么下面,我们就开始配置支付微服务的集群配置 ;开通8001 和8002服务

image-20230506225541151

image-20230506235208844

支付集群配置不同得端口即可。

  1. 消费者调用支付集群

先开启RestTemplate当中负载均衡模式,后修改调用地址为服务名称即可。无需关心端口和地址;

image-20230506235641172

image-20230506235946881

最后,我们可以完善以下acturator的监控信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g2xvm45J-1685436004727)(C:/Users/janeonly/AppData/Roaming/Typora/typora-user-images/image-20230509201108749.png)]


3. 服务发现

当我们想Eureka服务注册信息后,我们可以通过服务发现,来获取某个微服务的具体信息。

使用

  1. 修改服务提供者的主启动类,开启服务发现

image-20230509202819713

  1. 在controller当中注入Dis

image-20230509222051420

然而eureka已经停止更新了,不用学了 hhhh

4. Eureka自我保护

Eureka在CAP理论当中,选择了AP,也就是在P的前提下保证A(可用性),这种保护机制就是为了防止Client正常运行,但是与EurekaServer网络不通的情况,Server就不会立刻将Client移除。

image-20230509222951879

禁用自我保护模式

Server端在2s收不到心跳,删除client记录

image-20230509223626285

Client端每1s发送心跳

image-20230509223809996


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

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

相关文章

2023九坤投资暑期实习笔试复盘

5.22号笔试&#xff0c;5.24确认自己笔试挂。想想这也是自己第一次做量化私募基金的笔试&#xff0c;在此复盘一下。情况&#xff1a;北邮本硕。但开始准备暑期准备的比较晚&#xff0c;4月初才开始一边刷题一边投简历&#xff0c;所以手撕算法不太强&#xff0c;但运气和灵感好…

ChatGPT除了模型, 各个大厂、中厂、小厂们还在卷什么?

ChatGPT 问世后&#xff0c;各大公司都在「大模型」上下了苦功&#xff0c;模型能力也成为大家最关注的话题。ChatGPT 虽直接定义了基于大模型的生成式对话机器人这个产品类型&#xff0c;其模型的强大也导致大家都忽略了它在产品使用上的问题。 其实不管是底层模型开发的大厂…

印尼市场入门指南:品牌如何在当地获得市场份额?

2023年&#xff0c;印尼成为了全球最大的新兴市场之一。印尼是东南亚最大的经济体&#xff0c;拥有庞大的人口和潜在的消费市场&#xff0c;吸引着越来越多的国际品牌进入。根据预测&#xff0c;印尼的消费支出将在2023年达到1.3万亿美元&#xff0c;成为亚洲增长最快的消费市场…

个人博客搭建详细步骤

1. 安装 jdk 和 tomcat 下面将带大家安装 jdk 和部署 tomcat; 首先在本地下载好 jdk 和 tomcat 安装压缩包在服务器新建一个目录&#xff0c;比如在服务器新建一个目录 soft&#xff0c;上传 jdk, tomcat 到服务器 mkdir soft cd soft rz 选择上传的文件名称 //上传文件新建…

【windows脚本】使用diskpart命令管理未分配磁盘

环境 系统&#xff1a;win10 x64 概述 使用windows脚本管理未分配磁盘&#xff0c;手动操作需要做以下几步&#xff1a; 1、初始化磁盘GPT形式&#xff1b; 2、新建简单卷&#xff0c;设置大小和驱动器号。 3、格式化。 diskpart命令 使用diskpart工具&#xff0c;命令如…

PNAS| 绘制人脑发育曲线:横断面研究低估了人脑变化

文章目录 第一部分&#xff1a;横断面数据低估了与年龄相关的大脑变化。第二部分&#xff1a;横截面规范模型最小限度地帮助个体化预测。第三部分&#xff1a;非年龄相关因素对于预测个体变化的误差起到了贡献作用。参考 **按&#xff1a;**研究人脑毕生发展对于理解常见的精神…

springboot应用程序并发请求达到多少会被拒绝

文章目录 前言内嵌服务器tomcat测试 undertow 前言 前几天刷B站看到了一个问题&#xff0c;感觉挺有意思的&#xff0c;“忽略接口本身性能&#xff0c;springboot应用程序能处理多少请求不被拒绝&#xff1f;”&#xff0c;今天便来探一探这个问题 本文主要重点是侧重于spri…

matplotlib常用函数总结

文章目录 1.IDE里的1.1 显示模式&#xff08;plt.ion()和plt.ioff()&#xff09;1.2 backend说明 2 jupyter里的3 通用的3.1 cmap3.2 subplot()相关3.3 绘制动态图&#xff08;Animation类&#xff09;3.4 matplotlib利用rcParams配置样式参数 4. 与opencv连用可能遭遇的问题1.…

迭代器的设计原则

iterator必须提供5种associated types 1.iterator_category 2.value_type 3.diiference_type 4.pointer 5.reference 对于iterator_category来说&#xff0c;例如双向链表:typedef bidirectional_iterator_tag iterator_category;算法和迭代器的关系&#xff1a; 算法提问&a…

WAV 格式和音频裁剪、转码处理

文章目录 0、参考资料1、WAV 格式了解1.1 WAV 文件头1.2 RIFF Chunk 区块1.3 Format Chunk 区块1.4 Data Chunk 区块 2、音频剪裁 -> 解码 -> 编码2.1 mp32.1.1 裁剪2.1.2 解码2.1.3 编码 2.2 pcm 裁剪 0、参考资料 【音频处理】WAV 文件格式分析 ( 逐个字节解析文件头 …

用友BIP新一代全球司库,重塑企业资金管理新价值

资金是企业有效推进业务运营与发展并赖以生存的血液和养料&#xff0c;资金管理是企业财务管理的核心职能&#xff0c;在《“十四五”中央企业发展规划纲要》中明确央企要将集团资金管理业务规划置于重要战略位置。而国资委1号文发布&#xff0c;则进一步强调司库建设对中央企业…

2核2G3M腾讯云轻量应用服务器CPU性能测评

阿里云轻量应用服务器2核2G3M带宽一年95元&#xff0c;100%CPU性能&#xff0c;3M带宽下载速度384KB/秒&#xff0c;40GB SSD系统盘&#xff0c;月流量200GB&#xff0c;折合每天6.6GB流量&#xff0c;超出月流量包的流量按照0.8元每GB的支付流量费&#xff0c;地域节点可选广州…

vue+springboot前后端分离项目整合部署流程

我们在进行前后端分离开发的时候&#xff0c;一般是将前端项目部署到nginx服务器上&#xff0c;与后端项目分开部署&#xff0c;但是如果是个人开发的小型项目&#xff0c;不需要这么麻烦&#xff0c;直接将前后端项目放到一起部署即可。 本文就来介绍一下前后端项目一起部署的…

第一章 部署DHCP服务

♥️作者介绍&#xff1a;奇妙的大歪 ♥️个人名言&#xff1a;但行前路&#xff0c;不负韶华&#xff01; ♥️个人简介&#xff1a;云计算网络运维专业人员 目录 DHCP&#xff1a;动态主机配置协议 1.DHCP的优点 2.DHCP的分配方式 3.DHCP的工作原理&#xff08;租约过程…

winows搭建远程仓库Github(linux通用)

winows搭建远程仓库Github&#xff08;linux通用&#xff09; 文章目录 winows搭建远程仓库Github&#xff08;linux通用&#xff09;创建远程仓库配置SSH克隆项目多人协同开发代码冲突标签分支 创建远程仓库 以下操作为演示在Github网站上创建远程仓库 1.登陆注册Github 2.创…

Linux知识点 -- 进程概念(二)

Linux知识点 – 进程概念&#xff08;二&#xff09; 文章目录 Linux知识点 -- 进程概念&#xff08;二&#xff09;一、进程优先级1.概念2.进程中的优先级信息3.更改进程优先级4.进程切换 二、环境变量1.概念2.常见的环境变量3.环境变量相关命令4.通过代码获取环境变量5.环境变…

JDK相关知识

查看是否安装了jdk java -version 将输出当前系统上默认 Java 环境的版本信息&#xff0c;其中包括 JDK 的位数&#xff08;64 位或 32 位&#xff09;。如果输出中包括 “64-Bit” 或 “x64” &#xff0c;则表示你的 JDK 是 64 位的&#xff1b;否则&#xff0c;它就是 32 位…

PackML 学习笔记

PackML 的官网 上如此描述PackML--- PackML是由OMAC开发并由ISA采用的自动化标准TR88.00.02&#xff0c;可以更轻松地传输和检索一致的机器数据。PackML的主要目标是鼓励整个工厂车间的通用“外观和感觉”&#xff0c;并支持和鼓励行业创新。 优点 这里的重点是通用“外观和感…

MySQL树状结构表查询通解

文章目录 前言一、数据准备二、代码实现三、案例使用1. 建立数据表实体类2. mapper文件3. 使用 四、总结 前言 ​ 最近做了一个中医药方面的项目&#xff0c;该项目分为游戏端和服务端。笔者负责的是服务端的开发。在服务端的业务中包含两部分&#xff1a;系统信息管理模块、游…

这是我见过对redis最直白的讲解,看完我哭了......

我是Redis 你好&#xff0c;我是Redis&#xff0c;一个叫Antirez的男人把我带到了这个世界上。 说起我的诞生&#xff0c;跟关系数据库MySQL还挺有渊源的。 在我还没来到这个世界上的时候&#xff0c;MySQL过的很辛苦&#xff0c;互联网发展的越来越快&#xff0c;它容纳的数…