Spring Cloud Alibaba:使用Nacos实现服务注册与发现

附:Nacos 文档

附:【github】nacos下载地址

ps:直接从github上下载nacos安装包会特别慢,网上的改host办法使用过,没有什么效果,建议使用VPN,或者使用别人已经下载好的;

附:【csdn】nacos-server-1.1.0.tar.gz

tar -zxvf nacos-server-1.1.0.tar.gz  解压
cd nacos
cd bin
sh startup.sh -m standalone 启动

出现下图,表示启动成功。 

登录http://192.168.101.16:8848/nacos/index.html,并输入账号密码;均为nacos。出现如下界面; 

注:版本对应:

项目结构:

1.模块:alibaba-nacos-discovery-server:

控制层:

package com.lucifer.demo.controller;


import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
/**
 * @author: lucifer
 * @date: 2019/8/6
 * @description:
 */
@Slf4j
@RestController
public class TestController {

    @GetMapping("/hello/{name}")
    public String hello(@PathVariable(name = "name") String name) {
        log.info("invoked name = " + name);
        return "hello " + name;
    }


}

springboot 启动类: (ps:@EnableDiscoveryClient 开启服务注册发现功能)

package com.lucifer.demo;

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

/**
 * @author Lucifer
 */
@EnableDiscoveryClient
@SpringBootApplication
public class AlibabaNacosDiscoveryServerApplication {

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

}

springboot 配置文件: 

spring:
  application:
    name: service-provider
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.101.16:8848

server:
  port: 8001

pom.xml:(主要jar包) 


    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
   

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Greenwich.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>0.2.2.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

启动:

2.模块:alibaba-nacos-discovery-client

1》springboot启动类:同alibaba-nacos-discovery-server 启动类,加上@EnableDiscoveryClient;

2》配置文件:

spring:
  application:
    name: service-consumer
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.101.16:8848

server:
  port: 8080

3》pom.xml同上

 控制层:

package com.lucifer.alibabanacosdiscoveryclient.controller;

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

/**
 * @author: lucifer
 * @date: 2019/8/6
 * @description:
 */
@EnableDiscoveryClient
@RestController
public class TestController {

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

    @Autowired
    private RestTemplate restTemplate;


    @GetMapping(value = "/hello/{str}")
    public String echo(@PathVariable(name = "str") String str) {
        return restTemplate.getForObject("http://service-provider/hello/" + str, String.class);
    }


}

启动:

再次访问http://192.168.101.16:8848/nacos/; 

postman测试:

1.localhost:8080/hello/zhangsan

 2.localhost:8001/hello/zhangsan

ps:

进入服务详情,点击下线后,如图:

再次去访问接口:服务提供者没有可用的实例

重新点上线,等待几秒-十几秒,再次去访问该接口:正常;

 
发布了187 篇原创文章 · 获赞 146 · 访问量 49万+

猜你喜欢

转载自blog.csdn.net/qq_37495786/article/details/98626432