美文网首页
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