微服务面试篇-Nacos注册表结构

本文深入探讨了Nacos作为服务注册中心的内部结构,包括其分级存储模型和源码分析。Nacos使用ProtocolBuffer进行通信,提供高效的数据序列化。在源码层面,重点介绍了注册表结构,如ServiceManager中的服务与集群管理,以及实例的注册流程。通过理解这些核心概念,开发者能更好地理解和利用Nacos进行微服务治理。

常见组件

  • 注册中心组件:Eureka,Nacos等
  • 负载均衡组件:Ribbon
  • 远程调用组件:OpenFeign
  • 网关组件:Zuul、Gateway
  • 服务保护组件:Hystrix、Sentinel
  • 服务配置管理组件:SpringCloudConfig、Nacos

Nacos的服务注册表结构是怎么样的

要了解Nacos的服务注册表结构,需要从两方面入手:

  • 一是Nacos的分级存储模型
  • 二是Nacos的服务端源码

nacos分级存储模型

在这里插入图片描述

nacos源码

github:https://github.com/alibaba/nacos/releases
官方文档:https://nacos.io/zh-cn/docs/open-api.html
在这里插入图片描述

Protocol Buffer

Nacos通信不是通过http协议,而是通过Protocol协议。
protocol buffers(类似于JSON) 是一种与语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。 Protocol Buffers 是一种灵活,高效,自动化机制的结构数据序列化方法-可类比 XML,但是比 XML 更小(3 ~ 10倍)、更快(20 ~ 100倍)、更为简单。 你可以定义数据的结构,然后使用特殊生成的源代码轻松地在各种数据流中使用各种语言进行编写和读取结构数据。你甚至可以更新数据结构,而不破坏由旧数据结构编译的已部署程序。
Protocol Buffers可以用于结构化数据序列化,很适合做数据存储或者RPC数据交换格式。它可用于通讯协议,数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。

编译proto

在这里插入图片描述

启动nacos源码

进入console工程(nacos-console)执行Nacos,即可启动8848
在这里插入图片描述

nacos源码中的注册表结构

注册示例:POST /nacos/v1/ns/instance
注册代码:nacos-namingInstanceControllerregister方法
调用ServiceManager.registerInstance(namespaceId,serviceName,instance)。

  • ServiceManager中维护了Map<String,Map<String,Service>> serviceMap = new ConcurrentHashMap<>();
    第一个key是namespaceId,第二个key是group拼接服务名(group::serviceName)
  • Service中维护了Map<String,Cluster>,key就是集群名称
  • Cluster中维护了Set,具体是实例
    在这里插入图片描述
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值