Day43_SpringCloudAlibaba—Nacos

一、Nacos简介

1.概述

在这里插入图片描述
①SpringCloud Alibaba Nacos服务注册和配置中心,它就是注册中心 + 配置中心的组合。
②Nacos = Eureka+Config +Bus,它替代Eureka做服务注册中心,替代Config做服务配置中心

在这里插入图片描述
在这里插入图片描述

官网
在这里插入图片描述
在这里插入图片描述

2.服务注册中心对比

在这里插入图片描述
在这里插入图片描述

3.安装和运行

在这里插入图片描述
在这里插入图片描述
访问http://localhost:8848/nacos,账号和密码都是nacos
在这里插入图片描述

二、Nacos做服务注册中心

1.基于Nacos的服务提供者9001

1.新建Module

这里是引用

2.修改pom
父pom(cloud2020的总pom)

            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.1.0.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

本模块的pom

    <dependencies>
        <!--SpringCloud ailibaba nacos -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!-- SpringBoot整合Web组件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--日常通用jar包配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

3.写yml

server:
  port: 9001

spring:
  application:
    name: nacos-payment-provider
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #Nacos配置地址,告诉服务提供者要注册进8848这个微服务上面

management:
  endpoints:
    web:
      exposure:
        include: '*'  #监控的断电全部打开

4.主启动类

@EnableDiscoveryClient //我们不再使用Eureka了
@SpringBootApplication
public class PaymentMain9001
{
    public static void main(String[] args) {
            SpringApplication.run(PaymentMain9001.class, args);
    }
}

5.业务类

@RestController
public class PaymentController
{
    @Value("${server.port}")
    private String serverPort;

    @GetMapping(value = "/payment/nacos/{id}")
    public String getPayment(@PathVariable("id") Integer id)
    {
        return "nacos registry, serverPort: "+ serverPort+"\t id"+id;
    }
}

6.测试

这里是引用
在这里插入图片描述

2.基于Nacos的服务提供者9002

1.新建Module

这里是引用

2.修改pom


    <dependencies>
        <!--SpringCloud ailibaba nacos -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!-- SpringBoot整合Web组件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--日常通用jar包配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

3.写yml

server:
  port: 9002

spring:
  application:
    name: nacos-payment-provider
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址

management:
  endpoints:
    web:
      exposure:
        include: '*'

4.主启动类

@EnableDiscoveryClient
@SpringBootApplication
public class PaymentMain9002
{
    public static void main(String[] args) {
            SpringApplication.run(PaymentMain9002.class, args);
    }
}

5.业务类

@RestController
public class PaymentController
{
    @Value("${server.port}")
    private String serverPort;

    @GetMapping(value = "/payment/nacos/{id}")
    public String getPayment(@PathVariable("id") Integer id)
    {
        return "nacos registry, serverPort: "+ serverPort+"\t id"+id;
    }
}

6.测试

在这里插入图片描述
在这里插入图片描述

3.基于Nacos的服务消费者83

1.新建Module

在这里插入图片描述

2.修改pom

    <dependencies>
        <!--SpringCloud ailibaba nacos -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!-- 引入自己定义的api通用包,可以使用Payment支付Entity -->
        <dependency>
            <groupId>com.atguigu.springcloud</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>
        <!-- SpringBoot整合Web组件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--日常通用jar包配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

在这里插入图片描述

3.写yml

server:
  port: 83


spring:
  application:
    name: nacos-order-consumer
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848


#消费者将要去访问的微服务名称
service-url:
  nacos-user-service: http://nacos-payment-provider 

4.主启动类

@EnableDiscoveryClient
@SpringBootApplication
public class OrderNacosMain83
{
    public static void main(String[] args)
    {
        SpringApplication.run(OrderNacosMain83.class,args);
    }
} 

5.业务类
config配置类

@Configuration
public class ApplicationContextBean
{
    @Bean
    @LoadBalanced  //负载均衡(结合ribbon做负载均衡时一定要加这个注解)
    public RestTemplate getRestTemplate()
    {
        return new RestTemplate();  //因为nacos自带ribbon,所以就可以使用RestTemplate
    }
}

Controller类

@RestController
public class OrderNacosController
{
    @Resource
    private RestTemplate restTemplate;

    @Value("${service-url.nacos-user-service}")  //读取yml配置文件里的值
    private String serverURL;

    @GetMapping("/consumer/payment/nacos/{id}")
    public String paymentInfo(@PathVariable("id") Long id)
    {
        return restTemplate.getForObject(serverURL+"/payment/nacos/"+id,String.class);
    }

}

6.测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、Nacos作为配置中心—基础配置

1.建客户端3377

1.建Module

这里是引用

