管理的颗粒度不同,从粗到细。
这玩意儿是随着需求自然而然产生的,你不用费劲去记它的概念,而是要试着从需求角度去理解它们。
你可以先抛开 Nacos 提供的这些模型和概念,现在就假设你自己有一些程序需要管理它们的配置文件,你会怎么去做?我们来试着总结一下可能的需求。
1. 你有两个程序,我们称之为程序 A 和 B。其中每个程序都可能是分布式部署的,会有多个实例,比如 A1、A2……A9 和 B1、B2……B9。你会希望能有一个地方去统一管理 A 和 B 的配置文件,改了一处 A1-A9 就都跟着变,不用一个一个分别去改。而且最重要的是,改了 A 的配置文件、不会影响 B 的配置 ,也就是所谓的隔离。
2. 你现在有了更多的程序,A、B、C、D……乃至 N。此时你发现它们虽然是独立的程序,但是其中某几个程序是互相有业务关联的,比如 A 是订单程序、B 是库存程序,它们会共享同一个 MQ 或者其他中间件。那么此时你会希望在上一条的基础之上,有一个地方可以共享其中一部分参数 ,这样就可以统一修改这些中间件配置了,但是还不影响你的 A、B 两个程序其他配置项的隔离。
3. 项目正式上线了,可产品还得继续迭代,但迭代过程中不能直接拿着真实环境搞啊,万一出 BUG 影响用户了怎么办?于是你们分别搭建出了开发、测试、预生产、生产等等几个环境。随着工作越来越复杂,你开始变得手忙脚乱起来,改配置经常改错地方,本来要去改开发环境的、结果不小心点进预生产环境里了。于是你在想,有没有一个什么办法可以区分出这几个环境,打开开发环境的,下面展示出来的所有配置项就都是开发环境的,其他环境的一个都不要显示出来,不显示出来你就不会不小心点错了 。甚至说生产环境的配置项,你连看都不想看到,都交给运维吧,这样改错了也不会是你的责任。
在 Nacos 里,应对上述三点需求的,就分别是 Service、Group、Namespace 了。
以上仅从配置项的角度出发,但实际 Nacos
不光是配置中心,还包括服务发现等能力,这里就不再展开了。道理是一样的,你可以自己试着从实际管理的需求出发去总结。