【分布式学习】服务注册与发现:Eureka、zk、Nacos、Consul对比

文章对比了多个服务发现框架,如Nacos、Eureka、Consul和Zookeeper,涵盖了它们的一致性协议(CAP)、健康检查方式、负载均衡策略以及对SpringCloud和Dubbo等框架的集成情况。Eureka注重可用性(AP),而Zookeeper侧重一致性(CP)。Nacos提供了全面的服务管理和配置功能,Consul则支持多数据中心。
摘要由CSDN通过智能技术生成

服务发现框架对比

NacosEurekaConsulCoreDNSZookeeper
一致性协议CP+APAPCPCP
健康检查TCP/HTTP/MYSQL/Client BeatClient BeatTCP/HTTP/gRPC/CmdKeep Alive
负载均衡策略权重/
metadata/SelectorRibbonFabioRoundRobin
雪崩保护
自动注销实例支持支持不支持不支持支持
访问协议HTTP/DNSHTTPHTTP/DNSDNSTCP
监听支持支持支持支持不支持支持
多数据中心支持支持支持不支持不支持
跨注册中心同步支持不支持支持不支持不支持
SpringCloud集成支持支持支持不支持支持
Dubbo集成支持不支持不支持不支持支持
K8S集成支持不支持支持支持支持

1,Eureka

1)CAP

zk是CP的:集群故障时不提供服务。
eureka是AP的。

CAP:
C(一致性);
A(可用性);
P(分区容错)。

AP:
当网络分区出现后,为了保证可用性,系统B可以返回旧值,保证系统的可用性。
此时不保证C。

CP:
当网络分区出现后,为了保证一致性,就必须拒绝请求,否则无法保证一致性。
此时不保证A。

2)功能

由于服务注册中心的存在,使得微服务之间访问不需要知道其它服务的ip和端口,服务调用时只需要去注册中心的代理地址找到对应服务即可。

1>服务的注册

Eureka Client分为:Service Provider和Service Consumer。
Client向注册中心注册的时候,会提供一系列的元信息,例如主机,端口,健康检查的URL,主页等,服务会不断的发送心跳信息,进行健康检查,如果某个服务在30s外仍然没有接受到注册中心的信息,将会在注册中心,移除掉该列表内容。

启动类注解
@EnableDiscoveryClient

yml文件配置:
server:
  port: 8888  #运行端口号
spring:
  application:
    name: test-service #服务名称
eureka:
  instance:
    appname: ${spring.application.name}
    prefer-ip-address: true
    instance-id: ${spring.application.name}:${LOCAL_IP:127.0.0.1}
    ip-address: ${LOCAL_IP:127.0.0.1}
    # 心跳间隔:5秒
    lease-renewal-interval-in-seconds: 5
    # 没有心跳的淘汰时间:10秒
    lease-expiration-duration-in-seconds: 10
  client:
    # 定时刷新本地缓存时间:5秒
    registryFetchIntervalSeconds: 5
    service-url:
      defaultZone: http://localhost:8761/eureka/ #配置注册中心地址
    register-with-eureka: false

2>服务的发现

EurekaServer

@EnableEurekaServer

//本身也是一个微服务
server:
  port: 8761
  tomcat:
    max-threads: 5
spring:
  security:
    user:
      name: root
      password: 123456  #其它服务访问密码
  application:
    name: center-service
eureka:
  server:
    # 关掉自保护
    enableSelfPreservation: false
    # 主动失效检测,5秒
    evictionIntervalTimerInMs: 5000
    # 禁用readOnlyCacheMap
    useReadOnlyResponseCache: false
  instance:
    # 心跳间隔,5秒
    leaseRenewalIntervalInSeconds: 5
    # 没有心跳的淘汰时间,10秒
    leaseExpirationDurationInSeconds: 10
    hostname: ${EUREKA_INSTANCE_HOSTNAME:${spring.application.name}}
    instance-id: ${EUREKA_INSTANCE_HOSTNAME:${spring.application.name}}:${server.port}
    ip-address: ${spring.cloud.client.ip-address}
    prefer-ip-address: true
  client:
    healthcheck:
      enabled: true
    service-url:
      defaultZone: ${CENTER_SERVICE_CLUSTER:http://${spring.security.user.name}:${spring.security.user.password}@${spring.application.name}:${server.port}/eureka}
    register-with-eureka: ${REGISTER_WITH_EUREKA:true}
    fetch-registry: ${FETCH_REGISTRY:true}

3>服务的熔断

4>服务的负载

5>服务的降级

2,zk

3,Nacos

几乎支持所有的主流的服务发现,配置和管理。

1)功能

服务发现和服务健康监测
动态配置服务
动态 DNS 服务
服务及其元数据管理

4,Consul

分布式的、高可用、横向扩展的注册中心。

1)功能

  1. service discovery
    consul通过DNS或者HTTP接口使服务注册和服务发现变的很容易,一些外部服务,例如saas提供的也可以一样注册。
  2. health checking
    健康检测使consul可以快速的告警在集群中的操作。和服务发现的集成,可以防止服务转发到故障的服务上面。
  3. key/value storage
    一个用来存储动态配置的系统。提供简单的HTTP接口,可以在任何地方操作。
  4. multi-datacenter
    无需复杂的配置,即可支持任意数量的区域。

5,etcd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值