欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Nacos作为微服务注册中心和配置中心详解

程序员文章站 2022-07-15 08:58:49
...

个人博客传送门


对于一个微服务体系,注册中心是至关重要的,他承担了对于服务之间的动态发现和注册面可以使得服务之间进行解耦。

前言

  • zookeeper: 刚开始解除分布式调用的时候因为使用的Dubbo+Zookeeper这种模式所以熟知的第一个注册中心则是Zookeeper.

  • Eureka: 在springcloud大火的时候官方强势推出了一波eureka该注册中心,但是很快该项目在netflix中闭源了,伴随着这个消息的产生,很多社区和个人都提出了很多替代的方法,比较成熟的就是之前的Zookepper、console等

  • nacos: 随着阿里加入到springcloud这个开源的项目之后,提供除了很多很好的插件,比如:Nacos,Senetl等并且提供了springcloud-alibaba等组件包

比较

nacos的出现整合了之前在微服务领域中,注册中心和配置中心相对独立的问题,完美的将注册中心和配置中心融合到了一起,现在列举下本人知道的关于配置中心的中间件:

  • SpringCloud Config:伴随着springcloud一起进入大家的视野中,作为一个配置中心的组件,它可以将配置数据存在放git上,当git仓库中的数据发生变化便可以通过消息总线等方式通知到工程中,作为一个含着金钥匙出生的宠儿,虽然出生决定了他的高贵,但是用起来并不是那么的尽如人意,因为有很多比他出生更好,但是比它更努力的。
  • apllo:同样出生不凡的一个组件,来自携程内部的一个组件开源而来,基于mysql数据库进行配置的存储,上面讲到的spring cloud config虽然也支持数据库配置但是缺少了界面的可视化界面,apllo的开源使得许多需要用到配置中心的企业受益。具体的特点可以查看github上的链接
  • nacos:随阿里的开源进入大家的视野中,不但拥有华丽的出生,更是有着自己过硬的实力
  1. 完善的中文文档
  2. 活跃的社区
  3. 兼容注册中心和配置中心为一体
  4. 完善的界面,可以通过界面清晰的看到服务的状况和集群的状态
  5. 支持多种存储方式,生成环境建议使用的Mysql

因为作为一款可以兼容上面两种组件的功能,必然受到大家的欢迎,本人也在几个月前刚刚开始接触到nacos的,通过学习相关的内容,发现该中间件很符合阿里一向的风格,他的开放性和集成性很好,提供了各个版本语言的sdk,可以通过sdk的引入自己实现一些自定义的业务功能,接下来就本人的个人经验介绍下,生产环境下的集群的搭建。

环境的准备

一.nacos的下载

因为nacos是基于java语言开发出来的一个中间件,所以默认是有java运行环境的,接下来需要mysql数据库,因为线上环境需要重启之后之前的数据项和配置不会丢失,因为需要mysql的环境

nacos的tar包下载地址
nacos的zip包下载地址

二.nacos的配置

对下载的包进行解压,然后进入到conf目录下,该目录下有两个配置文件比较重要,分别进行如下修改:

  1. 找到nacos-mysql.sql文件,将改文件的脚本执行到你的目标数据库中
    Nacos作为微服务注册中心和配置中心详解

  2. 修改配置文件

  • application.properties 主要配置注册中心的端口和存储方式为mysql数据库等
#*************** Spring Boot Related Configurations ***************#
### Default web context path:
server.servlet.contextPath=/nacos
### Default web server port:
server.port=8888
#*************** Network Related Configurations ***************#
### If prefer hostname over ip for Nacos server addresses in cluster.conf:
# nacos.inetutils.prefer-hostname-over-ip=false
### Specify local server's IP:
# nacos.inetutils.ip-address=
#*************** Config Module Related Configurations ***************#
### If user MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
db.url.0=jdbc:mysql://***.***.***.***:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=****
  1. 集群的配置

拷贝cluster.conf.example 生成一个cluster.conf文件并且写上需要配置集群的几个机器和端口号,配置如下:

ip1:8888
ip2:8888
ip3:8888
分别对应三台集群的服务器

  1. 然后将该包发送到对应的其他两台机器上

scp *** ip1:/***
scp *** ip2:/***


到此,基本上的配置就已经全部完成了。
Nacos作为微服务注册中心和配置中心详解

三.nacos的应用

  • 启用该服务,分别在三台服务器上执行启动nacos集群
startup.sh 
  • 如果需要启动单实例模式,我们可以看下启动脚本
if [[ "${MODE}" == "standalone" ]]; then
    echo "nacos is starting with standalone"
else
    echo "nacos is starting with cluster"
fi

# check the start.out log output file
if [ ! -f "${BASE_DIR}/logs/start.out" ]; then
  touch "${BASE_DIR}/logs/start.out"
fi
  • 可以看到,需要加上参数,便可以启动该服务
startup.sh -d standalone

四.服务的注册和配置中心的启用

  • 界面访问:http://ip:8888/nacos
  • 默认的账号和密码为: nacos nacos
    如图所示可以看到集群环境已经搭建好了,后续将介绍使用配置中心和注册中心。
    Nacos作为微服务注册中心和配置中心详解

更多的关于nacos的学习的方法见:nacos官方地址

更多的关于nacos的使用接下来会介绍

  • nacos作为注册中心的使用和服务的监控和下线等
  • nacos作为配置中心动态的刷新配置和配置中心的监听等

长按二维码进行关注,获取更多的学习材料。
Nacos作为微服务注册中心和配置中心详解