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

目录

  • 常见组件
  • Nacos的服务注册表结构是怎么样的
    • nacos分级存储模型
    • nacos源码
    • Protocol Buffer
      • 编译proto
    • 启动nacos源码
    • nacos源码中的注册表结构

常见组件

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

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

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

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

nacos分级存储模型

微服务面试篇-Nacos注册表结构_第1张图片

nacos源码

github:https://github.com/alibaba/nacos/releases
官方文档:https://nacos.io/zh-cn/docs/open-api.html
微服务面试篇-Nacos注册表结构_第2张图片

Protocol Buffer

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

编译proto

微服务面试篇-Nacos注册表结构_第3张图片

启动nacos源码

进入console工程(nacos-console)执行Nacos,即可启动8848
微服务面试篇-Nacos注册表结构_第4张图片

nacos源码中的注册表结构

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

  • ServiceManager中维护了Map> serviceMap = new ConcurrentHashMap<>();
    第一个key是namespaceId,第二个key是group拼接服务名(group::serviceName)
  • Service中维护了Map,key就是集群名称
  • Cluster中维护了Set,具体是实例
    在这里插入图片描述

你可能感兴趣的:(SpringCloud,微服务,面试,java)