zoukankan      html  css  js  c++  java
  • SpringCloudAlibaba-服务治理Nacos

    一:Nacos简介

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

    更多详情请移步官网(https://nacos.io/zh-cn/docs/quick-start.html)接下来我们就将上述环境中的product、order服务注册到nacos

    二:Nacos环境搭建

    2.1:安装nacos

    下载地址: https://github.com/alibaba/nacos/releases
    下载zip格式的安装包,然后进行解压缩操作

    2.2:启动nacos

    #切换目录
    cd nacos/bin
    #命令启动
    startup.cmd -m standalone

    2.3:访问nacos

    打开浏览器输入http://localhost:8848/nacos,即可访问服务, 默认密码是nacos/nacos如下图

     三:将商品(shop-product)微服务注册到nacos

    3.1:在pom.xml中添加nacos依赖

    <!--nacos客户端-->
    <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>

    3.2:在启动类上添加@EnableDiscoveryClient注解

    @SpringBootApplication
    @EnableDiscoveryClient //开启nacos注解
    public class ProductApplication {·····}

    3.3:在application.yml中添加nacos服务的地址

    spring:
      # 配置nacos信息
      cloud:
        nacos:
          discovery:
            server-addr: localhost:8848

    3.4:启动商品服务查看nacos控制面板是否成功注册

    四:注册shop-order微服务到nacos

    和前面shop-product注册方法一致 故省略、成功后如下图

     改造上篇博文中的下单过程(OrderController)

    OrderController注入依赖

    //专门负责服务注册和发现的,我们可以通过它获取到注册到注册中心的所有服务
    @Autowired
    private DiscoveryClient discoveryClient;

    调用示例(从nacos取商品服务信息)

        @GetMapping("/prod/{pid}")
        public Order order2(@PathVariable("pid") Integer pid){
            log.info(">>>客户下单,调用商品微服务查询商品信息<<<");
    
            //从nacos中获取服务地址 获取的是个list集群信息
            ServiceInstance instance = discoveryClient.getInstances("service-product").get(0);
            String url = instance.getHost() + ":" +instance.getPort();
            log.info(">>从nacos中获取到的微服务地址为:" + url);
            Product product = restTemplate.getForObject("http://"+url+"/product/"+pid, Product.class);
    
            log.info(">>商品信息,查询结果:" + JSON.toJSONString(product));
            Order order = new Order();
            order.setUid(1);
            order.setUsername("测试用户1");
            order.setPid(product.getPid());
            order.setPname(product.getPname());
            order.setPprice(product.getPprice());
            order.setNumber(1);
    //        orderService.save(order);
            return order;
        }

    启动结果

  • 相关阅读:
    内存溢出和内存泄漏的区别
    java 23种设计模式 深入理解
    关于安装office注册表权限的解决方法
    Tomcat在Linux上的安装与配置
    初窥Linux 之 我最常用的20条命令
    redis使用初体验
    学习进度条——第12周
    找水王
    学习进度条——第11周
    学习进度条——第10周
  • 原文地址:https://www.cnblogs.com/chenpt/p/13445229.html
Copyright © 2011-2022 走看看