SpringCloud-Alibaba-Nacos服务注册和配置中心--一篇入门

28 篇文章 0 订阅
7 篇文章 2 订阅

前言:
前四个字母分别为Naming和Configuration的前两个字母,最后的s为Service
一个更易于构建云原生应用的动态服务发现,配置管理和服务管理中心
Nacos 有自己独立的,注册和配置 服务端。不像Eureka我还得去起服务端才能注册。

Nacos支持AP和CP模式切换
如果不需要存储服务级别的信息且服务示例是通过 nacos-clien注册并且能够保持心跳上报,那么就可以选择AP模式。当前主流的cloud和dubbo服务,都适用与AP模式。AP模式为了服务的可能性减弱了一致性,因此AP模式下只支持注册临时的实例

如果需要在服务级别编辑或者存储信息那么是CP,K8S,DNS服务则适用CP模式,CP模式下则支持注册持久化实例,此时则是以Raft协议为集群运行模式,该模式下注册实例之前必须注册服务,如果不存在,则返回 错误

切换

curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'

Nacos = Eureka+Config+Bus
在这里插入图片描述

在这里插入图片描述
下载地址:https://nacos.io/zh-cn/index.html
在这里插入图片描述
我下载的win版的
在这里插入图片描述

下载解压:
在这里插入图片描述
启动前小插曲:
下载下来的nacos-server使用的时cluster集群模式,这个模式是要求使用mysql的
启动
所以需要改一下配置改成单机的

在这里插入图片描述
修改启动文件 standalone
在这里插入图片描述

D:\work\nacos\nacos\bin

双击startup.cmd
在这里插入图片描述

在这里插入图片描述
启动成功访问
http://localhost:8848/nacos
账号密码都是:nacos
在这里插入图片描述
登入后页面
在这里插入图片描述
使用示例:

pom 依赖
使用Nacos首先有cloud-alibaba的依赖

   <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2.1.1.BUILD-SNAPSHOT</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>

Nacos的依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

YML

server:
  port: 8089

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

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


启动类

package com.tang.cloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class NacosPaymentProvider8089 {

    public static void main(String[] args) {
        SpringApplication.run(NacosPaymentProvider8089.class,args);
    }

}

启动项目测试注册
刷新nacos 看到我闷得服务已经注册进去了
在这里插入图片描述

创建消费工程

nacos 再带负载均衡
pom:
消费项目

 <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

yml

server:
  port: 84


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


service-url:
  nacos-user-service: http://nacos-payment-provider

主启动类和以上一样
调用要借助RestTemplate

@Configuration
public class ApplicationContextConfig {
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate()
    {
        return new RestTemplate();
    }
}

controller

package com.tang.cloud.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;

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

    @Value("${service-url.nacos-user-service}")
    private String serverURL;

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

}

测试
nacos自带的父子均衡就是Ribbon
在这里插入图片描述
在这里插入图片描述
nacos配置中心
在这里插入图片描述
示例:
首先pom
nacos-config依赖

<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

bootstrap.yml

# nacos配置
server:
  port: 8091

spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #Nacos服务注册中心地址
      config:
        server-addr: localhost:8848 #Nacos作为配置中心地址
        file-extension: yml 

controller
@RefreshScope自动刷新配置

package com.tang.cloud.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RefreshScope //支持Nacos的动态刷新功能。
public class ConfigClientController
{
    @Value("${config.info}")
    private String configInfo;

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

配置nacos的配置yml
在这里插入图片描述
在这里插入图片描述

启动项目 访问 能读到配置就可以了

在这里插入图片描述
分组就可以切换配置
在这里插入图片描述
改yml
添加:group: tang

# nacos配置
server:
  port: 8091

spring:
  application:
    name: test
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #Nacos服务注册中心地址
      config:
        server-addr: localhost:8848 #Nacos作为配置中心地址
        file-extension: yml 
         group: tang

在这里插入图片描述
空间:
在这里插入图片描述
新建
在这里插入图片描述

在这里插入图片描述

此时就多出一个空间
在这里插入图片描述
在新空间 创建配置文件测试:
在这里插入图片描述
当然要修改yml文件
增加namespace: tang 就是创建空的唯一ID 让配置文件找到它

# nacos配置
server:
  port: 8091

spring:
  application:
    name: test
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #Nacos服务注册中心地址
      config:
        server-addr: localhost:8848 #Nacos作为配置中心地址
        file-extension: yml 
        group: tang
        namespace: tang

改好启动项目测试
在这里插入图片描述
nacos 集群 见一篇
https://blog.csdn.net/weixin_44520739/article/details/109842478

  • 44
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 61
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 61
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

  T

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

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

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

打赏作者

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

抵扣说明:

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

余额充值