MST

星途 面试题库

面试题:微服务架构中构建服务发现机制的常用技术有哪些及各自特点

在构建微服务架构时,服务发现机制至关重要。请列举至少两种常用的服务发现技术,并阐述它们各自的工作原理和特点。
45.9万 热度难度
后端开发微服务架构

知识考点

AI 面试

面试题答案

一键面试

1. Eureka

  • 工作原理
    • Eureka采用客户端 - 服务端架构。Eureka Server作为服务注册中心,各个微服务实例启动时,会向Eureka Server注册自己的信息(包括服务名、IP地址、端口等)。同时,微服务实例会定期向Eureka Server发送心跳包,以表明自己的存活状态。
    • 其他微服务需要调用某个服务时,会从Eureka Server获取服务实例列表,然后根据负载均衡策略选择一个实例进行调用。
  • 特点
    • 高可用:Eureka Server支持集群部署,各个节点之间相互复制数据,保证高可用性。
    • 自我保护机制:当Eureka Server在一定时间内没有接收到某个微服务实例的心跳时,默认情况下会将该实例从服务列表中剔除。但在网络分区等异常情况下,为了防止误删服务实例,Eureka Server会开启自我保护机制,不再剔除长时间没有心跳的实例。
    • 客户端缓存:Eureka客户端会缓存从Eureka Server获取的服务列表信息,即使Eureka Server出现短暂故障,客户端依然可以根据缓存的信息进行服务调用。

2. Consul

  • 工作原理
    • Consul基于Go语言开发,它包含一个Server模式和多个Client模式的节点。服务提供者启动时,会向Consul Server注册自己的服务信息。Consul使用Raft算法保证Server节点之间数据的一致性。
    • 服务消费者从Consul Server获取服务实例列表,同时Consul提供健康检查功能,它会定期检查服务实例的健康状态,如通过HTTP、TCP等方式进行探测。如果某个服务实例不健康,Consul会将其从服务列表中移除。
  • 特点
    • 多数据中心支持:Consul原生支持多数据中心,能够在不同数据中心之间进行服务注册与发现,适合大规模分布式系统。
    • 健康检查丰富:提供多种健康检查方式,包括HTTP、TCP、脚本等,能更灵活地检测服务实例的健康状况。
    • KV存储:内置键值对(KV)存储,可用于存储一些配置信息等,方便微服务之间共享一些简单的数据。

3. ZooKeeper

  • 工作原理
    • ZooKeeper采用树形结构来存储数据。服务提供者在启动时,会在ZooKeeper的指定节点下创建一个临时节点,节点内容包含自身的服务信息。
    • 服务消费者通过监听ZooKeeper上的对应服务节点,当有新的服务实例注册或已有实例下线时,ZooKeeper会通知服务消费者,消费者重新获取最新的服务实例列表。
  • 特点
    • 强一致性:ZooKeeper使用ZAB协议保证数据的强一致性,即所有客户端看到的服务实例列表是一致的。
    • 可靠性:ZooKeeper集群通过多数节点投票机制保证数据的可靠性,部分节点故障不会影响整体服务。但是,ZooKeeper不适合频繁的读写操作,因为写操作需要通过集群内的多数节点确认,性能相对较低。