SpringCloud 基本使用与 nacos

2年前 (2022) 程序员胖胖胖虎阿
180 0 0

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

nacos和eureka功能对比

SpringCloud 基本使用与 nacos

1,nacos 搭建

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

SpringCloud 基本使用与 nacos

 启动

SpringCloud 基本使用与 nacos

 登录SpringCloud 基本使用与 nacos

密码同账号一样 

SpringCloud 基本使用与 nacos

SpringCloud 基本使用与 nacos

2,maven 搭建

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

修改 <packaging>pom</packaging>

SpringCloud 基本使用与 nacos

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

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

SpringCloud 基本使用与 nacos

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)

<parent>
    <artifactId>cloud_01</artifactId>
    <groupId>org.example</groupId>
    <version>1.0-SNAPSHOT</version>
</parent>

父项目(cloud)承认子项目 nacos_consumer,nacos_provderv 

<modules>
    <module>nacos_provider</module>
    <module>nacos_consumer</module>
</modules>

俩个子项目的 application.yml 文件

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
  application:
    name: nacos-provider
server:
  port: 8081/8082

在启动类上添加开启 服务发现注解 

@EnableDiscoveryClient

启动运行

SpringCloud 基本使用与 nacos

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 中导入负载均衡依赖

    <dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-loadbalancer</artifactId>
    </dependency>
    </dependencies>

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

测试:

SpringCloud 基本使用与 nacos

SpringCloud 基本使用与 nacos

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

版权声明:程序员胖胖胖虎阿 发表于 2022年11月8日 下午1:24。
转载请注明:SpringCloud 基本使用与 nacos | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...