【SpringCloud微服务实践】服务注册与发现(理论)

注册与发现

在之前的示例中,采取的是硬编码的方式,需要调用的微服务的地址是被我们写死在文件或代码中的。在传统应用程序中,一般都是这么做的,然而这种方式存在不少缺陷:

  • 静态配置:因为是写死的网络地址,当服务提供者的网络地址发生了变化,服务消费者将访问不到原先配置的提供者,必须手动重新配置新地址并重启应用。
  • 无法动态伸缩:在实际生产环境下的微服务中,往往每个微服务是由多个部署实例组成的集群,从而实现服务容灾和负载均衡。

注册中心的概念

注册中心用于解耦服务提供者和消费者,就好比服务关系的"通讯录",记录了服务和地址的映射关系,不同的服务根据通讯录,去调用其它的服务。

微服务架构图

在引入了注册中心(服务发现组件)的微服务架构中,服务发现者、提供者、消费者的关系如下:

  • 各微服务实例启动时,向注册中心注册自己的网络地址、服务名等信息
  • 各微服务实例定时向注册中心发送心跳,让注册中心知道某个实例是健康的,否则注册中心会注销该实例的信息
  • 服务消费者从注册中心获取需要调取的服务提供者的网络地址,使用分配到的地址去调用相应的服务提供者
  • 当实例的网络地址变更时,向注册中心重新注册信息,无需手动修改

从这些关系来看,注册中心应当具备以下功能:

  • 服务注册表:记录注册过的服务的地址,名称等信息
  • 服务注册与发现:支持微服务向自己注册信息,并支持查询注册表获取信息
  • 服务治理:采取一定机制保障实例的可用性
  • 服务负载均衡:对多个服务实例的调用采取一定的算法来保障服务高可用性

常用的注册中心

有很多优秀的开源注册中心可以为我们所用,比如EurekaConsulZookeeperNacos等等。

Eureka

Eereka是Netflix开源的一款RESTful的服务治理组件,主要用于AWS云中定位运行在AWS云上的中间层服务,以实现中间层服务的自动化部署和故障转移。Eureka的优点是易于部署和维护,缺点是可靠性不足,并已停止开源维护。

Consul

Consul是HashCorp开源的一款服务发现与配置管理工具,Consul的优点是支持多数据中心、支持健康检查、支持DNS查询、无需SDK、有WEB界面等,缺点是性能有待提升,服务检查的实时性较低。

Zookeeper

Zookeeper是由Yahoo开源的一款分布式应用程序协调服务,可以用于服务发现、配置管理、分布式锁等。Zookeeper的优点是稳定性高、性能高、可靠性好、多用途,缺点是部署和维护较为复杂,没有雪崩保护,需集成SDK,不支持多数据中心。

Nacos

Nacos是Alibaba开源的的一款用于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos的优点是支持多协议(http/dns/udp)和多集成方案(Dubbo、gRPC、k8s、Spring Cloud等)、支持多数据中心、支持健康检查、支持DNS查询、有WEB界面等,缺点是相对较新,社区相对较小,文档较差(但中文)。


在实际的项目开发中,应根据实际需求来选择对应的注册中心,并不存在哪个就一定最好的说法。

猜你喜欢

转载自blog.csdn.net/m0_51810668/article/details/130530353