一:注册中心
1.依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2.启动类上加入注解:
@EnableDiscoveryClient
3.提供者的配置文件:application.yml ---provider
server: port: 8081 spring: cloud: nacos: discovery: server-addr: 192.168.83.131:8848 application: name: nacos_provider #服务名称
4.调用者的配置文件: application.yml ---consumer
server: port: 8080 spring: cloud: nacos: discovery: server-addr: 192.168.83.131:8848 #nacos的主机ip:端口 application: name: nacos_consumer #服务名称
5.调用提供方的方法
@Autowired
private RestTemplate restTemplate;
@Autowired
private DiscoveryClient discoveryClient;
@RequestMapping("/getUserById/{id}")
public User getUserById(@PathVariable Integer id){
List<String> services = discoveryClient.getServices();
for (String service:services){
// 获取nacos中所有注册的服务
System.out.println(service);
}
System.out.println("--------");
//获取nacos中指定的服务信息
ServiceInstance service = discoveryClient.getInstances("nacos_provider").get(0);
//获取主机ip
System.out.println(service.getHost());
//获取端口
System.out.println(service.getPort());
return
restTemplate.getForObject("http://"+service.getHost()+":"+service.getPort()+"/provider/getUserById/"+id,User.class);
}
6.开启linux端的nacos服务
nacos下载地址:Release 2.0.0-ALPHA.2 (Jan 14, 2021) · alibaba/nacos · GitHub
上传linux后解压:tar -zxvf nacos-server-1.4.1.tar.gz -C 指定目录
然后进入nacos下的bin目录
./startup.sh -m standalone 单机启动
./startup.sh 集群启动
7.在浏览器内登录nacos: 192.168.83.131:8848/nacos
ip是nacos服务的主机名,端口8848,账号密码都是nacos
登陆成功后:
8.直接通过提供者访问提供者的端口
调用者主机是本机,端口是8080
提供者主机是本机,端口是8081
这就是通过访问8080端口,调用8081的接口
二:配置中心
1.依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.实时监控配置文件的内容的修改:
需要在controller类上加入@RefreshScope
然后用@value注解,可以读取配置文件
@Value("${spring.datasource.driver-class-name}")
private String driverClassName;
@Value("${spring.datasource.url}")
private String url;
@Value("${spring.datasource.username}")
private String username;
@Value("${spring.datasource.password}")
private String password;
@Value("${spring.datasource.type}")
private String type;
@GetMapping("/config/info")
public String getConfigInfo() {
System.out.println(this);
String configInfo = driverClassName+"<br>"+url+"<br>"+username+"<br>"
+password+"<br>"+type;
return configInfo;
}
3.配置文件必须是bootstarp.yml,不能是application.yml 否则会报错无法正常启动springboot项目
spring: cloud: nacos: config: server-addr: 192.168.83.131:8848 #nacos的ip和端口 file-extension: yaml #配置文件后缀 prefix: nacos_config #配置文件名
4.在nacos中创建配置文件nacos_config .yaml
配置管理-->配置列表-->"+" 然后填写Data id,选择文件类型和填写配置文件文件内容
5.然后启动服务,在浏览器测试
6.nacos的服务隔离
如果调用者和提供者不在同一个namespace下,不在同一个group下,会不能调用成功。
只有namespace和group完全相同,才能调用成功。
7. nacos有自带嵌入式数据库derby,如果搭建集群则每台nacos的配置文件都不一样,所以需要将内容持久化到数据库,这样可以保证数据的唯一性。
vim /usr/local/nacos/conf/application.properties:
### If use MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://192.168.83.129:3306/nacos?characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=123456
然后找到/usr/local/nacos/nacos-mysql.sql文件复制到navicat
最后重启nacos
8.然后修改nacos中的配置文件 查看数据库中的信息