一、版本控制
1、SpringCloud Alibaba与各组件服务端的版本关系
2、SpringCloud Alibaba与SpringBoot版本关系
二、Nacos使用
1、配置SpringCloud Alibaba版本
pom文件引入SpringCloud Alibaba依赖,管理版本,一般配置于父工程。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2、配置服务注册与发现
pom文件引入相关依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
启动类需添加注解@EnableDiscoveryClient
@SpringBootApplication
// 启动服务注册发现
@EnableDiscoveryClient
public class NacosProviderApplication {
...
}
application.properties相关配置
server.port=8081
#注册的服务名
spring.application.name=nacos-provider
#Nacos服务端地址
spring.cloud.nacos.discovery.server-addr=192.168.101.158:8848
#微服务监控
management.endpoints.web.exposure.include=*
3、配置config配置中心
pom文件引入相关依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
需添加配置文件bootstrap.properties
spring.application.name=nacos-config
spring.cloud.nacos.server-addr=192.168.101.158:8848
spring.cloud.nacos.config.file-extension=properties
spring.cloud.nacos.config.namespace=2e6a6aae-7815-4578-873e-ab853231c149
三、Nacos集群
1、配置Nacos持久化
conf/application.properties添加数据库配置,只支持mysql
mysql数据库执行nacos-mysql.sql脚本
2、配置Nacos集群
conf/cluster.conf配置Nacos集群的ip:port
3、配置Nginx负载均衡
upstream cluster {
server [ip1]:[port1];
server [ip2]:[port2];
}
server {
listen [port];
proxy pass http://cluster;
}
4、配置startup执行port启动
修改bin/startup.sh脚本,使其支持根据port启动
四、Nacos要点
1、负载均衡和RestTemplate
Nacos默认开启负载均衡(基于Ribbon),需注册多个相同服务名的服务
nacos-discovery依赖中包含Ribbon,自带RestTemplate
若使用RestTemplate并开启负载均衡,需添加@LoadBalanced注解
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
plate并开启负载均衡,需添加@LoadBalanced注解
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}