# 从浅入深 学习 SpringCloud 微服务架构(三)注册中心 Eureka(3)

从浅入深 学习 SpringCloud 微服务架构(三)注册中心 Eureka(3)

段子手168

1、eureka:高可用的引入

Eureka Server 可以通过运行多个实例并相互注册的方式实现高可用部署,
Eureka Server 实例会彼此增量地同步信息,从而确保所有节点数据一致。
事实上,节点之间相互注册是 Eureka Server 的默认行为。

2、eurekaServer 高可用:server 间的相互注册

在这里插入图片描述

1)修改 eureka_server 子工程(子模块)中的 application.yml 文件

模拟两个 EurekaServer, 一个端口 9000,一个端口 8000,两个需要相互注册。

## C:\java-test\idea2019\spring_cloud_demo\eureka_service\src\main\resources\application.yml

# 模拟两个 EurekaServer, 一个端口 9000,一个端口 8000,两个需要相互注册。

server:
  port: 9000  # 启动端口 命令行注入。

spring:
  application:
    name: service-eureka  #spring应用名, # 注意 FeignClient 不支持名字带下划线

eureka: # 配置 eureka_server
#  instance:
#    hostname: localhost
  client:
#    register-with-eureka: false  # 是否将自己注册到注册中心,不配置时,默认 true
#    fetch-registry: false  # 是否从 Eureka 中获取注册信息,不配置时,默认 true
    service-url: # 配置暴露给 EurekaClient 的请求地址
#      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
      defaultZone: http://127.0.0.1:8000/eureka/

## C:\java-test\idea2019\spring_cloud_demo\eureka_service\src\main\resources\application.yml

# 模拟两个 EurekaServer, 一个端口 9000,一个端口 8000,两个需要相互注册。

server:
  port: 8000  # 启动端口 命令行注入。

spring:
  application:
    name: service-eureka  #spring应用名, # 注意 FeignClient 不支持名字带下划线

eureka: # 配置 eureka_server
#  instance:
#    hostname: localhost
  client:
#    register-with-eureka: false  # 是否将自己注册到注册中心,不配置时,默认 true
#    fetch-registry: false  # 是否从 Eureka 中获取注册信息,不配置时,默认 true
    service-url: # 配置暴露给 EurekaClient 的请求地址
#      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
      defaultZone: http://127.0.0.1:9000/eureka/

2)打开 idea 的 【Run Dashboard】 运行仪表面板。

复制一个 EurekaServerApplication.java 启动类,命名为:EurekaServerApplication(1)

注意:
如果在 idea 中找不到 【Run Dashboard】 运行仪表面板,可以看如下文章:

# IDEA2019 如何打开 Run Dashboard 运行仪表面板

在这里插入图片描述

3)运行 2个 启动类(urekaServerApplication,urekaServerApplication(1) ),进行测试

浏览器地址栏输入:http://localhost:9000 输出界面如下:

在这里插入图片描述

浏览器地址栏输入:http://localhost:8000 输出界面如下:

在这里插入图片描述

3、eurekaServer 高可用:服务注册到多个 eurekaserver

1)运行 order_service, product_service 子工程的 启动类,

浏览器地址栏输入:http://localhost:9000 输出界面如下:

在这里插入图片描述

浏览器地址栏输入:http://localhost:8000 输出界面如下:

在这里插入图片描述

2)修改 product_service 子工程的 application.yml 文件,

添加 注册到多个 eurekaserver 服务 配置。


## C:\java-test\idea2019\spring_cloud_demo\product_service\src\main\resources\application.yml

server:
  port: 9001  # 启动端口 命令行注入。
#  port: ${port:56010}  # 启动端口设置为动态传参,如果未传参数,默认端口为 56010
#  servlet:
#    context-path: /application1

spring:
  application:
    name: service-product  #spring应用名, # 注意 FeignClient 不支持名字带下划线
