spring-cloud-alibaba-demo b站
nacos 服务提供者、消费者、配置demo
https://github.com/zhiguicai/springcloudalibabademo
一、nacos安装&运行
nacos官方文档
nacos官方社区 -segmentfault--推荐
Spring Cloud Nacos实现分布式环境下的配置管理和服务注册发现-segmentfault
Java微服务新生代之Nacos--安装、集群、集成
nacos修改默认的用户名密码
java微服务Nacos配置管理
SpringCloud - 服务注册与配置中心Nacos使用详解2(同一个服务器上启动三Nacos-集群部署)
IntelliJ IDEA 中创建maven项目
SpringCloud Alibaba Nacos服务注册和配置中心--推荐*
####下载
#下载
git clone https://github.com/alibaba/nacos.git
#或直接下编译好的 [nacos-server-2.0.0.zip](https://github.com/alibaba/nacos/releases/download/2.0.0-bugfix/nacos-server-2.0.0.zip)
#nacos1.4.0 https://github.com/alibaba/nacos/releases/download/1.4.0/nacos-server-1.4.0.tar.gz
#安装到本地仓库
cd nacos/
mvn -Prelease-nacos clean install -U
#Maven 方式打包后会在当前目录 distribution/target 下生成两个压缩包 nacos-server-1.0.1.tar.gz 和 nacos-server-1.0.1.zip,任意解压一个使用即可。
#解压&运行
tar -xvf nacos-server-2.0.0.tar.gz
cd ./nacos/bin
./startup.sh -m standalone
centos 单例运行
win10 startup.cmd之前需要修改 set MODE="standalone" 、或配置集群信息
err运行错误原因:nacos1.3.2不能启动(Aug 4, 2020)启动报错:db.num is null
#访问地址
http://192.168.235.2:8848/nacos/index.html
#user: nacos ;pwd:nacos (->czg*)
二、nacos集群配置
2.1 mysql中创建nacos的数据库nacos_config
Nacos 推荐生产环境中数据库使用建议至少主备模式,或者采用高可用数据库。
这里为了简化只采用了一个数据库。首先新建一个名为 nacos_config
的数据库
#naicat 或其他mysql客户端运行如下创建数据库脚本
DROP DATABASE IF EXISTS nacos_config;
CREATE DATABASE IF NOT EXISTS nacos_config DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
USE nacos_config;
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
2.2 初始化nacos数据
使用提供的 sql 语句源文件 导入初始数据。
初始化脚本中除了建表外,就是为nacos建立一个nacos用户,并为其设置了管理员角色
2.3 集群配置
#停止nacos服务
./shutdown.sh
#查看ip地址,比如得到ip 172.27.189.199
ifconfig
2.3.1 配置cluster.conf(集群节点)
在每个 Nacos 节点的conf目录下,添加配置文件 cluster.conf,可以参考相同目录下的 cluster.conf.example 文件,每行配置一个节点的 IP 和端口,如 ip:port
cp ./nacos/conf/cluster.conf.example ./nacos/conf/cluster.conf
#编辑集群配置文件
vim ./nacos/conf/cluster.conf
比如
172.27.189.199:8848
172.27.189.199:8847
172.27.189.199:8846
2.3.2 配置conf/application.properties(mysql数据库连接)
#编辑集群配置文件
vim ./nacos/conf/application.properties
其中server.port=8848是端口号
配置内容方式参考:application.properties.example
# spring.datasource.platform=mysql
### Count of DB:
# db.num=1
### Connect URL of DB:
# 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.user.0=nacos
# db.password.0=nacos
2.3.2copy nacos目录为集群实例
cp -r nacos nacos8846
cp -r nacos nacos8847
并修改对应的端口server.port=8848是端口号-->8846 、8847
分别启动不同的集群实例,分别运行在8846、8847、8848端口
./nacos/bin/startup.sh
./nacos8846/bin/startup.sh
./nacos8847/bin/startup.sh
查看启动日志
cat ./nacos8846/logs/start.out
There is insufficient memory for the Java Runtime Environment to continue.
Native memory allocation (mmap) failed to map 1073741824 bytes for committing reserved memory.
Caused by: io.grpc.netty.shaded.io.netty.channel.unix.Errors$NativeIoException: bind(..) failed: Address already in use
同一台服务器, 启动nacos集群,出现端口占用问题,具体问题如下 (版本号 : 2.0.0-ALPHA.2)
三、nacos服务注册(Config)与发现(Discovery--阿里默认集成ribbon)
阿里巴巴的 spring-cloud-alibaba-examples
阿里巴巴的 nacos-example
springboot接入nacos(转载)--模块化--推荐
服务注册(privide)
先上效果图
服务提供者 pom.xml
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.4.5
com.czg
nacos-demo
0.0.1-SNAPSHOT
nacos-demo
Demo project for Spring Boot
1.8
2020.0.2
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.springframework.cloud
spring-cloud-starter-alibaba-nacos-discovery
0.2.2.RELEASE
org.springframework.boot
spring-boot-starter-security
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
org.springframework.boot
spring-boot-maven-plugin
服务provider的对外controlller需要添加@EnableDiscoveryClient
@RestController
@EnableDiscoveryClient
public class ProTest {
@GetMapping("/get")
public String echo() {
return "Hello Nacos Discovery ";
}
}
application.yml
server:
port: 8001
spring:
application:
name: shopping
cloud:
nacos:
discovery:
server-addr: 118.178.84.253:8848