1. nacos简介

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

从上面的介绍就可以看出,nacos的作用就是一个注册中心,用来管理注册上来的各个微服务。

2. nacos实战入门

接下来,我们就在现有的环境中加入nacos,并将我们的两个微服务注册上去。

2.1 搭建nacos环境  

1: 安装nacos

下载地址: https://github.com/alibaba/nacos/releases

下载zip格式的安装包,然后进行解压缩操作

2: 启动nacos

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

 3: 访问nacos

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

2.2 将商品微服务注册到nacos(主要代码可看Nacos Discovery--服务治理篇)

接下来开始修改 shop-product 模块的代码, 将其注册到nacos服务上

1. pom.xml中添加nacos的依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2. 在主启动类上添加nacos的开启注解

@EnableDiscoveryClient //开启nacos的注解

3. 在配置文件中添加nacos的配置 

spring.cloud.nacos.server-addr=192.168.0.69:8848

4. 启动服务, 观察nacos的控制面板中是否有注册上来的商品微服务

2.3 将订单微服务注册到nacos

接下来开始修改 shop_order 模块的代码, 将其注册到nacos服务上

1. pom.xml中添加nacos的依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
</dependency>

2. 在主启动类上添加nacos的开启注解

@EnableDiscoveryClient //开启nacos的注解

3. 在配置文件中添加nacos的配置 

spring.cloud.nacos.server-addr=192.168.0.69:8848

 4. 启动服务, 观察nacos的控制面板中是否有注册上来的商品微服务

5. 修改OrderController中的代码 

@RestController
@RequestMapping("order")
public class OrderControllerHandWrite {
    @Autowired
    private OrderService orderService;
    @Autowired
    private RestTemplate restTemplate;
    @Autowired
    private DiscoveryClient discoveryClient;
    @GetMapping("saveOrder")
    public String saveOrder(Integer pid,Integer num){
        Order order=new Order();
        order.setUsername("yyk");
        order.setNumber(num);
        order.setUid(1);
        order.setPid(pid);

        List<ServiceInstance> instances = discoveryClient.getInstances("shop-product");
        int index= (int) (Math.random()*instances.size());
        ServiceInstance instance = instances.get(index);


        Product product=restTemplate.getForObject(instance.getUri()+"/product/findById/"+pid,Product.class);
        order.setPname(product.getPname());
        order.setPprice(product.getPprice());
        orderService.saveOrder(order);
        return "下单成功";
    }
}

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

务。

6. 启动服务

观察nacos的控制面板中是否有注册上来的订单微服务,然后通过访问消费者服务验证调用是否成功.

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