2.改pom

    <dependencies>
        <!--nacos-config-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!--nacos-discovery-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--web + actuator-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--一般基础配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

3.写yml
bootstrap优先级高于application, 全局的配置放到bootstrap,自己的放到application

①bootstrap.yml

# nacos配置
server:
  port: 3377

spring:
  application:
    name: nacos-config-client  
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #Nacos作为服务注册中心地址
      config:
        server-addr: localhost:8848 #Nacos作为配置中心地址
        file-extension: yaml #意思就是3377可以去8848上面读取yml的配置文件
 

②application.yml

spring:
  profiles:
    active: dev #表示开发环境

以上这两个配置的意思就是3377你要去配置中心8848Nacos里去拉一个dev的配置文件

4.主启动类

@EnableDiscoveryClient
@SpringBootApplication
public class NacosConfigClientMain3377
{
    public static void main(String[] args) {
            SpringApplication.run(NacosConfigClientMain3377.class, args);
    }
}

5.业务类

@RestController
@RefreshScope //在控制器类加入@RefreshScope注解使当前类下的配置支持Nacos的动态刷新功能。
public class ConfigClientController
{
    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/config/info")
    public String getConfigInfo() {
        return configInfo;
    }
}

6.在Nacos中添加配置信息

DataId如何设置?在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.测试报错

在这里插入图片描述
在这里插入图片描述

8.测试

在这里插入图片描述
在这里插入图片描述

9.测试动态刷新功能

在这里插入图片描述
在这里插入图片描述

四、Nacos作为配置中心—分类配置

1.当前的问题

在这里插入图片描述

2.关于命名空间—分组—DataID

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.1三种方案加载配置 之 DataID方案

1.新建两个 同一命名空间下 同一分组下 不同命的两个DataID

在这里插入图片描述

在这里插入图片描述

2.修改yml

在这里插入图片描述

3.测试

在这里插入图片描述
在这里插入图片描述

3.2三种方案加载配置 之 Group方案

1.新建两个同一命名空间下 不同分组的 同名的DataID

在这里插入图片描述
在这里插入图片描述

2.改yml

在这里插入图片描述

3.测试

在这里插入图片描述
在这里插入图片描述

3.3三种方案加载配置 之 Namespace方案

1.新建两个命名空间

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.新建三个同一命名空间下、不同分组、同名的DataID

在这里插入图片描述
在这里插入图片描述

2.改yml

在这里插入图片描述
寻找命名空间id为那么一长串的、DEV_Group分组下的nacos-config-client-dev.yaml

3.测试

在这里插入图片描述
在这里插入图片描述

五、Nacos集群(极其重点)

1.集群需要什么?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.Windows中切换数据库的步骤

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.安装Linux版本的nacos

nacos解压在/user/local/nacos/里面(注意,你当时安装在/user而不是/usr目录下了)
在这里插入图片描述
在这里插入图片描述

一个nacos你可以startup 8848启动,但现在要安装三个nacos,那么就需要改nacos脚本,让它们的端口变成3333、4444、5555然后startup -p 3333

4.Linux中切换数据库

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.Nacos集群的配置

一个nacos你可以startup 8848启动,但现在要安装三个nacos,那么就需要改nacos脚本,让它们的端口变成3333、4444、5555然后startup -p 3333

1.指定nacos集群的端口

在这里插入图片描述
在这里插入图片描述

2.改startup.sh

你还得修改startup.sh告诉启动器这些端口的存在,这样启动时才能集群启动
在这里插入图片描述
(修改内容略去)

6.加入Nginx

在这里插入图片描述

7.测试1

1.启动nacos集群

在这里插入图片描述
在这里插入图片描述

可能会出现的问题:
在这里插入图片描述
可以看到你的集群只启动了两个,不要怀疑其他配置的问题,就是你内存问题,你可以到/user/local/nacos/nacos/bin目录下vi startup.sh来修改单个节点占用内存(参考网上的);或者扩大虚拟机内存也许。这样就可以启动三个

另外,如果http://192.168.56.103:3333/nacos还有http://192.168.56.103:4444/nacos还有http://192.168.56.103:5555/nacos都可以访问,那才说明你的三个集群都没有问题

2.启动nginx

在这里插入图片描述

启动nginx可能会报如下错,你只需要建一下该文件即可
在这里插入图片描述

3.访问
注意:以前nginx的默认端口是80所以直接访问192.168.56.103就可以出现nginx的登录页面,现在行不通了,因为你改过端口了。

访问:http://192.168.56.103:1111/nacos/#/login,账号密码都是nacos

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

8.测试2

微服务cloudalibaba-provider-payment9002启动注册进nacos集群

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乘风破浪的牛马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值