• spring cloud-注册中心(Eureka)


    一、服务注册中心组件(*)

    定义:服务注册中心就是在整个微服务架构单独抽取一个服务,该服务不做项目中任何业务功能,仅用来在微服务中记录微服务、对微服务进行健康状态检查,及服务元数据信息存储
    
    常用的注册中心:eureka(netflix)、zookeeper(java)、consul(go)、nacos(java阿里巴巴)
    
    eureka:是netflix开发的服务发现框架。包含两个组件, eureka server 和 eureka client
    
    • 1
    • 2
    • 3
    • 4
    • 5

    Eureka

    eureka server
    • 1.添加依赖
    
    <dependency>
    	<groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-starter-netflix-eureka-serverartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 2.在启动类上添加注解@EnableEurekaServer
    @SpringBootApplication
    @EnableEurekaServer
    public class EurekaServerApplication {
    SpringApplication.run(EurekaServerApplication.class, args);
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 3.配置文件
    # 服务名称
    spring.application.name=EUREKA-SERVER
    # eureka server端口号,默认8761
    server.port=8761
    # eureka server服务注册中心地址
    eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 未指定服务名称时,启动服务后,在eureka server管理界面中出现UNKNOW的一个未知应用
      在这里插入图片描述

    在微服务架构中服务名称代表服务唯一标识,服务名称必须唯一,通过配置spring.application.name=EUREKA-SERVER指定,推荐服务名称大写(默认大写),服务名不能出现下划线_

    • eureka server启动过程中报错在这里插入图片描述

    eureka含有两个组件eureka server、eureka client,当项目中引入eureka server组件依赖时,这个组件会同时将eureka client引入到项目中,因此启动时将自己作为一个服务注册中心启动,同时也会将自己作为服务客户端进行注册,默认启动时立即注册,注册时的服务还没有准备完成,因此会出现当前错误

    • 关闭eureka server 自己注册自己
    # 关闭eureka client立即注册
    eureka.client.fetch-registry=false
    # 让当前应用仅仅是服务注册中心,不向eureka server注册
    eureka.client.register-with-eureka=false
    
    • 1
    • 2
    • 3
    • 4
    eureka client

    eureka client 就是日后基于业务拆分出来的一个个微服务

    • 1.引入依赖
    
    <dependency>
    	<groupId>org.springframework.cloudgroupId>
    	<artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 2.在启动类上加注解@EnableEurekaClient
    @SpringBootApplication
    @EnableEurekaClient
    public class EurekaClientApplication {
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 3.配置文件
    server.port=8989
    # 服务名称
    spring.application.name=EUREKA-CLIENT
    # eureka server注册中心地址
    eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    eureka 自我保护机制

    经测试,跟spring cloud版本有关,高版本的会立即清除(如Hoxton.SR8)

    1.自我保护机制触发现象

    当eureka client宕机后,eureka server管理界面出现如下现象,即触发了自我保护机制
    在这里插入图片描述

    2.自我保护机制(Self Preservation Mode)

    - 官网地址:https://github.com/Netflix/eureka/wiki/Server-Self-Preservation-Mode
    - 自我保护机制默认是开启的。这样做是为了确保灾难性的网络事件不会清除eureka注册表数据,并将其传播到下游的所有客户端
    - 自我保护机制,将客户端在服务注册中心清除的条件
    	1.心跳次数高于预期阈值
    	2.关闭自我保护机制
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3.eureka server关闭自我保护机制(了解即可)

    1.eureka server端添加配置
    # 关闭自我保护机制,默认开启(建议开启)
    eureka.server.enable-self-preservation=false
    # 超时3S自动清除
    eureka.server.eviction-interval-timer-in-ms=3000
    
    2.eureka client端添加配置
    # 用来修改eureka server默认接收心跳的最大时间,默认是90S
    eureka.instance.lease-expiration-duration-in-seconds=10
    # 指定客户端多久向eureka server发送一次心跳,默认是30S
    eureka.instance.lease-renewal-interval-in-seconds=5
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    eureka server 集群搭建
    搭建伪集群,有三台eureka server,分别为
    localhost:8761/eureka/
    localhost:8762/eureka/
    localhost:8763/eureka/
    
    在端口为8761的应用配置eureka server集群地址:
    eureka.client.service-url.defaultZone=http://localhost:8762/eureka/,http://localhost:8763/eureka/
    在端口为8762的应用配置eureka server集群地址:
    eureka.client.service-url.defaultZone=http://localhost:8761/eureka/,http://localhost:8763/eureka/
    在端口为8763的应用配置eureka server集群地址:
    eureka.client.service-url.defaultZone=http://localhost:8761/eureka/,http://localhost:8762/eureka/
    
    demo:用同一个服务多次启动,分别指定不同的端口号(-Dserver.port=8761、-Dserver.port=8762、-Dserver.port=8763)
    
    在eureka client端添加eureka server集群地址
    # eureka server集群注册中心地址
    eureka.client.service-url.defaultZone=http://localhost:8761/eureka/,http://localhost:8762/eureka/,http://localhost:8763/eureka/
    
    # eureka client端集群搭建
    	- 指定不同的端口分别启动
    	- spring.application.name指定的服务名称必须是同一个
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • localhost:8761
      在这里插入图片描述

    • localhost:8762
      在这里插入图片描述

    • localhost:8763
      在这里插入图片描述

    eureka 总结
    1.作用:在微服务架构中,充当服务注册中心
    2.两个组件:eureka server、eureka client
    3.eureka组件1.x(稳定),2.x版本停止更新
    4.不推荐使用eureka作为服务注册中心
    	4.1 最新版本已停止更新
    	4.2 每次必须通过手动写代码形式开发服务注册中心
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    Python可变类型的坑,不要再踩了
    <el-form>标签与<el-col>之间的套用导致点击无效的问题
    Attentional Feature Fusion 注意力特征融合
    Mysql语法三:表的约束和表与表之间的关系以及高级查询
    数据挖掘入门项目二手交易车价格预测之数据分析
    云原生|kubernetes|kubernetes集群使用私有镜像仓库拉取镜像(harbor或者官方的registry私有镜像仓库)
    CISAW信息安全保障人员--风险管理
    深入剖析Tomcat(八) 载入器与打破双亲委派机制的自定义类加载器
    编译原理笔记01
    算法提高 第一课——快速幂
  • 原文地址:https://blog.csdn.net/weixin_41858020/article/details/134406879