当我们在业务服务中需要动态更新配置信息时,就需要引入分布式配置中心,那么市面上开源的分布式配置中心有很多,那么我们该选择哪些呢?比如Nacos、Apollo以及Disconf等等。
作为一个技术人,都会有技术的选择性综合症,换句话说就是“技术太多了,我们眼花了”。
推荐Spring Cloud Alibaba Nacos
为什么要推荐这个组合呢,最主要的原因是简单,到底多简单呢,下面我来给大家简单的说明一下。
01
下载Nacos的二进制部署包
从Nacos官网(https://github.com/alibaba/nacos)下载Nacos的二进制包,比如目前最新的版本为2.0.4,具体如图所示,其中,nacos-server-2.0.4.tar.gz为二进制部署包。
当然我们可以先不用去啃源码,那样就难了,可以先会用。
02
部署Nacos分布式配置中心
解压nacos-server-2.0.4.tar.gz,我们可以查阅二进制包的目录文件,如下图所示。
好吧,这里简单的介绍一下部署目录。其实对于初学者来说,我们只需要关心如下几个文件:
- conf/nacos-mysql.sql,如果你的存储设备是MySQL,则可以执行这个脚本,初始化数据表结构,当然推荐使用数据库;
- conf/application.properties,这个文件就是Nacos的配置文件,里面有很多字段,但是大部分我们可以暂时不用关心,直接使用默认的就行,我们只需要修改如下配置信息;
##其实这个参数都不用改,默认就行
server.port=8848
##db个数为1
db.num=1
##db的url
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
##db的用户名
db.user=root
##db的密码
db.password=123456huxian
- bin/startup.sh,如果你是windows,则可以使用bin/startup.cmd,到bin目录下执行如下脚本(sh startup.sh -m standalone),就可以一键启动Nacos配置中心,如下图所示。
如果你看到如下进程,则说明Nacos已经启动成功呢。
为了进一步的验证Nacos是否启动成功,我们可以使用用户名和密码(nacos/nacos)访问域名http://127.0.0.1:8848/nacos/,如下图所示,说明Nacos配置中心启动成功。
03
使用Spring Cloud Alibaba
使用Spring Coud Alibaba快速的将业务服务接入到配置中心中,建议使用标准的Spring Boot项目,比如一个标准的Spring Boot的pom文件依赖如下所示:
代码语言:javascript复制<!—添加这个依赖之后,可以启动一个web服务,并开发Restful API->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.3.2.RELEASE </version>
</dependency>
<!—添加这个依赖之后,可以使用Spring Boot的日志功能->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
<version>2.3.2.RELEASE </version>
</dependency>
<!—添加这个依赖之后,可以使用Spring Boot的单元测试->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.3.2.RELEASE </version>
</dependency>
熟悉Spring Boot的技术人,应该对上述代码非常熟悉了,那么我们来看看项目中如何使用Nacos配置中心,可以说是非常简单。
首先,我只需要在pom中添加如下依赖:
代码语言:javascript复制<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.7.RELEASE</version>
</dependency>
其次,在项目的配置文件“bootstrap.yaml”中添加如下配置信息:
代码语言:javascript复制spring:
cloud:
nacos:
config:
##Nacos的命名空间名称
namespace: becf336b-3ccf-4c6b-be93-e51c1542bece
##Nacos组的名称
group: dynamic-address-producer-server
##如果开启认证,配置用户名,默认不开启
username: nacos
##如果开启认证,配置用户密码,默认不开启
password: nacos
##开启配置信息的远程同步,默认开启
enable-remote-sync-config: true
##配置Nacos的IP地址
server-addr: 127.0.0.1:8848
##配置文件对应的名称,也叫dataID
name: dynamic-config-server
##配置文件的类型
file-extension: properties
最后,在项目中添加如下代码,比如我就添加了一个ProducerConfig类,具体代码实现如下:
代码语言:javascript复制@Configuration
@RefreshScope
@Data
@ConfigurationProperties(prefix = "rocketmq.youxia.config")
public class ProducerConfig {
private String isOpenAddressServer;
}
当然,上面实例用到了提效的Jar包lombok,需要在项目中添加如下pom依赖关系。
代码语言:javascript复制<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
</dependency>
04
配置分布式配置信息
在Nacos配置中心,创建指定名称配置文件,比如本实例中的dynamic-config-server. Properties
05
启动业务服务
启动服务,就可以获取到配置中心对应属性的值,如果用Nacos控制台修改对应的属性值,业务服务会准实时的更新。
完成如上五步之后,你的业务服务就接入Nacos配置中心了,整个流程下来,就几行代码,非常的简单。
公众号初衷
知识输出是笔者的初衷,借助知识输出,能够认识更多的牛人,能够和牛人沟通,也是自己技术提升的一个机会。