美文网首页
Spring Cloud Alibaba Nacos-服务发现与

Spring Cloud Alibaba Nacos-服务发现与

作者: 菜猿 | 来源:发表于2019-04-01 22:39 被阅读0次

本篇参考程序猿DD的Spring Cloud Alibaba博客,地址为:http://blog.didispace.com/spring-cloud-alibaba-1/

什么是Nacos

Nacos致力于帮助您发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

在接下里的教程中,将使用Nacos作为微服务架构中的注册中心(替代:eurekba、consul等传统方案)以及配置中心(spring cloud config)来使用。

启动Nacos

官网下载好Nacos安装包,然后解压

Nacos1.0版本需要使用0.2.2client端,否则会报错

  • Mac/Linux: sh startup.sh -m standalone
  • Windows: cmd startup.cmd -m standalone

启动之后,访问http://127.0.0.1:8848/nacos打开Nacos控制台
用户名/密码nacos

nacos-console.PNG

新建服务提供方

第一步: 创建SpringBoot应用:nacos-server-demo

第二步: pom文件引入jar包

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Finchley.SR1</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.6</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>0.2.1.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

第三步: 创建应用主类

@EnableDiscoveryClient
@SpringBootApplication
public class NacosServerDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(NacosServerDemoApplication.class, args);
    }
    
    @Slf4j
    @RestController
    static class HelloController {
        @GetMapping("/hello")
        public String hello(@RequestParam String name) {
            return String.format("hello %s", name);
        }
    }
}

第四步: 配置Nacos地址以及应用名

spring.application.name=nacos-server-demo
server.port=8001
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

第五步: 启动两个nacos-server-demo项目,端口分别为8001,8002

如果我们看到以下日志,证明nacos注册成功

2019-04-01 15:25:47.421  INFO 82708 --- [           main] o.s.c.a.n.registry.NacosServiceRegistry  : nacos registry, nacos-server-demo 10.0.75.1:8002 register finished

访问Nacos控制台http://127.0.0.1:8848/nacos可以看到服务已经注册到Nacos中

nacos-service-register.PNG

新建服务调用方

第一步: 创建SpringBoot应用:nacos-client-demo

第二步: pom文件引入jar包,同上

第三步: 创建应用主类

@EnableDiscoveryClient
@SpringBootApplication
public class NacosClientDemoApplication {

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

    @Slf4j
    @RestController
    static class TestController {

        @Autowired
        private LoadBalancerClient loadBalancerClient;

        @GetMapping("/test")
        public String test() {
            ServiceInstance instance = loadBalancerClient.choose("nacos-server-demo");
            String url = instance.getUri() + "/hello?name=" + "clay";
            RestTemplate restTemplate = new RestTemplate();
            String result = restTemplate.getForObject(url, String.class);
            return String.format("invoke url = %s, result = %s", url, result);
        }
    }
}

第四步: 配置Nacos服务地址以及应用名称

spring.application.name=nacos-client-demo
server.port=9000
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

第五步: 请求client端,可以看到请求到不同的server端

$ curl 127.0.0.1:9000/test
invoke url = http://192.168.1.103:8002/hello?name=clay, result = Hello clay
$ curl 127.0.0.1:9000/test
invoke url = http://192.168.1.103:8001/hello?name=clay, result = Hello clay

参考文档

相关文章

网友评论

      本文标题:Spring Cloud Alibaba Nacos-服务发现与

      本文链接:https://www.haomeiwen.com/subject/gwhvbqtx.html