nacos是spring cloud alibaba系列的组件,可用于替代eureka,实现服务注册与发现。
安装执行
下载地址:https://github.com/alibaba/nacos/releases 这里版本是1.3.1
window系统 解压后双击nacos\bin目录的startup.cmd即可启动。
如上图右边:默认端口8848,管理页面http://192.168.240.1:8848/nacos/index.html 登录用户/密码都是nacos
pom.xml
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
bootstrap.yml
配好服务名 和nacos注册地址即可
spring:
application:
name: service1
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
启动后会自动注册到nacos,在管理页面服务列表可以查到
点击上图服务的详情,可以查看服务的集群实例,如下,可以手动修改权重,上下线等操作。
客户端
调用服务时和eureka是一样的,service1是服务名,api是接口路径
@Bean
@LoadBalanced
public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) {
return restTemplateBuilder.build();
}
@Autowired
RestTemplate restTemplate;
@GetMapping("/")
public String hello() {
return restTemplate.getForObject("http://service1/api", String.class);
}
nacos集群
nacos可为服务提供集群功能,而其自身也存在单点问题,可以配置集群。
复制nacos/conf/cluster.conf.example文件,改名为cluster.conf,输入集群IP即可
192.168.240.1:8847
192.168.240.1:8848
192.168.240.1:8849
修改nacos/conf/application.properties文件,可修改端口,同时要配置数据库,集群必须统一数据库管理数据。mysql数据库脚本文件在 nacos/conf/nacos-mysql.sql。配置好后可把nacos复制三份,分别修改端口。
server.port=8848
spring.datasource.platform=mysql
db.num=1
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=nacos
db.password=nacos
三个nacos分别执行命令以集群模式启动nacos
startup.cmd -m cluster
如下,集群管理可以看到,我只启动了2个结点。
修改项目配置,多个nacos结点之间以逗号分隔
spring:
application:
name: service1
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848,127.0.0.1:8847