在初学微服务,因为暂时是学生,接触不到企业微服务的相关经验,希望大佬们可以从企业实际开发过程去聊聊
在初学微服务,因为暂时是学生,接触不到企业微服务的相关经验,希望大佬们可以从企业实际开发过程去聊聊
首先申明一下基本没接触过基于nacos微服务的开发,本身也不是属于开发岗,所以在运维的角度上解答这个问题。
在基于nacos的微服务项目里,程序启动时,就能从nacos拿到程序的配置信息。应用网关通过服务发现,可以找到已经注册的实例信息,通过这个信息可以把请求发送给对应的实例。
但是通常情况下,程序开发过程,都会有多个环境(常见的互联网行业中的公司是这样的),通常会有测试环境/开发环境/生产环境等等。
在上面这些环境中,会对应不同的代码分支,这些分支的代码应该在合并之后是一样的,这样就有个问题,如果代码一样,配置的命名空间一样,那么程序去nacos读取配置时,就会拿到一样的配置了,这样就可能都会去连接同一个数据库。不同的环境的程序,也会都注册到一起,就混乱了。
这个时候,命名空间namespace就派上用场了。比如说现在有3个命名空间, test \ dev \ release。
在启动的时候,配置一个环境变量env=dev。然后启动微服务的时候,程序去读取环境变量env,然后把这个env的值dev作为程序连接nacos时使用命名空间,这样,程序就能去dev命名空间下读取配置文件/注册服务了。
等到dev的代码合并到test环境上了,在test环境上,传递一个env=test的环境变量。这里程序还是一样的程序,但是程序读取到的env=test,程序就只会去test命名空间下读取配置/注册服务。
修改不同环境的配置/注册不同的服务,也不会影响到使用其他命名空间的环境,就是相当于一个逻辑的隔离措施。
group 是把配置文件分组,我是这样理解的。
service 就是服务名字。比如说一个项目有ABC三个服务,注册的时候,要告诉nacos,现在这个程序是什么服务。后面你需要去调用这个ABC三个服务中的任意一个服务的时候,才能知道哪个是哪个。
3 回答2.2k 阅读
1 回答891 阅读✓ 已解决
1 回答1.2k 阅读
771 阅读
管理的颗粒度不同,从粗到细。
这玩意儿是随着需求自然而然产生的,你不用费劲去记它的概念,而是要试着从需求角度去理解它们。
你可以先抛开 Nacos 提供的这些模型和概念,现在就假设你自己有一些程序需要管理它们的配置文件,你会怎么去做?我们来试着总结一下可能的需求。
在 Nacos 里,应对上述三点需求的,就分别是 Service、Group、Namespace 了。
以上仅从配置项的角度出发,但实际 Nacos 不光是配置中心,还包括服务发现等能力,这里就不再展开了。道理是一样的,你可以自己试着从实际管理的需求出发去总结。