#  main:
#    allow-bean-definition-overriding: true # SpringBoot2.1 需要设定。
  datasource:
    driver-class-name: com.mysql.jdbc.Driver  # mysql 驱动
#    url: jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=utf8
    url: jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: 12311
  jpa:
    database: MySQL
    show-sql: true
    open-in-view: true

eureka:  # 配置 Eureka
  client:
    service-url:
      defaultZone: http://localhost:9000/eureka/,http://localhost:8000/eureka/  # 多个 eurekaserver 用 , 隔开。
  instance:
    prefer-ip-address: true  # 使用 ip 地址注册


3)修改 order_service 子工程的 application.yml 文件,

添加 注册到多个 eurekaserver 服务 配置。


## C:\java-test\idea2019\spring_cloud_demo\order_service\src\main\resources\application.yml

server:
  port: 9002  # 启动端口 命令行注入。
#  port: ${port:9002}  # 启动端口设置为动态传参,如果未传参数,默认端口为 9002
#  servlet:
#    context-path: /application1

spring:
  application:
    name: service-order  #spring应用名, # 注意 FeignClient 不支持名字带下划线
#  main:
#    allow-bean-definition-overriding: true # SpringBoot2.1 需要设定。
  datasource:
    driver-class-name: com.mysql.jdbc.Driver  # mysql 驱动
#    url: jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=utf8
    url: jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: 12311
  jpa:
    database: MySQL
    show-sql: true
    open-in-view: true

eureka:  # 配置 Eureka
  client:
    service-url:
      defaultZone: http://localhost:9000/eureka/,http://localhost:8000/eureka/  # 多个 eurekaserver 用 , 隔开。
  instance:
    prefer-ip-address: true  # 使用 ip 地址注册


4)再次运行 order_service, product_service, EurekaServerApplication,EurekaServerApplication(1)

可以宕机 EurekaServerApplication,测试 其他运行是否正常,有无影响。

浏览器地址栏输入:http://localhost:9000 输出界面如下:

在这里插入图片描述

浏览器地址栏输入:http://localhost:8000 输出界面如下:

在这里插入图片描述

浏览器地址栏输入:http://localhost:9001/product/1 输出界面如下:

在这里插入图片描述

浏览器地址栏输入:http://localhost:9002/order/buy/1 输出界面如下:

在这里插入图片描述

4、eurekaServer 高可用:显示 IP 与服务续约时间设置

1)修改 eureka_service 子工程的 application.yml 文件,

取消配置高可用 EurekaServer 服务。


## C:\java-test\idea2019\spring_cloud_demo\eureka_service\src\main\resources\application.yml

# 模拟两个 EurekaServer, 一个端口 9000,一个端口 8000,两个需要相互注册。

server:
  port: 9000  # 启动端口 命令行注入。

spring:
  application:
    name: service-eureka  #spring应用名, # 注意 FeignClient 不支持名字带下划线

eureka: # 配置 eureka_server
#  instance:
#    hostname: localhost
  client:
    register-with-eureka: false  # 是否将自己注册到注册中心,不配置时,默认 true。 配置高可用时,须注销此行,或配置为 true
    fetch-registry: false  # 是否从 Eureka 中获取注册信息,不配置时,默认 true。 配置高可用时,须注销此行,或配置为 true
    service-url: # 配置暴露给 EurekaClient 的请求地址
#      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
      defaultZone: http://127.0.0.1:9000/eureka/  # 配置高可用时,须配置为另一个 EurekaServerApplication 的端口号,如:8000

2)修改 product_service 子工程的 application.yml 文件,

添加 在服务提供者通过 eureka.instance.instance-id 配置,在控制台显示服务 IP 地址。


## C:\java-test\idea2019\spring_cloud_demo\product_service\src\main\resources\application.yml

server:
  port: 9001  # 启动端口 命令行注入。
#  port: ${port:56010}  # 启动端口设置为动态传参,如果未传参数,默认端口为 56010
#  servlet:
#    context-path: /application1

spring:
  application:
    name: service-product  #spring应用名, # 注意 FeignClient 不支持名字带下划线
