小白也能懂的Nacos服务模型

一 前言

按照目前市场上的主流使用场景,Nacos 被分成了两块功能:服务注册发现(Naming)和配置中心(Config)。在之前的文章中我介绍了 Nacos 配置中心的实现原理,今天这篇文章所介绍的内容则是与 Nacos 服务注册发现功能相关,来聊一聊 Nacos 的服务模型。

说到服务模型,其实需要区分视角,一是用户视角,一个内核视角。即 Nacos 用户视角看到的服务模型和 Nacos 开发者设计的内核模型可能是完全不一样的,而今天的文章,是站在用户视角观察的,旨在探讨 Nacos 服务发现的最佳实践。

二 服务模型介绍

一般我在聊注册中心时,都会以 Zookeeper 为引子,这也是很多人最熟悉的注册中心。但如果你真的写过或看过使用 Zookeeper 作为注册中心的适配代码,会发现并不是那么容易,再加上注册中心涉及到的一致性原理,这就导致很多人对注册中心的第一印象是:这个东西好难!但归根到底是因为 Zookeeper 根本不是专门为注册中心而设计的,其提供的 API 以及内核设计,并没有预留出「服务模型」的概念,这就使得开发者需要自行设计一个模型,去填补 Zookeeper 和服务发现之间的鸿沟。

微服务架构逐渐深入人心后,Nacos、Consul、Eureka 等注册中心组件进入大众的视线。可以发现,这些“真正”的注册中心都有各自的「服务模型」,在使用上也更加的方便。

为什么要有「服务模型」?理论上,一个基础组件可以被塑造成任意的模样,如果你愿意,一个数据库也可以被设计成注册中心,这并不是“夸张”的修辞手法,在阿里还真有人这么干过。那么代价是什么呢?一定会在业务发展到一定体量后遇到瓶颈,一定会遇到某些极端 case 导致其无法正常工作,一定会导致其扩展性低下。正如刚学习数据结构时,同学们常见的一个疑问一样:为什么栈只能先进后出。不是所有开发都是中间件专家,所以 Nacos 设计了自己的「服务模型」,这虽然限制了使用者的“想象力”,但保障了使用者在正确地使用 Nacos。

花了一定的篇幅介绍 Nacos 为什么需要设计「服务模型」,再来看看实际的 Nacos 模型是个啥,其实没那么玄乎,一张图就能表达清楚:

与 Consul、Eureka 设计有别,Nacos 服务发现使用的领域模型是命名空间-分组-服务-集群-实例这样的多层结构。服务 Service 和实例 Instance 是核心模型,命名空间 Namespace 、分组 Group、集群 Cluster 则是在不同粒度实现了服务的隔离。

为了更好的理解两个核心模型:Service 和 Instance,我们以 Dubbo 和 SpringCloud 这两个已经适配了 Nacos 注册中心的微服务框架为例,介绍下二者是如何映射对应模型的。

  • Dubbo。将接口三元组(接口名+分组名+版本号)映射为 Service,将实例 IP 和端口号定义为 Instance。一个典型的注册在 Nacos 中的 Dubbo 服务:providers:com.alibaba.mse.EchoService:1.0.0:DUBBO。

  • Spring Cloud。将应用名映射为 Service,将实例 IP 和端口号定义为 Instance。一个典型的注册在 Nacos 中的 Spring Cloud 服务:helloApp。

下面我们将会更加详细地阐释 Nacos 提供的 API 和服务模型之间的关系。

三 环境准备

需要部署一个 Nacos Server 用于测试,我这里选择直接在 https://mse.console.aliyun.com/ 购买一个 MSE 托管的 Nacos,读者们可以选择购买 MSE Nacos 或者自行搭建一个 Nacos Server。

MSE Nacos 提供的可视化控制台,也可以帮助我们更好的理解 Nacos 的服务模型。下文的一些截图,均来自 MSE Nacos 的商业化控制台。

四 快速开始

先来实现一个最简单的服务注册与发现 demo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值