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

这篇具有很好参考价值的文章主要介绍了# 从浅入深 学习 SpringCloud 微服务架构(三)注册中心 Eureka(3)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

段子手168

1、eureka:高可用的引入

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

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

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

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 运行仪表面板

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

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

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

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

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

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

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

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

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

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

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

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

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 输出界面如下:

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

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

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

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

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

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

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

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 输出界面如下:

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

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 输出界面如下:

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

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

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

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

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

如下界面:

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

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(3),springcloud,SpringBoot,#  Eureka,架构,spring cloud,微服务,Eureka,注册中心

上一节链接如下:
# 从浅入深 学习 SpringCloud 微服务架构(三)注册中心 Eureka(2)文章来源地址https://www.toymoban.com/news/detail-859209.html

到了这里,关于# 从浅入深 学习 SpringCloud 微服务架构(三)注册中心 Eureka(3)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C生万物 | 从浅入深理解指针【第一部分】

    1.1 内存 在讲内存和地址之前,我们想有个生活中的案例: 假设有一栋宿舍楼,把你放在楼里,楼上有100个房间,但是房间没有编号,你的一个朋友来找你玩,如果想找到你,就得挨个房子去找,这样效率很低,但是我们如果根据楼层和楼层的房间的情况,给每个房间编上号

    2024年02月08日
    浏览(30)
  • 从浅入深理解序列化和反序列化

    什么是java序列化 序列化:把对象转换为字节序列的过程 反序列:把字节序列恢复为对象的过程 对象序列化机制(object serialization)是java语言内建的一种对象持久化方式,通过对象序列化,可以将对象的状态信息保存为字节数组,并且可以在有需要的时候将这个字节数组通过

    2024年02月06日
    浏览(32)
  • 数据结构 | 单链表SingleList【带你从浅入深真正搞懂链表】

    写在前面 很多粉丝经常私信问我有关 指针、链表 相关的问题,也非常希望我出一篇有关链表的教学,最近刚好也在整理有关单链表相关的知识点,便作了此文,为大家讲解有关单链表方面的各块知识点。 本文考虑到阅读者的水平和能力,内容有深有浅,总体讲解主要是 从

    2024年01月17日
    浏览(32)
  • 从浅入深了解.NET Core MVC 2.x全面教程【第一章】

    章节 第一章:https://www.cnblogs.com/kimiliucn/p/17611047.html 第二章:https://www.cnblogs.com/kimiliucn/p/17616708.html 1.默认配置 使用Kestrel Web Server ASP.NET Core内置——跨平台 IIS集成 UseIIS() UseIISIntergration() Log IConfiguration接口 2.IConfiguration配置信息的来源 appsettings.json User Serets 环境变量 命令行参

    2024年02月13日
    浏览(27)
  • 从浅入深了解.NET Core MVC 2.x全面教程【第二章】

    章节 第一章:https://www.cnblogs.com/kimiliucn/p/17611047.html 第二章:https://www.cnblogs.com/kimiliucn/p/17616708.html 1.诊断中间件 命名空间:Microsoft.AspNetCore.Diagnostics 报告信息并处理异常 2.诊断中间件 UseDeveloperExceptionPage:开发时使用的异常页面,异常信息 UseStatusCodePages:返回状态码:400-

    2024年02月13日
    浏览(42)
  • this 之谜揭底:从浅入深理解 JavaScript 中的 this 关键字(二)

    系列首发于公众号『前端进阶圈』 ,若不想错过更多精彩内容,请“星标”一下,敬请关注公众号最新消息。 调用位置 在理解 this 的绑定过程之前,首先要理解 调用位置 : 调用位置就是函数在代码中被调用的位置(而不是声明的位置) 。 通常来说,寻找调用位置就是寻找

    2024年02月08日
    浏览(35)
  • 由浅入深剖析 Apollo(阿波罗)架构

    目录 一、介绍 二、架构和模块 三、架构剖析 1.最简架构  2. 高可用保障  3.多接口扩展 四、总结 Apollo(阿波罗)是携程框架部研发并开源的一款生产级的配置中心产品,它能够集中管理应用在不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的

    2024年02月13日
    浏览(28)
  • 基于SpringCloud的微服务架构学习笔记(2)注册中心Eureka和负载均衡Ribbon

    1.7.1 远程调用的问题 地址信息获取 : 服务消费者 如何获取 服务提供者 的 地址信息 (不能每次都写死): URL:http://localhost:8081/user/\\\"+order.getUserId() 多选一 :如果有多个服务提供者,消费者如何进行选择 监测健康状态 :消费者如何获知提供者的健康状态 1.7.2 eureka原理 地址

    2024年02月13日
    浏览(27)
  • 【由浅入深学习MySQL】之索引进阶

    本系列为:MySQL数据库详解,为千锋资深教学老师独家创作 致力于为大家讲解清晰MySQL数据库相关知识点,含有丰富的代码案例及讲解。如果感觉对大家有帮助的话,可以【关注】持续追更~ 文末有本文重点总结,技术类问题,也欢迎大家和我们沟通交流! 从今天开始本系列

    2024年02月05日
    浏览(31)
  • 由浅入深了解机器学习和GPT原理

    我不是一个机器学习专家,本来是一名软件工程师,与人工智能的互动很少。我一直渴望深入了解机器学习,但一直没有找到适合自己的入门方式。这就是为什么,当谷歌在2015年11月开源TensorFlow时,我非常兴奋,知道是时候开始学习之旅了。不想过于夸张,但对我来说,这就

    2024年02月09日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包