使用nacos的服务注册与发现

2021-09-26 11:22:16 浏览数 (5)

nacos-server的服务注册与发现的源码,

- https://cloud.tencent.com/developer/article/1881623

按照官方网站搭建的demo过程如下:

Nacos

官方网站: https://github.com/alibaba/nacos

案例demo参考网站: https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-discovery-en

使用依赖

代码语言:javascript复制
    <properties>
        <spring-cloud.version>2020.0.3</spring-cloud.version>
        <spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version>
        <springfox.version>3.0.0</springfox.version>
    </properties>

Nacos-client

下载

启动

  • bin目录下: startup.cmd -m standalone

可视化界面

  • http://localhost:8848/nacos
    • 账号: nacos
    • 密码: nacos

Provider

依赖

代码语言:javascript复制
 <dependencies>
        <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>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
    </dependencies>

配置文件

代码语言:javascript复制
spring:
  application:
    name: nacos-provider
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

启动类

代码语言:javascript复制
@EnableAutoConfiguration
@EnableDiscoveryClient
@ComponentScan
public class Provider {
    public static void main(String[] args) {
        SpringApplication.run(Provider.class);
    }
}

检查

nacos控制界面 -> 服务管理 -> 服务列表

另引入了springfox-boot-starterjar包,在http://127.0.0.1:8080/swagger-ui/index.html中看到接口

consumer

依赖

同Provider

配置文件

代码语言:javascript复制
spring:
  application:
    name: nacos-consumer
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
server:
  port: 8090

启动类

代码语言:javascript复制
@SpringBootApplication
@EnableDiscoveryClient
public class Consumer {
    public static void main(String[] args) {
        SpringApplication.run(Consumer.class);
    }
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
    @Autowired
    TestService testService;
    @Bean
    public ApplicationRunner applicationRunner(){
        return arguments -> {
            testService.echo();
        };
    }
}

测试类

代码语言:javascript复制
@Service
public class TestService {
    @Autowired
    private DiscoveryClient discoveryClient; 
    @Autowired
    private RestTemplate restTemplate;
    @Value("${spring.application.name}")
    private String appName;
    public void echo() {
        List<ServiceInstance> instances = discoveryClient.getInstances("nacos-provider");
        ServiceInstance serviceInstance = instances.get(0);
        String host = serviceInstance.getHost();
        int port = serviceInstance.getPort();
        String path = String.format("http://%s:%s/echo/%s", host, port, appName);
        System.out.println("request path:"  path);
        String object = restTemplate.getForObject(path, String.class);
        System.out.println("object = "   object);
    }
}

响应

代码语言:javascript复制
request path: http://***:8080/echo/nacos-consumer
object = Hello Nacos Discovery nacos-consumer

nacos控制台展示:

nacos-provider

DEFAULT_GROUP

1

1

1

false

详情|示例代码|订阅者|删除

nacos-consumer

DEFAULT_GROUP

1

1

1

false

详情|示例代码|订阅者|删除

0 人点赞