Spring Cloud Alibaba Nacos集成
Posted java_wxid
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Cloud Alibaba Nacos集成相关的知识,希望对你有一定的参考价值。
文章目录
集成nacos需要先准备好nacos,这里从零开始搭建,首先准备好一台云服务器,我这里选择的是阿里云的CentOS 7.2 64位,然后开放安全组的指定端口,然后使用宝塔面板快速安装mysql,docker,使用docker容器快速安装nacos,最后创建项目进行测试nacos动态更新配置是否成功。
代码地址:https://gitee.com/java_wxid/java_wxid/tree/master/demo/spring-cloud-alibaba-nacos-demo
安装宝塔面板
去宝塔面板填写服务器ip和登录密码
如下(示例):
宝塔面板地址:https://www.bt.cn/new/download.html
选择仅安装宝塔面板,安装好之后会有一个链接和账户
面板地址:http://ip:端口/xxxxxx
用户名:xxxxx
密码:xxxxx
然后绑定手机号
安装mysql
由于nacos需要用到数据库,这里我需要提前安装好mysql,软件商店选择安装mysql
安全左侧栏目开放端口(一般需要修改默认端口,这里做演示就不改了)
如下(示例):
如果需要在宝塔面板里面链接mysql执行sql需要安装phpMyAdmin
如下(示例):
但是安装phpMyAdmin前还需要安装nginx和php-7.1|php-7.2|php-7.3|php-7.1|php-7.4|php-8.0|php-8.1|,安装完成之后就可以测试连接了
如下(示例):
如果root账号远程是报错,进入宝塔安装的phpmyadmin数据库界面,执行以下命令,重启mysql.
代码如下(示例):
#方法一:直接给root授予最大权限
# 授权root用户对所有数据库在任何ip都可以进行操作
grant all on *.* to root@'%' identified by '123456' with grant option;
# 刷新数据库
flush privileges;
#方法二:新建一个用户并授予最大权限
# 新建并授权jim用户对所有数据库在任何ip都可以进行操作
grant all on *.* to liaozhiwei@'%' identified by '123456' with grant option;
# 刷新数据库
flush privileges;
“root、liaozhiwei”是用户账号名;“123456”是mysql连接密码;“all”是指全部权限;“%指的是任何ip”,也可以把%替换成对应远程的ip地址
如果还是连接报错需要检查云服务器安全组端口是不是没开放
安装redis(非必选)
安装配置nacos和redis没有关系,这里为了后面项目可以用到redis,提前做好了安装配置,在软件商店搜索redis,点击安装,并且在首页显示方便修改配置
如下(示例):
去首页点击redis
如下(示例):
如下(示例):
然后重载配置,重启redis
检查云服务器安全组端口是否开发,就可以测试连接了
如下(示例):
安装docker
可以在左侧的Docker栏目安装docker
如下(示例):
安装nacos
代码如下(示例):
#搜索可以使用的镜像
docker search nacos
#拉取镜像
docker pull nacos/nacos-server
#推荐使用这种方式,可以连接自己的数据库
docker run --restart always -d -p 8848:8848 -p 9848:9848 -p 9849:9849 \\
--name nacos \\
--env MODE=standalone \\
--env SPRING_DATASOURCE_PLATFORM=mysql \\
--env MYSQL_SERVICE_HOST=106.14.132.94 \\
--env MYSQL_SERVICE_PORT=3306 \\
--env MYSQL_SERVICE_DB_NAME=nacos \\
--env MYSQL_SERVICE_USER=root \\
--env MYSQL_SERVICE_PASSWORD=JHWLXeT56iJiBwDG \\
nacos/nacos-server:latest
在数据库里面创建nacos库,把sql导入,sql地址:https://github.com/alibaba/nacos/blob/master/distribution/conf/nacos-mysql.sql
访问地址 默认账号密码是nacos/nacos(一般会删除,重新创建新用户)
http://ip:8848/nacos
配置nacos
创建命名空间
如下(示例):
创建配置文件nacos-config-dev.yaml
如下(示例):
填写内容:
内容如下(示例):
user:
name: liaozhiwei
age: 25
如下(示例):
创建spring-cloud-alibaba-nacos-demo项目
项目结构如下(示例):
创建一个springboot的项目,然后修改pom.xml
代码如下(示例):
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>spring-cloud-alibaba-nacos-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-cloud-alibaba-nacos-demo</name>
<description>Demo project for Spring Boot</description>
<!-- 属性配置-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<!--引入 Spring Boot、Spring Cloud、Spring Cloud Alibaba 三者 BOM 文件,进行依赖版本的管理,防止不兼容。
在 https://dwz.cn/mcLIfNKt 文章中,Spring Cloud Alibaba 开发团队推荐了三者的依赖关系-->
<spring.boot.version>2.3.12.RELEASE</spring.boot.version>
<spring.cloud.version>Hoxton.SR12</spring.cloud.version>
<spring.cloud.alibaba.version>2.2.7.RELEASE</spring.cloud.alibaba.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 代表web模块,在这个模块中含了许多JAR包,有spring相关的jar,内置tomcat服务器,jackson等,这些web项目中常用的的功能都会自动引入-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Alibaba Nacos 配置 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- 在SpringBoot 2.4.x的版本之后,对于bootstrap.properties/bootstrap.yaml配置文件
(我们合起来成为Bootstrap配置文件)的支持,其实这个jar包里什么都没有,就只有一个标识类Marker,
用来标识要开启Bootstrap配置文件的支持,由于父类用了2.5.6版本需要导入如下的依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>3.1.0</version>
</dependency>
</dependencies>
<!--
引入 Spring Boot、Spring Cloud、Spring Cloud Alibaba 三者 BOM 文件,进行依赖版本的管理,防止不兼容。
在 https://dwz.cn/mcLIfNKt 文章中,Spring Cloud Alibaba 开发团队推荐了三者的依赖关系
-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>$spring.boot.version</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>$spring.cloud.version</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<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>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.4</version>
<configuration>
<source>$java.version</source>
<target>$java.version</target>
<encoding>$project.build.sourceEncoding</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project>
创建bootstrap.yml文件
代码如下(示例):
#bootstrap.yml优先级比application.yml优先级高
spring:
#prefix−spring.profile.active.$file-extension
#nacos会根据当前环境去拼接配置名称查找相应配置文件,
#示例:spring.application.name-spring.profiles.active-spring.cloud.nacos.config.file-extension
#获取到值:nacos-autoconfig-service-dev.yml
profiles:
#开发环境dev,测试环境test,生产环境prod
active: dev
application:
#配置应用的名称,用于获取配置
name: nacos-config
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: ip:8848
config:
#nacos配置中心地址
server-addr: ip:8848
#配置中心的命名空间id
namespace: 9e50b6d9-6c3d-4e7a-b701-10f085e4b98d
#配置分组,默认没有也可以
group: DEFAULT_GROUP
#配置文件后缀,用于拼接配置配置文件名称,目前只支持yaml和properties
file-extension: yaml
#配置自动刷新
refresh-enabled: true
#配置文件的前缀,默认是application.name的值,如果配了prefix,就取prefix的值
#prefix: nacos-autoconfig-service-$spring.profile.active
# 配置编码
encode: UTF-8
username: nacos
password: nacos
修改启动类SpringCloudAlibabaNacosDemoApplication
代码如下(示例):
package com.example.springcloudalibabanacosdemo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.ConfigurableApplicationContext;
import java.util.concurrent.TimeUnit;
@EnableDiscoveryClient
@SpringBootApplication
public class SpringCloudAlibabaNacosDemoApplication
public static void main(String[] args) throws InterruptedException
ConfigurableApplicationContext applicationContext =
SpringApplication.run(SpringCloudAlibabaNacosDemoApplication.class, args);
//配置的动态更新
while(true)
//当动态配置刷新时,会更新到 Enviroment中,因此这里每隔一秒中从Enviroment中获取配置
String userName = applicationContext.getEnvironment().getProperty("user.name");
String userAge = applicationContext.getEnvironment().getProperty("user.age");
System.err.println("user name :" + userName + "; age: " + userAge);
TimeUnit.SECONDS.sleep(1);
启动项目开始校验
控制台打印如下(示例):
修改nacos中的配置查看是否动态更新
配置修改如下(示例):
控制台打印发现已经修改成功了
控制台打印如下(示例):
以上是关于Spring Cloud Alibaba Nacos集成的主要内容,如果未能解决你的问题,请参考以下文章