Nacos —— 注册中心和配置中心


在学习微服务的时候,我们都会听到两个词:注册中心、配置中心。

 

什么是注册中心呢?

  解释这个问题前,要先了解下什么是微服务结构,就我个人的理解,以前一个大型项目,有许多模块,例如用户管理模块、系统管理模块、订单模块、商品模块、库存模块.........,整个项目可能单单java文件就能有几百上千个。这种大项目打一次war包可能就要几十分钟甚至几个小时,而且这种大项目在一个服务器上跑,浪费的资源是十分大的,而且访问量也低,这就是早期的单体项目。后来人们将这个大项目按模块拆开,各个模块自己作为一个web项目,彼此之间通过网络进行服务器间的通讯(RPC、webservice、HTTP等),各个模块自己随意部署,就渐渐演变成分布式项目。微服务和分布式其实是差不多的东西,都是将大项目拆解成小项目。

  各个项目模块间通过网络进行通信,那各个项目就必须知道其他项目运行那哪一个机器上,IP是多少,端口是多少。如果我们部署的机器不多,而且都很固定,那我们可以直接写死在程序里。但是烦人的运维总是说机器性能不行,要把某个模块的项目部署多几个机器上,这样就又出现了一个新名词:集群。

  这样子多部署几个项目虽然解决了性能和访问量的问题,但是频繁加机器减机器,就使得管理IP和端口变成了噩梦。于是乎,技术大佬们就开始想:能不能每次启动一个项目,就让他自己获取IP和端口,然后丢到网络上的某个地方,其他项目要用时就自己去取呢?为解决这个问题,大佬自己打算自己撸一个项目。这个项目就叫“IP端口管理中心”,只提供两个接口:1、接收别人发送的ip和端口信息并存储起来。2、查询并返回相应的IP和端口信息。其他人想要用我这玩意,就必须引入我提供的客户端jar,并在启动时调用我的客户端方法,去获取本机IP和端口,然后发送给“IP端口管理中心”。你要用时自己请求“IP端口管理中心”获取信息。

  其实这个“IP端口管理中心”就是最原始版本的注册中心。其实这玩意并不复杂,只是现在市面上常用的注册中心都加入了很多功能,并且进行了性能优化,跟自己手撸的简单版本还是会有不少差距的。

市面上常见的注册中心有下面这几种:

其实注册中心在我们的开发使用上是非常简单的,注册中心实际上就是一个项目(或者说一个软件),我们使用它的步骤都很固定:

  1. 下载对应的注册中心
  2. 修改注册中心的配置文件
  3. 启动注册中心
  4. 我们的开发项目中引入注册中心的客户端jar
  5. 我们的代码上加入相应的注解或者配置
  6. 启动我们的项目

另外有一点要注意的是,eureka并不提供完整可运行的软件或者项目,eureka的依赖分成客户端依赖和服务端依赖,我们需要自己手动建一个新项目,如果加入eureka的服务端依赖,配置,然后启动这个项目,这个就是注册中心了。

 

这五种注册中心,consul、eureka、nacos是提供了管理页面的,zookeeper没有提供,coreDNS不知道,没用过。

nacos是阿里的产品,提供中文文档,其他都是英文文档。

eureka好像不再继续开发了。

 

我这里只说说Nacos的基本使用,其他注册中心自己网上百度。

Nacos的使用是非常简单的,基本上看看官网,跟着教程走一下,你就算入门了,熟练了。

官网:https://nacos.io/zh-cn/docs/what-is-nacos.html

官网上的下载地址时GitHub的,小水管,其他地方收费,自己上传云盘了,下载地址:https://wws.lanzous.com/ii7UVhrn8di

 

nacos下载后运行我曾出现了这个问题:

 

然后就是一闪而过,自动关闭。

看日志给我显示这玩意:

 

还以为是数据库连接问题,后来发现是因为nacos默认下载下来就是以cluster的方式运行的,并不是单机形式运行

打开bin/startup.cmd,进行编辑,修改MODE模式为standalone就可以正常启动了

 

 具体的部署自己跟着官网走,我不多废话,https://nacos.io/zh-cn/docs/deployment.html

也可以看这篇文档https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-discovery 更简单明了

