Nacos知识掌握【快速入门】

在这里插入图片描述

通过上面的调用图会发现,除了微服务,还有一个组件是服务注册中心,它是微服务架构非常重要

的一个组件,在微服务架构里主要起到了协调者的一个作用。注册中心一般包含如下几个功能:

\1. 服务发现:

服务注册:保存服务提供者和服务调用者的信息

服务订阅:服务调用者订阅服务提供者的信息,注册中心向订阅者推送提供者的信息

\2. 服务配置:

配置订阅:服务提供者和服务调用者订阅微服务相关的配置

配置下发:主动将配置推送给服务提供者和服务调用者

\3. 服务健康检测

检测服务提供者的健康情况,如果发现异常,执行服务剔除

常见的注册中心组件有哪些?

nacos:—它是阿里巴巴的组件.-----70%

eureka: —它是netflix公司的组件—该组件已经停止更新—29% [早期的微服务项目]

zookeeper—它是apache公司的

consul:

一、什么是Nacos?🍉

概览
欢迎来到 Nacos 的世界!

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

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

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

Nacos文档https://github.com/alibaba/nacos/releases

在这里插入图片描述

二、Nacos的使用🍉

1.下载Nacos🥝

Nacos官方地址:Nacos快速开始
Nacos官方下载地址:https://github.com/alibaba/nacos/releases
Nacos码云下载地址(更快):https://gitee.com/mirrors/Nacos/releases

我这里下载的是1.4版本
在这里插入图片描述

下载好把压缩包解压即可

2.启动Nacos🥝

默认它启动模式为–集群模式—修改它为单机模式

打开解压的文件夹
在这里插入图片描述
打开bin目录下的startup.cmd 脚本文件

在这里插入图片描述
更改脚本命令信息

在这里插入图片描述
双击脚本命令启动Nacos

在这里插入图片描述
访问:

http://localhost:8848/nacos

账号和密码: nacos

在这里插入图片描述
登录成功
在这里插入图片描述

三、在微服务项目中使用Nacos🍉

此次演示工程为上一篇文章创建的微服务工程

1.微服务注册和拉取注册中心的内容🥝

在生产方使用

(1)引入nacos的依赖🍓

在这里插入图片描述

<!--nacos的依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

(2) 配置注册中心的地址–默认本地端口号8848🍓

在这里插入图片描述

#为微服务定义名称
spring.application.name=lzq01
#nacos注册中心的地址
spring.cloud.nacos.discovery.server-addr=localhost:8848
#为微服务创建组名
spring.cloud.nacos.discovery.group=AAA

(3)查看🍓

在这里插入图片描述

2.消费端使用🥝

(1)引入nacos的依赖🍓

在这里插入图片描述

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

(2)编写配置文件🍓

在这里插入图片描述

#为微服务定义名称
spring.application.name=lzq02
#nacos注册中心的地址
spring.cloud.nacos.discovery.server-addr=localhost:8848
#是否在Nacos登记  默认为true登记
spring.cloud.nacos.discovery.register-enabled=false

(3)更改controller层代码🍓

在这里插入图片描述

package com.lzq.controller;

import com.lzq.Order;
import com.lzq.Product1;
import com.lzq.service.OrderSercice;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import java.util.List;
import java.util.Random;

@RestController
@RequestMapping
public class OrderController {
    @Autowired
    private OrderSercice orderSercice;
    @Autowired
    private RestTemplate restTemplate;

    @Autowired//在springcloud中封装一个DiscoveryClient类  该类可以获取注册中心的服务信息
    private DiscoveryClient discoveryClient;

    @GetMapping("/aaa")
    public String insert(int pid,int num){
        //通过DiscoveryClient类获取登记名为“lzq01”工程信息
        List<ServiceInstance> instances = discoveryClient.getInstances("lzq01");
        //通过随机数将随机获取服务器中的工程uri
        int i1 = new Random().nextInt(instances.size());
        ServiceInstance serviceInstance = instances.get(i1);
        String path = serviceInstance.getUri().toString();

        System.out.println(pid);
        //构建一个订单对象
        Order order=new Order();
        order.setUid(1);//未来登录后一定能获取当前用户信息。
        order.setUsername("阿娇");
        order.setNumber(num);
        //商品信息---调用商品微服务的接口。---如何调用商品微服务的接口?--远程调用。[1]借助rabbitmq  [2]http远程调用【在java端模拟浏览器调用】。
        //spring封装了http远程调用 RestTemplate.默认该类没有交于spring容器管理. 创建一个配置类 写一个方法@Bean注解
        
        Product1 product = restTemplate.getForObject(path+"/aaa/bbb/"+ pid, Product1.class);
        System.out.println(product);
        order.setPid(product.getPid());
        order.setPname(product.getPname());
        order.setPprice(product.getPprice());

        int i=orderSercice.inset(order);
        return i>0?"下单成功":"下单失败";
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值