SpringCloudAlibaba组件Nacos(作为注册中心)

Nacos:Dynamic Naming and Configuration Service
Nacos 是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台

简单说就是注册中心 + 配置中心
Nacos = Eureka + Config +Bus

Nacos概念
Nacos架构

本文讲述注册中心,配置中心参考:配置中心

官方文档:Nacos discovery
官方示例:Nacos Discovery Example

Nacos(作为注册中心)

Nacos Discovery动态服务发现

了解一下 Spring Cloud 应用如何接入 Nacos Discovery
官方文档

pom.xml 文件,引入 Nacos Discovery Starter。

 <dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
 </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>


    <!--spring-cloud-alibaba 版本统一管理-->
    <dependencyManagement>
        <dependencies>
            <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>
        </dependencies>
    </dependencyManagement>

配置文件中配置 Nacos Server 地址

peoperties

 spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

yml

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848   #这里的IP写127.0.0.1和localhost都行
  # 服务名
  application:
    name: gulimall-coupon
server:
  port: 7000

使用 @EnableDiscoveryClient 注解开启服务注册与发现功能

 @SpringBootApplication
 @EnableDiscoveryClient
 public class ProviderApplication {

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

 	@RestController
 	class EchoController {
 		@GetMapping(value = "/echo/{string}")
 		public String echo(@PathVariable String string) {
 				return string;
 		}
 	}
 }

启动 Nacos Server

1.需要获取 Nacos Server

我这里下载了windows版的Nacos Server,安装包取官方文档找下载地址。
https://github.com/alibaba/nacos/releases

2.启动 Server

进入解压后文件夹或编译打包好的文件夹,找到如下相对文件夹 nacos/bin,并对照操作系统实际情况之下如下命令。

#Linux/Unix/Mac 操作系统,执行命令 
sh startup.sh -m standalone
#Windows 操作系统,执行命令
cmd startup.cmd

这里遇到了问题1

验证

在浏览器输入此地址 http://127.0.0.1:8848/nacos/
http://localhost:8848/nacos/ 这两个都可以
登录账号:nacos
密码:nacos
服务启动后在此可以查看服务
在这里插入图片描述

遇到的问题

问题1

nacos在windows上启动失败
解决:
cmd窗口单机启动

startup.cmd -m standalone

详情可参考:https://blog.csdn.net/m0_37607945/article/details/107339265

下面的内容来源于:尚硅谷周阳

Nacos支持负载均衡

因为自己集成了Ribbon

在这里插入图片描述

如:order83来消费payment服务

在这里插入图片描述

9001和9002都有这样的接口

package com.atguigu.springcloud.alibaba.controller;

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;


@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;
    }
}

83的接口和配置

@LoadBalanced注解和RestTemplate配合

package com.atguigu.springcloud.alibaba.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);
    }

}

package com.atguigu.springcloud.alibaba.config;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;


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

验证

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

Nacos和其他注册中心的对比

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

curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值