#  main:
#    allow-bean-definition-overriding: true # SpringBoot2.1 需要设定。
  datasource:
    driver-class-name: com.mysql.jdbc.Driver  # mysql 驱动
#    url: jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=utf8
    url: jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: 12311
  jpa:
    database: MySQL
    show-sql: true
    open-in-view: true

eureka:  # 配置 Eureka
  client:
    service-url:
      defaultZone: http://localhost:9000/eureka/
#      defaultZone: http://localhost:9000/eureka/,http://localhost:8000/eureka/  # 高可用,注册多个 eurekaserver 用 , 隔开。
  instance:
    prefer-ip-address: true  # 使用 ip 地址注册
    instance-id: ${spring.cloud.client.ip-address}:${server.port}  # 向注册中心注册服务的id(IP 地址)。

3)再次运行 product_service, EurekaServerApplication(1) 测试

浏览器地址栏输入:http://localhost:9000 输出界面如下:

在这里插入图片描述

4)修改 product_service 子工程的 application.yml 文件,

添加 心跳间隔和续约时间 配置。


## C:\java-test\idea2019\spring_cloud_demo\product_service\src\main\resources\application.yml

server:
  port: 9001  # 启动端口 命令行注入。
#  port: ${port:56010}  # 启动端口设置为动态传参,如果未传参数,默认端口为 56010
#  servlet:
#    context-path: /application1

spring:
  application:
    name: service-product  #spring应用名, # 注意 FeignClient 不支持名字带下划线
#  main:
#    allow-bean-definition-overriding: true # SpringBoot2.1 需要设定。
  datasource:
    driver-class-name: com.mysql.jdbc.Driver  # mysql 驱动
#    url: jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=utf8
    url: jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: 12311
  jpa:
    database: MySQL
    show-sql: true
    open-in-view: true

eureka:  # 配置 Eureka
  client:
    service-url:
      defaultZone: http://localhost:9000/eureka/
#      defaultZone: http://localhost:9000/eureka/,http://localhost:8000/eureka/  # 高可用,注册多个 eurekaserver 用 , 隔开。
  instance:
    prefer-ip-address: true  # 使用 ip 地址注册
    instance-id: ${spring.cloud.client.ip-address}:${server.port}  # 向注册中心注册服务的id(IP 地址)。
    lease-renewal-interval-in-seconds: 10  # 设置向注册中心每10秒发送一次心跳,告诉注册中心此服务没有岩机,此参数默认是30秒。
    lease-expiration-duration-in-seconds: 20  # 设置每20秒如果注册中心没收到此服务的心跳,就认为此服务岩机了,此参数默认是90秒。

3)再次运行 product_service, EurekaServerApplication(1) 测试

浏览器地址栏输入:http://localhost:9000 输出界面如下:

在这里插入图片描述

如果把 product_service 子工程的 启动类停掉,再次刷新网页查看,
只有几十秒,Eureka 上就没有了 product_service 服务。

在这里插入图片描述

5、eurekaServer高可用:自我保护机制

1)EurekaServer 默认是开启 自我保护机制的,这样会在服务的控制台界面显示红色字体,

如下界面:

在这里插入图片描述

2)修改 eureka_service 子工程的 application.yml 文件,

配置 关闭自我保护机制功能 和 剔除服务间隔。


## C:\java-test\idea2019\spring_cloud_demo\eureka_service\src\main\resources\application.yml

# 模拟两个 EurekaServer, 一个端口 9000,一个端口 8000,两个需要相互注册。

server:
  port: 9000  # 启动端口 命令行注入。

spring:
  application:
    name: service-eureka  #spring应用名, # 注意 FeignClient 不支持名字带下划线

eureka: # 配置 eureka_server
#  instance:
#    hostname: localhost
  client:
    register-with-eureka: false  # 是否将自己注册到注册中心,不配置时,默认 true。 配置高可用时,须注销此行,或配置为 true
    fetch-registry: false  # 是否从 Eureka 中获取注册信息,不配置时,默认 true。 配置高可用时,须注销此行,或配置为 true
    service-url: # 配置暴露给 EurekaClient 的请求地址