另外nacos的一些参数配置可以看这个地址,https://nacos.io/zh-cn/docs/system-configurations.html

 这是我自己玩的时候写的一些注释

复制代码
#  Spring Cloud Alibaba Nacos Config 目前提供了三种配置能力从 Nacos 拉取相关的配置。
#   A: 通过 spring.cloud.nacos.config.shared-configs[n].data-id 支持多个共享 Data Id 的配置
#   B: 通过 spring.cloud.nacos.config.extension-configs[n].data-id 的方式支持多个扩展 Data Id 的配置,或者ext-config
#   C: 通过内部相关规则(应用名、应用名+ Profile )自动生成相关的 Data Id 配置
#  当三种方式共同使用时,他们的一个优先级关系是:A < B < C  注意:只会使用优先级最高的那个配置,低优先级的配置不加载
  cloud:
    nacos:
      config:
        enabled: true     # 开启配置中心功能
        server-addr: 127.0.0.1:8848
        file-extension: yml   # 如果配置后缀名不是properties,就必须声明
        namespace: a4d88caf-5c3e-45f5-9021-04ec354b99ad   # 指定命名空间,如果不是public,那么必须指定命名空间的id,注意,不是空间名
        refresh-enabled: true  # 运行自动刷新配置
        group: DEFAULT_GROUP    # 指定组
        extension-configs:         # 如果需要指定多个配置,可以使用这种方法
          - dataId: test1.yml
          - dataId: test2.yml
            group: HONGCHENG_GROUP
            refresh: true

      # 配置项参考地址 https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-discovery
      discovery:
        enabled: true     # 开启注册中心功能
        server-addr: 127.0.0.1:8848
        # service: hongcheng   # 服务名,默认为spring.application.name
        group: hong      # 服务分组名
        weight: 4       # 负载均衡时的权重,1 ~ 100
        # network-interface:     # 当IP未配置时,注册的IP为此网卡所对应的IP地址,如果此项也未配置,则默认取第一块网卡的地址
        # ip: 127.0.0.1      # 指定当前机器所在的ip地址,优先级最高,不写的话自动获取
        # port: 9999         # 指定当应用使用的端口,优先级最高,不写的话自动获取
        namespace: a4d88caf-5c3e-45f5-9021-04ec354b99ad   # 命名空间id,不同命名空间的服务不能相互调用
复制代码

 

 

 

 

说完注册中心,再说说配置中心

  前面说过注册中心是因为机器数量过多,不易于管理而出现的,同样配置中心也是因为这种原因而诞生。

  springboot的出现,本身就已经减少了我们的配置量,但是仍旧还是存在配置。在我们将大项目拆分成小项目后,我们的配置文件也同样裂变成了好几份,即便你两个小项目用的是同样的配置,你也要复制两次。一旦我们的小项目数量多了起来,那么管理这些配置将会让运维想跳楼。

  而且一旦某个项目部署了十几二十个机器上后,你开发修改了某一个配置项,那就意味这必须重启这十几二十个机器上的项目。这时候运维可能在提刀过来砍你的路上。为了避免这种事情的发生,大佬又使出了第二套武功秘籍:再做一个项目专门管理配置项,也就是配置中心。

  配置中心只需要做三件事就行:1、存储配置项。2、提供接口返回配置项。3、通过接口通知应用放弃之前的环境,重新根据配置项生成一个新的环境。市面上也有不少配置中心的产品,他们增加了挺多的扩展功能,我们直接用就好。

 

网上偷一张图说说各配置中心对比:

 

 

 

Spring Cloud Config 我觉得使用起来比较麻烦,而且他需要依赖git来存储配置文件,我不是很喜欢。

Apollo是携程的,不过我没用过。

Nacos是阿里的,可以做注册中心也可以做配置中心,用起来很简单,配置可以存在文件、MySQL、Redis中。

 

Nacos的配置中心文档可以看这个:https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config   通俗易懂,简单直接,用了你就会爱上

 

配置中心的使用步骤也很固定,跟使用注册中心的步骤完全一样的:

  1. 下载对应的配置中心
  2. 修改配置中心的配置文件
  3. 启动配置中心
  4. 我们的开发项目中引入配置中心的客户端jar
  5. 我们的代码上加入相应的注解或者配置
  6. 启动我们的项目

 

给你们看看nacos的管理界面

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM