美文网首页
Spring Cloud之Alibaba Nacos

Spring Cloud之Alibaba Nacos

作者: xiaoqiaobian | 来源:发表于2020-09-26 22:10 被阅读0次

    一、Nacos概念
    Nacos 是阿里巴巴在服务发现与配置管理领域开源的新产品,由在其内部生产上久经考验的相关产品如 Diamond,VIPServer 等演化而来。而其中的服务发现功能,在内部支撑着百万级的连接和亿级的 QPS 服务调用。

    Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

    Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

    服务(Service)是 Nacos 世界的一等公民。Nacos 支持几乎所有主流类型的“服务”的发现、配置和管理:

    支持服务类型 Nacos 的关键特性
    Kubernetes Service 服务发现和服务健康监测
    gRPC & Dubbo RPC Service 动态配置服务
    Spring Cloud RESTful Service 动态 DNS 服务
    服务及其元数据管理

    Nacos1.0

    • 构建简单易用的,服务相关的工具集,包括服务发现、配置管理、服务元数据存储、推送、一致性及元数据管理等;
    • 与包括Spring CloudKubernetesDubbo等开源生态做无缝的融合与支持,同时给这些生态带来很多面向生产时需要的优秀特性。

    Nacos2.0
    主要关注在统一服务管理、服务共享及服务治理体系的开放的服务平台的建设上,主要包括两个方面:

    • Dubbo 4.0 + Nacos 2.0 开放的服务平台
    • Kubernetes + Spring Cloud 统一服务管理


      nacosMap.jpg

    二、Nacos Spring Cloud 快速开始
    下载地址:https://github.com/alibaba/nacos/releases
    下载完成之后,解压。根据不同平台,执行不同命令,启动单机版Nacos服务:

    Windows cmd startup.cmd或者双击startup.cmd
    Linux/Unix/Mac sh startup.sh -m standalone
    ubuntu bash startup.sh -m standalone

    Nacos访问地址:http://localhost:8848/nacos
    默认账号:nacos,密码:nacos

    image.png

    三、构建应用接入Nacos注册中心
    在完成了Nacos服务的安装和启动之后,下面我们就可以编写两个应用(服务提供者与服务消费者)来验证服务的注册与发现了。

    服务提供者

    1.maven创建一个Spring Boot应用,命名为:spring-cloud-nacos-provider
    2.pom文件

        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.3.0.RELEASE</version>
        </parent>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <!--配置中心来做配置管理-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
                <version>2.2.1.RELEASE</version>
            </dependency>
            <!--服务注册/发现-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
                <version>2.2.1.RELEASE</version>
            </dependency>
            <!--模版引擎-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
            </dependency>
        </dependencies>
    

    3.创建NacosProviderApplication启动类

    //通过 Spring Cloud 原生注解 @EnableDiscoveryClient 开启服务注册发现功能
    @SpringBootApplication
    @EnableDiscoveryClient
    @Controller
    public class NacosProviderApplication {
        public static void main(String[] args) {
            SpringApplication.run(NacosProviderApplication.class,args);
        }
    
        @RequestMapping("/hello")
        public String hello(Map<String,Object> map) {
            map.put("name", "xiaoqiaobian");
            return "hello";
        }
    }
    

    4.resoures路径创建templates文件夹,添加hello.html

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
    <head>
        <title>Hello World!</title>
    </head>
    <body>
    Hello World <p th:text="${name}"></p>
    </body>
    </html>
    

    5.配置文件
    5.1创建application.yml配置文件

    #在 application.properties 中配置 Nacos server 端口号和地址:
    spring:
      #thymeleaf:
      cloud:
        nacos:
          discovery:
            server-addr: 127.0.0.1:8848
    server:
      port: 8000
    

    5.2创建bootstrap.properties配置文件

    #配置Nacos server地址,Nacos管理登陆地址
    spring.cloud.nacos.config.server-addr=127.0.0.1:8848
    #配置Nacos server应用名,在Nacos后台显示
    spring.application.name=xiaoqiaobian
    

    6.启动应用程序


    image.png

    进到nacos管理后台页面-服务管理-服务列表


    image.png
    服务消费者

    1、maven创建一个Spring Boot应用,命名为:spring-cloud-nacos-consumer
    2、编辑pom.xml中的依赖内容,与上面服务提供者的一样即可。
    3、创建NacosConsumerApplication启动类,自定义@Bean resultTemplate

    @SpringBootApplication
    @EnableDiscoveryClient
    public class NacosConsumerApplication {
        public static void main(String[] args) {
            SpringApplication.run(NacosConsumerApplication.class,args);
        }
    
        @Bean
        //@LoadBalanced
        public RestTemplate resultTemplate(){
            RestTemplate template = new RestTemplate();
            return template;
        }
    }
    

    4.配置文件一样的,把端口号修改为9000
    5.编写Controller类

    @RestController
    public class App {
    
        @Autowired
        RestTemplate restTemplate;
    
        @Autowired
        LoadBalancerClient loadBalancerClient;
    
        //消费服务
        @RequestMapping("/test")
        public String services() {
            //通过监听器获取实例对象
            ServiceInstance serviceInstance = loadBalancerClient.choose("xiaoqiaobian");
            //获取服务提供者的url
            String url = serviceInstance.getUri() + "/hello?name=" + "xiaoqiaobian";
            //将服务提供者的返回信息进行封装
            String result = restTemplate.getForObject(url, String.class);
            System.out.println(url);
            return result;
        }
    }
    

    消费服务,访问消费者的静态页面成功


    image.png
    image.png
    image.png

    相关文章

      网友评论

          本文标题:Spring Cloud之Alibaba Nacos

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