Nacos服务注册和发现

Nacos服务注册和发现


博客导航带你有序的阅读和学习!


依赖

Nacos服务注册和发现的依赖

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

项目结构

本示例的项目结构如下:

在这里插入图片描述

服务提供者

服务提供方:是指提供可复用和可调用服务的应用方

使用Idea 的SpringBoot项目引导器创建SpringBoot项目

导入依赖

<dependencies>
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>0.9.0.RELEASE</version>
  </dependency>

  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>

  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
  </dependency>
</dependencies>

编写测试Controller

@SpringBootApplication
@EnableDiscoveryClient //启动服务注册发现
public class ServiceProviderApplication {

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

    @RestController
    class EchoController {
        @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
        public String echo(@PathVariable String string) {
            return "Hello Nacos Discovery " + string;
        }
    }
}

注意:使用@EnableDiscoveryClient 注解来启用服务注册发现机制。

配置properties

server.port= 8070
spring.application.name= service-provider
spring.cloud.nacos.discovery.server-addr= 127.0.0.1:8848

服务消费者

服务消费者:是指会发起对某个服务调用的应用方

导入依赖

这里没有什么不同,与服务提供者是一样的。

<dependencies>
  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>0.9.0.RELEASE</version>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
  </dependency>
</dependencies>

编写消费服务示例

package com.ooyhao.serviceconsumer;

import org.springframework.beans.factory.annotation.Autowired;
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.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
@EnableDiscoveryClient
public class ServiceConsumerApplication {

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

    @LoadBalanced
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    @RestController
    public class TestController {

        private final RestTemplate restTemplate;

        @Autowired
        public TestController(RestTemplate restTemplate) {this.restTemplate = restTemplate;}

        @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
        public String echo(@PathVariable String str) {
            return restTemplate.getForObject("http://service-provider/echo/" + str, String.class);
        }
    }
}

这里使用RestTemplate进行调用,可以看出,此时这里可以看到使用的是服务名称 service-provider . 而不是使用IP地址。这也是服务注册中心的存在的重要意义,我们不需要知道服务提供方的IP地址,而只需要知道服务名,将IP地址和服务名的映射关系交给注册中心去动态维护,这样,如果同一个服务的IP地址变了,我们也不需要修改服务器消费者。

配置properties

server.port=8080
spring.application.name= service-consumer
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

启动服务提供者和消费者项目。

我们可以使用spring.cloud.nacos.discovery.enabled=false 来禁用。

查询服务列表

此时我们再查询服务列表,如图所示,服务提供者和服务消费者已经成功注册到服务注册中心了。

在这里插入图片描述

测试服务调用

访问localhost:8080/echo/HelloNacos,结果如下:

在这里插入图片描述

此时,简单的服务注册和发现已经测试成功了。So Easy 有不有!

更多配置信息

https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html#_more_information_about_nacos_discovery_starter_configurations

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值