Spring Cloud注册中心 - Eureka

Eureka架构图

一、Eureka简介

1、Spring Cloud Netflix的核心子模块,包含Eureka Server和Eureka Client:

1)Eureka Server提供服务注册服务,存储所有可用服务节点

2)Eureka Client用于简化与Eureka Server之间的通讯复杂度,同时也是一个内置的、使用轮询(round-robin)负载算法的负载均衡器

2、Eureka依赖配置

1)Eureka Server:

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

#properties:
server:
    port: 8761

eureka:
    instance:
        hostname: localhost
        prefer-ip-address: true
    client:
        register-with-eureka: false
        fetch-registry: false
    service-url:
        defaultZone: http://localhost:8761/eureka/

//启动类:
@EnableEurekaServer

2)Eureka Client:

<!--pom dependency-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

#properties:
server:
    port: 8201

eureka:
    client:
        service-url:
            defaultZone: http://localhost:8761/eureka/

//启动类:
@EnableDiscoveryClient

3)给服务起别名

spring:
    application:
        name: xxx

@EnableDiscoveryClient与@EnableEurekaClient的区别:

@EnableDiscoveryClient:可以集成大部分注册中心

@EnableEurekaClient:只对Eureka使用

3、获取服务

private LoadBalancerClient eurekaClient;

ServiceInstance choose = eurekaClient.choose(“服务名”);

二、核心特性

1、服务注册(register)

Eureka Client在第一次心跳时向Eureka Server注册(注册时是有时间差的)

注册时会提供诸多自身元数据:主机号、端口、健康指标、URL等

2、服务续约(renew)

Eureka Client通过发送心跳进行续约

默认情况下每30秒发送一次心跳

如果90秒内Eureka Server未收到续约,则进行服务剔除

3、服务下线(cancel)

Eureka Client优雅退出时会发送cancel命令

Eureka Server收到cancel命令是会删除该节点

4、获取注册列表信息

Eureka Client会缓存由Server获取的注册表信息

Eureka Client会定期更新注册表信息(默认30秒)

Eureka Client会处理注册表的合并等内容

三、多注册中心比较(理论、特性、应用)

分布式基础 - CAP理论:百度安全验证

1、一致性(强一致性、弱一致性、最终一致性):Consistency

2、可用性:Availability

3、分区容错性:Partition tolerance

常见注册中心:Eureka、Zookeeper等

Eureka主要保证AP特性

Zookeeper是典型的CP特性

四、Eureka慢注册

Eureka注册慢的根本原因在于Eureka的AP特性(即统一扫描、统一放行)

Eureka Client延迟注册,默认30秒

Eureka Server的响应缓存,默认30秒

Eureka Server的缓存刷新,默认30秒

服务注册慢的解决方案:可以修改eureka.instance.leaseRenewalIntervalInSeconds配置加快客户端连接到其他服务的过程

注意:在生产中,最好坚持使用默认值,因为在服务器内部有一些计算对服务续约做出假设

五、Eureka的自我保护

Spring Cloud Eureka 自我保护机制:Spring Cloud Eureka 自我保护机制 - 田园里的蟋蟀 - 博客园

Eureka Server会自动更新续约更新阈值

Eureka Server续约更新频率低于阈值则进入保护模式

自我保护下Eureka Server不会剔除任何注册信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

z.haoui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值