<!--Spring cloud Hoxton.SR1-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--Spring cloud alibaba 2.1.0.RELEASE-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring.cloud.alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
在之前的父工程中已经引入了cloud的依赖和cloud alibaba的依赖,这样既可以使用cloud的配置,也可以使用alibaba的配置
nacos等同于eureka+config+bus,可用来做服务注册中心、服务配置中心;具有AP特性,确保系统可用性
1.本地需jdk1.8+ 和maven3.2x+
2.下载后直接解压,进入bin目录打开cmd,输入startup.cmd启动;启动时报错需修改bin\strartup.cmd文件,详情查看:https://www.cnblogs.com/rookiemzl/p/13814919.html
3.访问http://localhost:8848/nacos,用户名、密码是nacos,进入nacos页面
新建module:cloudalibaba-provicer-payment9001支付模块作为服务提供者,父工程pom引入cloud alibaba的依赖,9001的pom引入nacos的依赖(nacos集成了ribbon,等同于集成了负载均衡和RestTemplate)
yml中配置端口、服务名、nacos的ip+端口、暴露监控信息;启动类添加注解@EnableDiscoveryClient;编写业务类用于测试
测试:启动nacos、9001,可在nacos中看到9001服务
新建module:cloudalibaba-provicer-payment9002,除了端口外和9001相同,9001、9002作为服务提供者集群
新建module:cloudalibaba-consumer-nacos-order83订单模块,pom中引入nacos依赖,yml中配置端口、服务名、nacos的ip+端口、要访问的服务集群的名称
启动类添加注解@EnableDiscoveryClient;配置类注入RestTemplate,配置类添加注解@LoadBalanced
编写控制层,通过restTemplate调用支付模块集群的方法
测试:启动nacos、9001、9002、83,通过83的接口访问,可在nacos中查看到负载均衡访问支付集群
切换:curl -X PUT '$NACOS SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'
1. 新建cloudalibaba-config-nacos-client3377作为配置中心客户端,pom中拉取nacos-config依赖
2. 新建bootstrap.yml和application.yml,前者优先级高于后者;在bootstrap.yml中配置端口、服务名、nacos的ip+端口、指定配置文件后缀
server:
port: 3377
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服务注册中心地址
config:
server-addr: localhost:8848 #Nacos作为配置中心地址
file-extension: yaml #指定yaml格式的配置
在application.yml中配置
Spring:
profiles:
active: dev # 开发环境
# 结合这两个yml配置,表示去localhost:8848配置中心服务端找nacos-config-client-dev.yaml
3. 启动类添加注解@EnableDiscoveryClient;编写一个业务接口用于测试,同时添加注解@RefreshScope用于动态刷新
4. 3377是配置客户端,nacos是配置服务端,在nacos页面中添加配置
4.1 新建配置文件
4.2 配置id,选择格式,具体配置内容
4.3 id的格式
4.4 错误
5. 测试,启动nacos、3377,3377可获取到nacos中的配置
nacos的默认命名空间是public,如果有多个配置环境,可新建多个命名空间用于隔离
一个分组包含多个DataID,另一个分组中包含多个相同的DataID,这两个分组是两个集群可部署到不同的地区来容灾
DataID方案:默认命名空间+默认分组+多个DataID
Group方案:默认命名空间+多个分组中相同的DataID;3377获取时要配置group
Namespace方案:新建命令空间+不同组+不同DataID;3377获取时需配置namespace流水号、分组
Nacos默认自带的嵌入式数据库derby,所以我们在nacos上新建了yaml配置,重启后依然存在
D:\Program Files\nacos\conf\nacos-mysql.sql # 进入nacos的安装目录找到sql脚本,导入到MySQL
D:\Program Files\nacos\conf\application.properties # 找到该文件,添加配置如下:
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root
重启nacos,这时使用的mysql数据库了
实际生产中通常会有多个nacos组成一个集群,服务注册或要获取nacos中的yaml,先通过nginx(负载、转发、高可用),再到nacos,最后数据存储到一个mysql数据库
环境配置:Linux、nginx、jdk、maven、nacos、mysql
1. 本地已经安装好了jdk、maven
2. 将zip包解压到/usr/local/nacos目录
3. acos切换MySQL:
nacos/conf/nacos-mysql.sql # Linux启动并登录mysql,创建数据库nacos_config,找到该sql脚本,导入到mysql
nacos/conf/application.properties # 找到该配置文件,备份后修改,同样是添加数据源
详情参考:https://blog.csdn.net/dagedeshu/article/details/109209157
4. 设置开机自启
vim /lib/systemd/system/nacos.service # 创建并编辑 nacos.service 文件,添加内容如下:
[Unit]
Description=nacos
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nacos/bin/startup.sh -m standalone # 注意这里是nacos命令所在路径
ExecReload=/usr/local/nacos/bin/shutdown.sh
ExecStop=/usr/local/nacos/bin/shutdown.sh
PrivateTmp=true
[Install]
WantedBy=multi-user.target
5. /usr/local/nacos/bin/startup.sh # 找到改文件,使用文本编辑器打开,添加jdk路径;输入:$JAVA_HOME查看路径
6. 使配置生效
systemctl daemon-reload # 重新加载所有service服务
systemctl enable nacos.service # 开机启动nacos.service
systemctl is-enabled nacos.service # 查看该service是否开机启用
systemctl start nacos.service # 启动该服务
sh startup.sh -m standalone # /nacos/bin 进入该目录,使用单例模式启动
systemctl status nacos.service # 查看服务状态
7. 对外开放8848端口
8. 启动后在windows浏览器访问http://ip:8848/nacos/ 进入nacos登录页面;若无法访问,关闭防火墙,使用单例模式启动,访问url写完整
安装详情可参考:https://blog.csdn.net/wangooo/article/details/109173780
1. hostname -i # 查看当前ip
2. /nacos/conf/cluster.conf # 找到该配置文件,备份后修改,注释原内容,新内容如下
ip:3333
ip:4444
ip:5555
3. 配置nacos启动脚本startup.sh,使能够启动不同端口
3.1 /nacos/bin/startup.sh # 找到该配置文件
3.2 添加$JAVA -Dserver.port=${ PORT}
3.3 启动不同端口:./startup.sh -p 3333
/nginx/conf/nginx.conf # 找到该配置文件
#gzip on;
upstream cluster{ # 转发的地址,这里转发到3台nacos
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; # 转发地址的名称
}
nacos作为配置中心
启动nginx,启动3台nacos
ps -ef | grep nacos | grep -v grep|wc -l # 查看nacos进程
window浏览器访问:https://Linux系统的ip:1111/nacos # 进入nacos页面
新建一个配置,此时在Linux系统的mysql中,nacos-mysql库可查看到该配置
nacos作为服务注册中心
例如9002模块注册进nacos集群
修改9002模块的yml:server-addr: linux系统的ip:1111
启动9002,可在nacos页面中显示注册进来的9002
- 集群配置:业务逻辑