我对注册中心的理解

作者: 小白先生哦

对注册中心的理解

在单体应用中,所有功能都在一个应用中,但是随着业务增长,系统功能逐渐变得庞大,单体应用在开发、部署等方面效率逐渐低下,开发协同越来越困难,等等问题。因此,对系统进行拆分变的必要。

但是在微服务架构中,越来越多的服务被拆分出来,整个系统之间的调用关系也会越来越复杂,各个服务管理也会变的越来越困难。那么对这种数量极多、依赖关系复杂的系统如何进行管理成为了一个问题。

这时需要一个注册中心进行服务治理。


注册中心是什么

首先,在微服务架构中,注册中心是什么?

一张图进行概括,它就是一张通讯录:

它将各个服务的信息进行存储,然后提供给需要者,同时维护各种过期失效的内容。


注册中心原理

在微服务中,有三个非常重要的角色:注册中心、服务提供者、服务消费者。对应关系如下:

对应的过程如下:

  • 各个服务启动信息注册到注册中心,注册中心保存注册数据。
  • 各个服务注册成功后,上传服务健康信息到注册中心进行保活。
  • 各个服务消费者启动时向注册中心订阅服务信息,获取服务地址列表,注册中心在服务列表发生变化时同步给服务订阅者。
  • 各个服务消费者调用服务提供者。

注册中心功能

根据上图中的信息,大致可以列出注册中心要提供的功能如下:

  • 服务注册表:注册中心的核心功能,记录各个服务提供者的信息,比如服务名、IP、端口等。维护服务订阅者信息。
  • 服务注册、注销接口:供服务提供方进行服务注册和服务注销。
  • 健康检查和服务摘除:提供健康信息上报接口,供注册服务上传健康信息进行服务保活。同时对于失效节点能够及时摘除并同步给服务订阅者。
  • 服务订阅和变更通知:供服务消费者使用。

注册中心实现机制

服务注册模式主要分为两种:自注册模式、第三方注册模式。 自注册模式

每个服务自己向注册中心进行注册和注销,同时上传健康信息到注册中心来保持注册有效。

  • 优点:实现方式简单,不需要部署其它额外的组件。
  • 缺点:耦合度较高,服务端需要和注册中心进行适配。 第三方注册模式

每个服务实例不需要自己直接向注册中心进行注册和注销,同时也不需要关注自己的健康信息,这些事情直接由第三方组件来做。

  • 优点:服务和注册中心解耦,不需要服务按照注册中心来进行适配。
  • 缺点:第三方组件需要保证高可用,引入第三方服务也增加了系统的复杂度。

    原文创作:小白先生哦

更多推荐

更多
  • Azure上Linux管理-十、使用 Azure Kubernetes 服务 技术要求,开始使用 AKS,与 Helm 一起工作,使用草稿,管理 Kubernetes,问题,进一步,使用 WSL 和 VS Code,安装依赖,kubectl 安装,使用 Azure CLI 创建集群,AKS 首次部署,创建服务,多
    Apache CN

  • Azure上Linux管理-十一、故障排除和监控您的工作负载 module(load="imuxsock"),技术要求,访问您的系统,Azure 日志分析,性能监控,问题,进一步,不允许远程访问,正在端口上工作,使用 nftables,引导诊断,Linux 登录,配置日志分析服务,安装 Azure
    Apache CN

  • Azure上Linux管理-十二、附录 第一章:探索微软 Azure 云,第二章:Azure 云入门,第三章:Linux 基础管理,第 4 章:管理 Azure,第五章:高级 Linux 管理,第七章:部署虚拟机,第八章:探索连续配置自动化,第 9 章:Azure 中的容器虚
    Apache CN

  • Azure上Linux管理-九、Azure 中的容器虚拟化 cloudconfig,集装箱技术导论,系统生成,Docker,Azure 容器实例,Buildah, Podman, and Skopeo,容器和储存,问题,进一步,容器历史,chroot 环境,OpenVZ,LXC,创建一个带启动的
    Apache CN

  • Azure上Linux管理-七、部署你的虚拟机 ResourceGroup 不存在,创建它:,vnet 不存在,创建 vnet,cloudconfig,Vagrant.config 结束,部署场景,Azure 中的自动部署选项,初始配置,流浪,封隔器,自定义虚拟机和 vhd,问题,进
    Apache CN

  • Azure上Linux管理-八、探索持续配置自动化 了解配置管理,使用 Ansible,使用地球形态,使用 PowerShell DSC,Azure 策略客户端配置,其他解决方案,问题,进一步,技术要求,Ansible 的安装,SSH 配置,裸最小配置,库存文件,Ansible 剧本和模
    Apache CN

  • Azure上Linux管理-五、高级 Linux 管理 技术要求,软件管理,网络,存储,systemd,问题,进一步,RPM 软件管理器,YUM 软件管理,基于 DNF 的软件管理,DPKG 软件管理器,运用 apt 进行软件管理,ZYpp 软件管理,识别网络接口,IP 地址识别,显示路由表
    Apache CN

  • Azure上Linux管理-六、管理 Linux 安全与身份 SELINUX=可以接受以下三个值之一:,permissiveSELinux 打印警告而不是强制执行。,disabled 没有加载 SELinux 策略。,SELINUXTYPE=可以接受以下三个值之一:,targeted 目标进程
    Apache CN

  • Azure上Linux管理-四、管理 Azure 使用 Azure CLI 和 PowerShell 管理 Azure 资源,技术要求,管理存储资源,管理网络资源,管理计算资源,虚拟机资源,问题,进一步,存储帐户,托管磁盘,Azure 文件,Azure Blob,虚拟网络,子网,网络安
    Apache CN

  • Azure上Linux管理-三、Linux 基础管理 Linux Shell,获取帮助,使用文本文件,在文件系统中找到你的方式,流程管理,自由访问控制,问题,执行命令,命令行编辑,与历史一起工作,自动完成,球状,重定向,处理变量,Bash 配置文件,使用手册页,使用信息文档,其他文档,文本
    Apache CN

  • 近期文章

    更多
    文章目录

      推荐作者

      更多