注册中心

概念

在微服务架构中,注册中心是核心的基础服务之一。在微服务架构流行之前,注册中心就已经开始出现在分布式架构的系统中。

Dubbo是一个在国内比较流行的分布式框架,被大量的中小型互联网公司所采用,Dubbo是一个非常实用的框架,提供了比较完善的服务治理功能,而服务治理的实现主要依靠的就是注册中心。

注册中心可以说是微服务架构中的”通讯录“
它记录了服务名和服务地址的映射关系。
在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就到这里找到服务的地址,进行调用。

前置概念

服务提供者与消费者

服务提供者:一次业务中,被其它微服务调用的服务。(提供接口给其它微服务)

服务消费者:一次业务中,调用其它微服务的服务。(调用其它微服务提供的接口)

服务调用关系

服务提供者:暴露接口给其它微服务调用

服务消费者:调用其它微服务提供的接口

提供者与消费者角色其实是相对

一个服务可以同时是服务提供者和服务消费者

注册中心作用

注册中心不仅解决服务调用的硬编码问题,做到服务调用解耦(注册中心 类似于于Spring的容器)。
服务提供者地址的获取、服务提供者的选择、服务提供者是否可用等等都是注册中心需要做的事情,简单总结以下几点:

  • 调用解耦
  • 服务注册
  • 服务发现
  • 负载均衡
  • 健康诊断

常见的技术实现

Eureka

Eureka使用的是C/S架构:


image.png
  • Eureka Server:注册中心
    用于记录服务信息,心跳检查
  • Eureka Client:服务消费者和服务提供者
    provider:
    -注册自己的信息到EurekaServer
    -每个30s向EureServer
    consumer:
    -根据服务名称从EureServer拉取服务列表
    -基于服务列表做负载均衡,选择一个微服务发起远程调用

而且,Eureka支持多节点的部署,从而保证高可用。生产环境中,常用的方式是部署两台节点,做成一个P2P的集群。

Nacos

国内公司一般都推崇阿里巴巴的技术,比如注册中心,SpringCloudAlibaba也推出了一个名为Nacos的注册中心。

Nacos是SpringCloudAlibaba的组件,而SpringCloudAlibaba也遵循SpringCloud中定义的服务注册、服务发现规范。因此使用Nacos和使用Eureka对于微服务来说,并没有太大区别。

Nacos与Eureka的区别

Nacos和Eureka整体结构类似,服务注册、服务拉取、心跳等待,但是也存在一些差异:

将区别之前需要先了解一下Nacos的服务实例类型,具体分为两种类型:

  • 临时实例:如果实例宕机超过一定时间,会从服务列表剔除,默认的类型。

  • 非临时实例:如果实例宕机,不会从服务列表剔除,也可以叫永久实例。

健康监测方式:

  • eureka仅支持心跳模式,即服务提供者每个一段时间向注册中心发起访问完成心跳

  • Nacos支持服务端主动检测提供者状态

    • 临时实例采用心跳模式,非临时实例采用主动检测模式
    • 临时实例心跳不正常会被剔除,非临时实例则不会被剔除

服务拉取方面:

  • eureka仅支持服务拉取,并缓存一段时间使用。但缓存这段时间,服务挂了 服务消费者并不知晓,会出现访问失败。
  • Nacos除了支持服务拉取,还支持服务列表变更的消息推送模式,服务列表更新更及时
  • Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容