SpringCloud 基本使用与 nacos

一、Nacos介绍
Nacos是SpringCloudAlibaba架构中最重要的组件。
Nacos 是一个更易于帮助构建云原生应用的动态服务发现、配置和服务管理平台,提供注册中心、配置中心和动态 DNS 服务三大功能。能够无缝对接Springcloud、Spring、Dubbo等流行框架。

nacos和eureka功能对比

SpringCloud 基本使用与 nacos_第1张图片

1,nacos 搭建

下载cloud 下载地址 https://github.com/alibaba/Nacos/releases

 启动

SpringCloud 基本使用与 nacos_第2张图片

 登录SpringCloud 基本使用与 nacos_第3张图片

密码同账号一样 

SpringCloud 基本使用与 nacos_第4张图片

SpringCloud 基本使用与 nacos_第5张图片

2,maven 搭建

创建一个maven项目,删除其中的src文件夹,修改pom做为父项目

修改 pom

SpringCloud 基本使用与 nacos_第6张图片

packing( 打包类型 , 默认为 jar)
pom : 父级项目 (pom 项目里没有 java 代码 , 也不执行任何代码 , 只是为了聚合工程或传递依赖用的 )
jar : 内部调用或者是作服务使用
war : 需要部署的项目
dependencyManagement( 管理 jar 包的版本 , 让子项目中引用一个依赖而不用显示的列出版本号 )
dependencyManagement dependencies 区别 :
dependencies 即使在子项目中不写该依赖项 , 那么子项目仍然会从父项目中继承该依赖项(全部继
承)
dependencyManagement 里只是声明依赖 , 并不实现引入 , 因此子项目需要显示的声明需要用的依
赖。
如果不在子项目中声明依赖 , 是不会从父项目中继承下来的。
只有在子项目中写了该依赖项 , 并且没有指定具体版本 , 才会从父项目中继承该项 , 并且 version
scope 都读取自父 pom
另外如果子项目中指定了版本号 , 那么会使用子项目中指定的 jar 版本。

3,添加nacos数据库表 

找到nacos-service的conf文件夹,运行sql脚本

SpringCloud 基本使用与 nacos_第7张图片

这时的SQL与数据库还是未连接的,我们需要在nacos 该路径下nacos-》conf-》的application.properties文件进行修改

SpringCloud 基本使用与 nacos_第8张图片

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

启动运行

SpringCloud 基本使用与 nacos_第9张图片

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();
        }

}

测试:

SpringCloud 基本使用与 nacos_第10张图片

SpringCloud 基本使用与 nacos_第11张图片

OK!到这就结束了,希望能帮到你!!!

你可能感兴趣的:(Cloud,nacos,spring,cloud,spring,java)