文章目录
前置内容
1、SpringCloud Alibaba简介和Nacos【注册中心】
1、Nacos(下)
1.1、服务配置中心演示
1.1.1、基础配置
1. 建Module
Module
的名称为cloudalibaba-config-nacos-client3377
2. 改POM
<dependencies><!--nacos-config--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!--nacos-discovery--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--web + actuator--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--一般基础配置--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>
3. 改YML
(1)、application.yaml
spring:profiles:active: dev
(2)、bootstrap.yaml
server:port:3377spring:application:name: nacos-config-client
cloud:nacos:discovery:server-addr: localhost:8848#服务注册中心地址config:server-addr: localhost:8848#配置中心地址file-extension: yaml #指定yaml格式的配置
- 配置
bootstrap.yaml
的原因:Nacos
通SpringCloud-config
一样,在项目初始化时候,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动,springboot
中配置文件的加载是存在优先级顺序的,bootstrap
优先级高于application
。
4. 主启动
importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication@EnableDiscoveryClientpublicclassNacosConfigClientMain3377{publicstaticvoidmain(String[] args){SpringApplication.run(NacosConfigClientMain3377.class,args);}}
5. 业务类
importorg.springframework.beans.factory.annotation.Value;importorg.springframework.cloud.context.config.annotation.RefreshScope;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RestController;@RestController@RefreshScopepublicclassConfigClientController{@Value("${config.info}")privateString configInfo;@GetMapping("/config/info")publicStringgetConfigInfo(){return configInfo;}}
@RefreshScope
实现动态刷新
6. 再Nacos添加配置信息
- 配置信息中的
DataId
=${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
。
prefix
默认为spring.application.name
的值spring.profile.active
既为当前环境对应的profile
,可以通过配置项spring.profile.active
file-exetension
为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension
配置
7. 测试结果
(1)、直接测试
(2)、修改version后测试
8. 最后的包结构
1.1.2、分类配置
(1)、面临的问题
- 实际的开发环境下,一个大型的分布式服务系统会有很多微服务子项目,每个微服务项目会有相应的开发环境、测试环境、预发环境、正式环境。我们需要对这些微服务配置进行有效的管理。
(2)、图形化管理界面
(3)、Namespace、Group和DataId三者的关系
- 三者的关系类似于
Java
里面的package
和类名。 - 最外层的
namespace
是可以用于区分部署环境的,Group
和DataId
逻辑上区分两个目标对象。 Namespace
的命名空间是public
,Namespace
主要用来实现隔离。Group
默认是DEFAULT_GROUP
,Group
可以把不同的微服务划分到同一个分组里面去。Service
就是微服务,一个Service
可以包含多个Cluster
(集群),Nacos
默认Cluster
是DEFAULT
,Cluster
是对指定微服务的一个虚拟划分。- 最后的
Instance
,就是微服务的实例。
(4)、DataId方案
1. 添加配置信息
2. 在上面案例前提下修改application.yaml
spring:profiles:active: test
#active: dev
3. 测试结果
(5)、Group方案
1. 添加新的配置信息
2. 修改两个yaml文件
(1)、bootstrap.yaml
server:port:3377spring:application:name: nacos-config-client
cloud:nacos:discovery:server-addr: localhost:8848#服务注册中心地址config:server-addr: localhost:8848#配置中心地址file-extension: yaml #指定yaml格式的配置group: TEST_GROUP
# nacos-config-client-dev.yaml
(2)、application.yaml
spring:profiles:active: info
#active: dev
3. 测试结果
(6)、Namespace方案
1. 添加新的配置信息
- 配置内容
config:info: 0b13fe62-4a9c-4b8b-929a-168ff189a149,DEFAULT_GROUP,nacos-config-client-dev.yaml
2. 修改两个yaml文件
(1)、application.yaml
spring:profiles:# active: infoactive: dev
(2)、bootstrap.yaml
server:port:3377spring:application:name: nacos-config-client
cloud:nacos:discovery:server-addr: localhost:8848#服务注册中心地址config:server-addr: localhost:8848#配置中心地址file-extension: yaml #指定yaml格式的配置group: DEFAULT_GROUP
namespace: 0b13fe62-4a9c-4b8b-929a-168ff189a149
3. 测试结果
(1)、Group为DEV_GROUP时
(2)、Group为DEFAULT_GROUP时
1.2、集群和持久化配置
1.2.1、简介
1. 官网架构图
访问地址
2. 对官网架构图的说明
- 官网架构图中的
VIP
是虚拟IP
的集群,也就是所谓的NGINX
集群。
1.2.2、持久化配置解释
- 每一个
Nacos
都有一个默认的数据库derby
。但是如果我们搭建Nacos
集群的话,那么这样会导致数据不一致的问题。所以我们需要将数据库从derby
转换为MySQL
。
配置步骤
1. 找到如图所示目录的sql文件
- 将其放置到我们对应的
MySQL
的数据库中执行。
2. 修改application.properties文件
- 添加的内容
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://11.162.196.16:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=nacos_devtest
db.password=youdontknow
- 到这一步那么就配置完成了。
1.2.3、Linux版Nacos + MySQL生产环境配置
(1)、配置前说明
下载地址
- 预计需要,
1
个nginx
+3
个nacos
注册中心+1
个mysql
。 - 下载
nacos-server-1.1.4.tar.gz
解压并安装
(2)、配置步骤
1. Linux服务器上mysql数据库配置
将
nacos.mysql.sql
文件在
mysql
上执行。
- 执行后结果
2. 修改application.properties文件
- 我们首先需要对
application.properties.example
拷贝一份重命名为application.properties
。然后对application.properties
进行修改。
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://192.168.123.129:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456
3. Linux服务器上nacos的集群配置cluster.conf
- 我们首先需要对
cluster.conf.example
拷贝一份重命名为cluster.conf
。然后对cluster.conf
进行修改。
192.168.123.129: 3333
192.168.123.129: 4444
192.168.123.129: 5555
- 这个
IP
不能写127.0.0.1
,必须是Linux
命令hostname -i
能够识别的IP
。
4.编辑Nacos的启动脚本startup.sh,使它能够接受不同的启动端
while getopts ":m:f:s:" opt
do
case $opt in
m)
MODE=$OPTARG;;
f)
FUNCTION_MODE=$OPTARG;;
s)
SERVER=$OPTARG;;
p)
PORT=$OPTARG;;
?)echo"Unknown parameter"exit 1;;
esac
done
# startecho"$JAVA ${JAVA_OPT}" > ${BASE_DIR}/logs/start.out 2>&1 &
nohup $JAVA Dserver.port=${port} ${JAVA_OPT} nacos.nacos >> ${BASE_DIR}/logs/start.out 2>&1 &
echo"nacos is starting,you can check the ${BASE_DIR}/logs/start.out"
启动方式
./startup.sh -p 端口号
5.Nginx的配置,由它作为负载均衡器
- 修改
nginx.conf
。
upstream cluster{
server 127.0.0.1:3333;
server 127.0.0.1:4444;
server 127.0.0.1:5555;}
server{
listen 1111;
server_name localhost;
location /{
proxy_pass http://cluster;}}
# 启动nginx./nginx -c /usr/local/nginx/conf/nginx.conf
6. 修改服务提供者的yaml文件及测试
server-addr: 写你自己的虚拟机ip:1111
- 启动后
7. 小结
版权归原作者 崇尚学技术的科班人 所有, 如有侵权,请联系我们删除。