一、Nacos介绍
Nacos是SpringCloudAlibaba架构中最重要的组件。
Nacos 是一个更易于帮助构建云原生应用的动态服务发现、配置和服务管理平台,提供注册中心、配置中心和动态 DNS 服务三大功能。能够无缝对接Springcloud、Spring、Dubbo等流行框架。
nacos和eureka功能对比
1,nacos 搭建
下载cloud 下载地址 https://github.com/alibaba/Nacos/releases
启动
密码同账号一样
2,maven 搭建
创建一个maven项目,删除其中的src文件夹,修改pom做为父项目
修改
packing( 打包类型 , 默认为 jar)pom : 父级项目 (pom 项目里没有 java 代码 , 也不执行任何代码 , 只是为了聚合工程或传递依赖用的 )jar : 内部调用或者是作服务使用war : 需要部署的项目dependencyManagement( 管理 jar 包的版本 , 让子项目中引用一个依赖而不用显示的列出版本号 )dependencyManagement 与 dependencies 区别 :dependencies 即使在子项目中不写该依赖项 , 那么子项目仍然会从父项目中继承该依赖项(全部继承)dependencyManagement 里只是声明依赖 , 并不实现引入 , 因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖 , 是不会从父项目中继承下来的。只有在子项目中写了该依赖项 , 并且没有指定具体版本 , 才会从父项目中继承该项 , 并且 version 和scope 都读取自父 pom 。另外如果子项目中指定了版本号 , 那么会使用子项目中指定的 jar 版本。
3,添加nacos数据库表
找到nacos-service的conf文件夹,运行sql脚本
这时的SQL与数据库还是未连接的,我们需要在nacos 该路径下nacos-》conf-》的application.properties文件进行修改
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?
characterEncoding=utf-8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=123456
4,建立SpringBoot子项目
nacos_consumer,nacos_provider 子项目继承父项目(cloud)
cloud_01 org.example 1.0-SNAPSHOT
父项目(cloud)承认子项目 nacos_consumer,nacos_provderv
nacos_provider nacos_consumer
俩个子项目的 application.yml 文件
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
application:
name: nacos-provider
server:
port: 8081/8082
在启动类上添加开启 服务发现注解
@EnableDiscoveryClient
启动运行
5,实现跨服务访问
生产者(nacos_provider)子项目下新建controller软件包
controller包下新建ProviderController
package com.example.nacos_provider.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 生产者写一个方法给消费者调用,消费者每次来生产者都给东西,例如:生产者是生产鸡腿的
*
* @author lgs
*/
@RestController
public class ProviderController {
@RequestMapping("/run")
public String run(){
return "来,你的鸡腿";
}
}
消费者(nacos_consumer)子项目下新建controller软件包
controller包下新建ProviderController
package com.example.nacos_consumer.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
@RestController
public class ConsumerController {
private RestTemplate restTemplate;
@Autowired
public ConsumerController(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
@RequestMapping("/run")
public String run(){
// 消费者找生产者要鸡腿(跨服务器访问)getForObject("")里面填写访问路径
return restTemplate.getForObject("http://nacos-provider/run",String.class);
}
}
在消费者的启动类中添加方法RestTemplate
为了使消费者跨服务访问
在 nacos_consumer pom 中导入负载均衡依赖
org.springframework.cloud
spring-cloud-loadbalancer
ribbon 状态 : 停止更新
替代方案 : Spring Cloud Loadbalancer
package com.example.nacos_consumer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
@SpringBootApplication
@EnableDiscoveryClient
public class NacosConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(NacosConsumerApplication.class, args);
}
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
测试:
OK!到这就结束了,希望能帮到你!!!