nacos
1.nacos linux配置
1.修改applications.properties文件
文件路径:/home/mysoftware/mynacos/nacos/conf
//指定ip 保证服务可以注册成功: nacos.inetutils.ip-address=47.98.252.142
//使用mysql: spring.datasource.platform=mysql
//配置mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=test
db.password=xxxx
//创建nacos_config数据库
执行sql脚本 nacos-mysql.sql /home/mysoftware/mynacos/nacos/conf
2.集群模式配置
//修改cluster.conf文件 添加登陆的ip (模拟集群模式)
47.98.252.142:xxxx
47.98.252.142:xxxx
47.98.252.142:xxxx
//bin目录下 修改startup.sh 增加端口启动
export SERVER="nacos-server"
export MODE="cluster"
export FUNCTION_MODE="all"
while getopts ":m:f:s:p:" opt
do
case $opt in
m)
MODE=$OPTARG;;
f)
FUNCTION_MODE=$OPTARG;;
s)
SERVER=$OPTARG;;
p) //-p+端口启动方式 可以启动多个服务器
PORT=$OPTARG;;
?)
echo "Unknown parameter"
exit 1;;
esac
done
//修改内存占用
JVM Configuration
if [[ "${MODE}" == "standalone" ]]; then
JAVA_OPT="${JAVA_OPT} -Xms64m -Xmx64m -Xmn32m"
JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=true"
else
JAVA_OPT="${JAVA_OPT} -server -Xms64m -Xmx64m -Xmn64m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=320m"
//start //启动方式
#start
echo "$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"
3.启动方式
单例:./startup.sh -m standalone
集群:./startup.sh -p 3333
4.nacos文件夹添加mysql驱动
2.项目工程配置
1.注册中心工程配置
1.pom添加依赖
(前提是工程中或父工程pom中已经引入了springcloudalibaba依赖)
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2.application.yml中指定nacos地址和项目名称
spring.cloud.nacos.discovery.server-addr=47.98.252.142:xxxx
spring.application.name=gulimall-gateway
3.启动类添加注解
@EnableDiscoveryClient (该注解有一个属性autoRegister 默认为true 所以该注解可以不加,可以通过配置nacos.discovery.enable使能是否注册,优先级要高于注解)
2.配置中心工程配置
1.pom添加依赖
(前提是工程中或父工程pom中已经引入了springcloudalibaba依赖)
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.application.yml
//指定nacos配置中心地址 和项目名称
spring:
application:
name: service-product //指定项目名字 这个名字要和nacos的dataid一样
cloud:
nacos:
config:
server-addr: 47.98.252.142:xxxx //配置中心地址
namespace: 29e1a98e-c946-4863-bf08-1eccab0adf55 //命名空间 这里是product 原则是每个服务一个命名空间 在通过group区分开发测试等模式
group: dev //分组
3.controller层添加@RefreshScope //自动刷新配置
3.实际使用方法
(1)在工程中只创建一个bootstrap.properties(bootstrap.properties加载的优先级高于application.properties),然后配置好服务名、配置中心地址、命名空间、分组。然后指定每个配置文件的名字、分组、是否动态刷新
(2)命名空间规则:基本上每个微服务单独一个命名空间,然后通过分组区分生产、开发等模式。第三方框架比如mybatis还有数据源可以单独创建配置文件,微服务的端口,注册中心的地址可以单独创建一个配置文件
(3)配置截图
bootstrap.properties:
nacos配置:
备注:以服务名命名的配置文件,可以定义变量,服务接口中可以通过@Value注解获取该配置文件中的变量值,动态获取,不需要重启服务