二. Nacos 作为注册中心的简单使用

一. 简单解释

  1. Nacos 可以作为注册中心,服务提供方以指定名称注册到 Nacos 上,服务消费方通过该名称在注册中心获取服务列表,本地负载进行调用
  2. Nacos 作为注册中心与其它注册中心的不同
    在这里插入图片描述
    在这里插入图片描述
  3. Nacos 底层通过 DiscoveryClient 实现服务的注册与发现 (SpringBoot中启动类添加 @EnableDiscoveryClient),内部整合了Ribbon 支持负载均衡
  4. SpringBoot 项目 Nacos 作为注册中心的使用步骤
  • 启动运行 Nacos 获取到 Nacos 地址
  • 创建服务提供方,服务消费方微服务
  • pom 文件中引入支持 Nacos 作为注册中心的依赖
  • yml 文件中配置注册服务获取服务的 Nacos 地址
  • 服务提供方 yml 文件中配置暴露的端点
  • 启动类添加 @EnableDiscoveryClient 注解修饰,开启 Naocs 的服务注册与发现功能

二. 服务提供方

  1. pom 文件中引入 nacos-discovery 依赖
		<!-- SpringCloud ailibaba nacos-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <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>
  1. yml 文件中增加 Nacos 相关配置
server:
  port: 9001 #当前服务端口号

spring:
  application:
    name: nacos-payment-provider #当前服务名称
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #Nacos服务注册中心地址,将当前服务注册到Nacos上
#配置当前服务暴露的端点"*"代表所有
management:
  endpoints:
    web:
      exposure:
        include: '*'
  1. 启动类增加 @EnableDiscoveryClient 修饰
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
//Nacos 底层通过 DiscoveryClient 实现服务的注册与服务信息的获取
@EnableDiscoveryClient
public class NacosPaymentMain9001 {
    public static void main(String[] args) {
        SpringApplication.run(NacosPaymentMain9001.class,args);
    }
}
  1. 编写提供服务的接口
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注解读取配置文件
    @Value("${server.port}")
    private String serverPort;

    @GetMapping(value = "/payment/nacos/{id}")
    public String getPayment(@PathVariable("id") String id) {
        return "服务提供方端口号: " + serverPort + ": " + id;
    }
}

三. 服务消费方

  1. pom 文件中引入依赖,针对 Nacos 作为注册中心部分与提供方相同
  2. yml 文件
server:
  port: 83 #当前服务端口号
spring:
  application:
    name: nacos-order-consumer # 当前服务名称
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址,服务消费方通过该地址获取服务,并将自身注册到 Nacos上

#通过配置文件创建服务消费方调用地址变量,
#在代码中调用服务时直接读取该变量即可(实现代码配置分离)
service-url:
  nacos-user-service: http://nacos-payment-provider
  1. 此处通过 RestTemplate 调用服务消费方进行实例,创建 RestTemplate 配置类
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 ApplicationConfig {
    @Bean
    @LoadBalanced //开启负载
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}
  1. 通过 RestTemplate 调用服务消费方进行消费
@RestController
public class ConsumerController {

    @Autowired
    private RestTemplate restTemplate;

    private String urlName = "nacos-payment-provider";
    
    @GetMapping("/nacos/consumer/payment/{id}")
    public String consumerTest(@PathVariable("id") String id) {
        return restTemplate.getForObject("http://" + urlName + "/payment/nacos/" + id, String.class);
    }

    //在yml文件中统一配置了服务消费方的地址,实现配置代码分离
    //通过 @Value 注解读取配置文件方式,读取url
    //service-url:
    //  nacos-user-service: http://nacos-payment-provider
    @Value("${service-url.nacos-user-service}")
    private String serverURL;

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

}
  1. 启动类添加 @EnableDiscoveryClient 注解
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient //底层通过 DiscoveryClient 实现服务发现与注册功能
public class NacosConsumerMain83 {
    public static void main(String[] args) {
        SpringApplication.run(NacosConsumerMain83.class,args);
    }
}
  1. 此时启动 Nacos ,启动服务提供方, 启动服务消费方,访问 Nacos
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值