#      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
      defaultZone: http://127.0.0.1:9000/eureka/  # 配置高可用时,须配置为另一个 EurekaServerApplication 的端口号,如:8000
  server:
    enable-self-preservation: false  # 关闭自我保护机制
    eviction-interval-timer-in-ms: 4000  # 设置剔除服务间隔时间为 4000 毫秒(4秒)。此参数默认为 true。

3)浏览器地址栏输入:http://localhost:9000 输出界面如下:

在这里插入图片描述

上一节链接如下:
# 从浅入深 学习 SpringCloud 微服务架构(三)注册中心 Eureka(2)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

文件批量高效重命名,支持重命名后不满意恢复原名,高效管理文件

我们每天都会与大量的文件打交道,无论是工作文件、学习资料,还是生活照片、视频,都需要我们进行高效的文件管理。然而,传统的文件重命名方式往往效率低下,无法满足我们的需求。今天,我们为您带来了一款批量…

MATLAB设置变量

您可以通过简单的方式分配变量。例如, 示例 x 3 %定义x并用值初始化它 MATLAB将执行上述语句并返回以下结果- x 3 它创建一个名为x的1乘1矩阵,并将值3存储在其元素中。再举一个实例, 示例 x sqrt(16) %定义x并用表达式初始化它 MATLAB将…

cv2技术原理-图像旋转原理及手动实现

