Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高。
nacos 使用教程:点击链接访问
解压nacos安装包 nacos-server-1.4.1.zip
unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz
配置mysql步骤:
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&serverTimezone=UTC&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=mysql用户名
db.password=mysql密码
进入bin目录,执行启动命令
#进入bin目录
cd bin
#Windows启动 单机模式运行
startup.cmd -m standalone
#Linux启动 单机模式运行
sh startup.sh -m standalone
浏览器查看:http://127.0.0.1:8848/nacos
maven
<dependency>
<groupId>com.alibaba.cloudgroupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
dependency>
<dependency>
<groupId>com.alibaba.cloudgroupId>
<artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
dependency>
gradle
implementation 'com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config'
implementation 'com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery'
spring:
cloud:
nacos:
discovery:
server-addr: 121.36.90.180:8848
namespace: dev
group: dev
config:
server-addr: ${spring.cloud.nacos.discovery.server-addr}
file-extension: yaml
prefix: order_server
namespace: dev
group: dev
Nacos中的配置文件变更后,微服务无需重启就可以感知。不过需要通过下面两种配置实现:
@Slf4j
@Component
@RefreshScope
public class MyCommandLineRunner implements CommandLineRunner {
/**
* 微信商户号
*/
@Value("${wechat.mchId}")
private String wechatMchId;
}
@Data
@Component
@ConfigurationProperties(prefix = "domain")
public class DomainResource {
/**
* 微信商户号
*/
private String wechatMchId;
/**
* 文案内容
*/
private BidiMap<Long, String> contents = new DualHashBidiMap<>();
}
集群部署架构图:
linux系统中
mkdir nacos
wget https://github.com/alibaba/nacos/release/download/1.4.1/nacos-server-1.4.1.tar.gz
tar -zxvf nacos-server-1.4.1.tar.gz
mv nacos nacos8849
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?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=123456
#it is ip
#example
192.168.16.101:8849
192.168.16.101:8850
192.168.16.101:8851
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
cp ./nacos8849/conf/application.properties ./nacos8850/conf/application.properties
cp ./nacos8849/conf/application.properties ./nacos8851/conf/application.properties
cp ./nacos8849/conf/cluster.conf ./nacos8850/conf/cluster.conf
cp ./nacos8849/conf/cluster.conf ./nacos8851/conf/cluster.conf
cp ./nacos8849/bin/startup.sh./nacos8850/bin/startup.sh
cp ./nacos8849/bin/startup.sh./nacos8851/bin/startup.sh
sh ./nacos8849/bin/startup.sh
sh ./nacos8850/bin/startup.sh
sh ./nacos8851/bin/startup.sh
# 查看日志输出
tail -f ../logs/start.out
# 1.添加官方源仓库
yum install -y yum-utils
yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo
# 2.安装openresty
yum install -y openresty
cd /usr/local/openresty/
配置nginx
vim conf/nginx.conf
upstream nacoscluster{
server 192.168.90.95:8848;
server 192.168.90.109:8848;
server 192.168.90.115:8848;
}
server{
listen 8847;
server_name localhost;
location /nacos/{
proxy_pass http://nacoscluster/nacos/;
}
}
stream {
upstream nacosGrpc {
# 这里配置的是偏移之后的端口
server 192.168.90.95:9848;
server 192.168.90.109:9848;
server 192.168.90.115:9848;
}
server {
# nginx监听偏移1000的端口,因为nacos客户端会链接 8847+1000 这个端口,代理的是nacos服务端偏移后的端口
listen 9847;
proxy_pass nacosGrpc;
}
}
注意:
Nacos2.0增加了9848,9849端口来进行GRPC通信,这两个端口在Nacos2.0内部是通过8848+1000以及8848+1001这种偏移量方式计算出来的,不需要用户额外在配置文件中配置。但需要开发这2个端口
启动nginx
cd sbin/
./nginx
Nacos与Eureka自我保护机制对比:
相同点:保护阈值都是个比例,0-1 范围,表示健康的 instance 占全部instance 的比例。
不同点:
主流的注册中心