微服务速成-Nacos

引入服务发现依赖

Nacos:微服务当中的功能:注册中心和服务发现,配置中心

服务注册:

引入依赖spring-cloud-starter-alibaba-nacos-discovery

填写好配置类server-addr之后,即可便携的将当前服务注册到注册中心

下载Nacos,开箱即用

快速启动命令:start-up.cmd -m standalone(单节点模式)

默认地址 localhost:8848/nacos

远程调用依赖

spring-cloud-starter-openfeign

rest template.getforobject(url)(刚入门先学基础的,后面会升级)

负载均衡

spring-cloud-starter-loadbalancer

在Resttemplate加上@Loadbalance注解即可

java 复制代码
 第一段:配置类(声明 RestTemplate Bean)

  @Configuration
  public class OrderServiceConfig {

      @Bean
      @LoadBalanced  <----负载均衡注解
      public RestTemplate restTemplate() {
          return new RestTemplate();
      }
  }

  第二段:Controller(调用方)

  @RestController
  public class OrderController {

      @Autowired
      private RestTemplate restTemplate;

      @GetMapping("/order")
      public Order getOrder(@RequestParam Long productId) {

          // 关键:直接用服务名,LoadBalancer 自动解析成 ip:port
          String url = "http://service-product/product?id=" + productId;
          Product product = restTemplate.getForObject(url, Product.class);

          Order order = new Order();
          order.setId(1);
          order.setPrice(8888);
          order.setProducts(Collections.singletonList(product));
          return order;
      }
  }

  第三段:被调用的服务接口(提供方)

  @RestController
  public class ProductController {

      @GetMapping("/product")
      public Product getProduct(@RequestParam String productId) {
          Product product = new Product();
          product.setId(productId);
          product.setName("商品" + productId);
          return product;
      }
  }

配置中心依赖

spring-cloud-starter-alibaba-nacos-config

Nacos配置中心

命名空间:最大的分类,区别当前是开发或者测试等环境

设置完命名空间后,服务列表也会对应的变化

在项目中选择命名空间选择想要引入的命名空间的配置

spring.cloud.nacos.config.namespace

也可以把项目启动动特定的命名空间

配置如下

spring.cloud.nacos.discovery.namespace=你的命名空间ID

配置管理功能

可以选择一个环境,进行配置管理

分组其实就是区分一些公共配置和数据库配置的,正常来说都写在一个配置文件里就行

在项目中引入配置

在Spring.config.import下填写好刚刚创建的配置,开头是配置的名字如service-order.properties,后面接上分组?group=common

配置动态刷新

有两种方法,分别是 @ConfigurationProperties(prefix="order") @Refreshscope

我们在项目写一个测试类

并且在配置类里面写好默认值

当我们在Nacos里面更新配置后,我们的项目配置也会进行更新

同时我们编写一个监听方法,来监听配置的变化,只需要加上监听注解就可以监听事件,当然还有 NacosConfigManager

( NacosConfigManager更加底层,作为了解

控制台输出了变换后的配置值

总体来说,当出现配置冲突时,比如同名称什么的:原则是远程配置大于本地,新的配置大于老的配置,即Nacos 配置 > 本地 application.properties