cv2技术原理-图像旋转原理及手动实现 1、图像旋转opencv实现2、cv2.getRotationMatrix2D函数解释3、数学原理推导旋转矩阵M4、手动计算旋转矩阵M5、旋转矩阵M的使用6、使用旋转矩阵M手动实现旋转功能 1、图像旋转opencv实现 图像旋转在对数据集数据增强(主要是随机…

WordPress自动记录404死链方法+实用代码

WordPress自动记录404死链方法实用代码 WordPress自动将404死链记录到TXT文档中 在网站根目录新建文件: 404.txt,并设置权限为:755 将以下代码粘贴到你的 WordPress 主题中的 404.php $error_url https://.$_SERVER[HTTP_HOST].$_SERVER[…

python爬虫小案例——汽车之家

本篇文章是使用bs4中的BeautifulSoup和requests解析网页和获取数据👑🌟 文章目录 🌟前言一、🍉bs4中的BeautifulSoup二、🍉bs4的语法三、🍉内容实践1. 确定想要爬取的内容2. 分析网页3. 获取数据分析 &…

【微服务】spring读取配置文件多种方式深入详解

目录 一、前言 二、java配置文件介绍 2.1 java配置文件产生原因 2.2 项目使用配置文件好处 2.3 springboot项目配置文件的必要性 2.4 微服务架构下配置文件使用场景 三、java读取配置文件常用方法 3.1 使用Properties类读取配置文件 3.1.1 使用getResourceAsStream读取…

【C语言】操作符相关编程题

目录 题目一: 题目二: 题目三: 题目三: 题目四: 题目五: 题目六: 题目七: 题目八: 题目一: 题目:不创建临时变量,交换两个数…

代码托管基础操作

在待上传代码文件夹中右键,打开Git Bash Here依次输入以下命令: git init(在本地初始化一个代码仓库,具体表现为会在你的文件夹里出现一个隐藏的.git文件夹) git add .(先把代码放到本地的一个缓冲区)添加当前目录下的…

Windows使用freeSSHd搭建sftp服务器

一、安装 1、运行freeSSHd.exe(最好以管理员方式运行) 2、选择安装位置 3、选择全部安装 4、是否创建开始启动栏快捷入口 5、是否创建桌面快捷方式 6、安装 7、安装完成,点击close 8、安装私钥 9、是否要安装为服务 10、全部安装完成 二、配…

查找输入整数的二进制中1的个数

方法1&#xff1a;简单做法&#xff0c;直接用库函数 #include<bitset> #include<iostream> using namespace std; int main(){int n;while(cin>>n){bitset<32> b(n);cout<<b.count()<<endl;} }补充bitset //注意&#xff1a;直接输出 b…

EasyExcel导出图片并实现动态表头、自动合并单元格、给指定单元格设置值

概要描述 最近工作中涉及到使用Excel导出图片的需求,下面对使用Excel导出图片遇到的一些问题进行记录说明。需求通过 EasyExcel中提供的转换器(Converter)和拦截器(Handler)实现。EasyExcel 官网地址 实现效果 实现过程 EasyExcel 支持导出 ByteArray、File、String、In…

软件缺陷和测试用例

软件缺陷 软件缺陷概念 Bug有时也被泛指因软件产品内部的缺陷引起的软件产品最终运行时和预期属性的偏离。 产生原因 1.需求不明确2.软件结构复杂3.编码问题4.项目期限短5.使用新技术 类型 错误、遗漏、额外实现 准则 Correct&#xff08;准确&#xff09;&#xff1a;…

一堆喷儿香喷儿香的工具网站-已经收藏-搜嗖工具箱!

文心一言 https://yiyan.baidu.com/ ​ ChatGpt横空出世的横空出世好像一把钥匙&#xff0c;开启了大模型时代&#xff0c;国内也有不错的产品&#xff0c;比如百度的文心一言&#xff0c;从3.5到4.0看得见的成长&#xff0c;现在的文心一言是我们工作中不可缺少的好帮手&am…

基于单片机的智能病床呼叫系统设计与仿真

摘 要 本文设计的病床呼叫系统采用单片机作为控制器。该系统具有远程控制、病人的身体情况检测、报警呼叫、显示和执行器运动的功能。远程控制由红外线传感器和矩阵键盘组成&#xff0c;检测电路由温湿度传感器DH22、心率传感器Pulse Sensor、压力传感器MPX4115组成&#x…

uniapp 如何区分目前运行环境(app、web、mp-weixin)

platform 区分 iOS、Android uniplatform 区分 app、web、mp-weixin ....

JavaEE 初阶篇-深入了解 File 文件操作(实现文件搜索、非空文件夹删除)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 File 文件概述 2.0 创建 File 类对象的方法 2.1 判断文件类型、获取文件信息的方法 2.2 创建文件、删除文件的方法 2.3 遍历文件夹的方法 3.0 文件搜索与删除 3.1…

学习笔记<2024.4.15-2024.4.21>:Attention Is All You Need

Transformer中Self-Attention以及Multi-Head Attention详解 (https://www.bilibili.com/video/BV15v411W78M/?spm_id_from333.337.search-card.all.click&vd_sourcef32decb03075b4a1833fe5c47c11ba94)

在线拍卖系统,基于SpringBoot+Vue+MySql开发的在线拍卖系统设计和实现

目录 一. 系统介绍 二. 功能模块 2.1. 管理员功能模块 2.2. 用户功能模块 2.3. 前台首页功能模块 2.4. 部分代码实现 一. 系统介绍 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系…

Axure琐碎细节

文章目录 琐碎细节注释预览编写原型图的时候可以把颜色改为灰色标尺竖直文字左对齐Axure中的文字怎么添加元件层级问题如何找到各种各样的形状&#xff0c;比如三角形了 五角星了 十字架了给按钮设置简单的交互动作通过锁来等比例缩放 琐碎细节 注释 有时候我们需要给我们的元…

windows驱动开发-WDM框架(一)

在前面的文章中解释过&#xff0c;NT5.0之后windows确定了新的架构Windows Driver Model (WDM)&#xff0c;在Vista之后又推出了Windows Driver Framework(WDF)&#xff0c;这两个都属于驱动程序框架&#xff0c;那么它们的之间的关系是怎样的&#xff1f; WDF是对WDM进行的封…