微服务-常用注册中心

这里主要介绍4种常用的注册中心,分别为Zookeeper、Eureka、Nacos、Consul

Zookeeper

  • 经典的服务注册中心中间件
  • Java体系中,大部分的集群环境都是依赖zookeeper管理服务的各个节点

其组件特点:

  • 数据结构上高度抽象为K-V格式
  • 支持节点短暂存在

Eureka(不常用)

  1. Netflix开发的服务发现框架
  2. 基于REST的服务
  3. 用于服务注册、管理、负载均衡、服务故障转

其组件特点:

  • 包含两个组件:EurekaServer 和 EurekaClient
  • EurekaServer提供注册服务,服务节点的信息可以在界面中直观的看到
  • 允许在注册服务时,自定义实现检查自身状态的是够健康的方法
  • EurekaClient简化与EurekaServer的交互,同时也是一个内置的、使用轮询负载算法的负载均衡器

Consul

  1. Go实现
  2. 用于服务发现和配置的工具
  3. 分布式的,高度可用的,并且具有极高的可伸缩性
  4. 提供了功能齐全的控制面板
  5. 主要特点:服务发现、健康检查、键值存储、安全服务通信、多数据中心、ServiceMesh

其组件特点:

  1. 提供多个数据中心支持,基于Fabio做负载均衡
  2. 八卦池,其中包含给定数据中心的所有节点

Etcd

  1. Go实现
  2. 一致性:Etcd 使用 Raft 一致性算法,确保在集群中的所有节点之间达成一致的数据视图。当数据发生变化时,Etcd 会自动将变更广播给所有节点,从而保证数据的一致性。

  3. 高可用性:Etcd 支持数据复制和自动故障转移,使得在集群中的节点出现故障或网络分区时,系统仍然能够保持可用。Etcd 通过选举新的主节点来处理故障恢复,并在故障节点恢复时自动进行数据同步。

  4. 分布式存储:Etcd 将数据分布存储在多个节点上,以实现数据的高可靠性和可扩展性。数据分片和复制策略可以根据需求进行配置,使得系统能够适应不同规模的应用场景。

  5. 原子操作:Etcd 支持原子性的读写操作,可以保证在多个并发客户端之间的数据一致性。Etcd 提供了一组事务 API,允许客户端在单个原子操作中执行多个读写操作。

  6. 监听和通知:Etcd 具有监听功能,允许客户端注册对指定键的变更事件进行监听。当被监听的键发生变化时,Etcd 会通知监听者,从而实现实时的数据变更通知。

  7. 简单易用:Etcd 提供了简单易用的 RESTful API 和命令行工具,使得开发人员可以方便地与 Etcd 进行交互和操作。同时,Etcd 提供了多种编程语言的客户端库,方便开发人员在不同的应用环境中使用 Etcd。

Nacos(Java主流)

  1. 用于微服务的发现、配置、管理
  2. 更敏捷、容易地构建、交付、管理微服务平台

其组件特点:

    1. 数据模型:服务 - 集群 - 实例
    2. 提供数据逻辑隔离模型,用户账号可以新建多个命名空间,每个命名空间对应一个客户端实例,这个命名空间对应的注册中心物理集群是可以根据规则进行路由的,这样可以让注册中心内部的升级和迁移对用户是无感知的。

总结

Zookeeper基于ZAP协议实现保证每个节点数据同步的问题,中心化思想集群模式,分为领导和跟随者角色。当我们的zk领导因为某种原因宕机的情况下,会自动触发重新选一个新的领导角色,整个选举的过程为了保证数据的一致性问题,在选举的过程中整个zk环境是不可使用的可短暂可能无法使用到zk。意味着微服务采用该模式情况下,可能无法实现通讯(本地有缓存除外)注意:可运行的节点必须满足过半机制,整个zk采用使用。

Eureka采用ap的设计理念架构注册中心,完全去中心化思想,也就是没有主从之分每个节点都是均等,采用相互注册的原理,你中有我我中有你,只要最后有一个eureka节点存在就可以保证整个微服务可以实现通讯。

Nacos中集群保证一致性算法采Ratf协议模式,采用心跳机制实现选举的()。

posted @ 2022-09-14 22:10  GJH-  阅读(173)  评论(0)    收藏  举报