Nacos知识掌握【快速入门】

news2024/11/17 23:25:10

在这里插入图片描述

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

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

\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?"下单成功":"下单失败";
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/756791.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第十章:PSPNet——金字塔场景解析网络

0.摘要 场景解析对于无限制的开放词汇和多样化的场景是具有挑战性的。在本文中&#xff0c;我们通过金字塔池化模块和提出的金字塔场景解析网络&#xff08;PSPNet&#xff09;&#xff0c;利用全局上下文信息的能力&#xff0c;通过基于不同区域的上下文聚合&#xff0c;来处理…

五种最新优化算法(SWO、ZOA、EVO、KOA、GRO)求解23个基准测试函数(含参考文献及MATLAB代码)

一、五种算法简介 &#xff08;1&#xff09;蜘蛛蜂优化算法SWO 蜘蛛蜂优化算法&#xff08;Spider wasp optimizer&#xff0c;SWO&#xff09;由Mohamed Abdel-Basset等人于2023年提出&#xff0c;该算法模型雌性蜘蛛蜂的狩猎、筑巢和交配行为&#xff0c;具有搜索速度快&a…

Leetcode 43 字符串相乘

Leetcode43字符串相乘 题解1&#xff08;按位计算&#xff09; 给定两个以字符串形式表示的非负整数 num1 和 num2&#xff0c;返回 num1 和 num2 的乘积&#xff0c;它们的乘积也表示为字符串形式。 注意&#xff1a;不能使用任何内置的 BigInteger 库或直接将输入转换为整…

Ansible 自动化运维工具(完善版)

目录 Ansible概述 Ansible特点 Ansible应用 1、使用者 2、Ansible工具集合 3、作用对象 Ansible的搭建 环境 ansible主机 1、ansible 2、Ansible-doc Ansible模块 1.command模块 2.shell模块 3.raw模块 Ansible概述 Ansible是最近非常火的一款开源运维自动化工具…

Verdi分析有限状态机

Verdi平台包括最先进的结构可视化和分析工具&#xff0c;其中&#xff0c;nTrace用于源代码&#xff0c;nWave用于波形&#xff0c;nSchema用于原理图/逻辑图&#xff0c;nState用于有限状态机&#xff08;FSM&#xff09;。本节将对nState的使用进行介绍。 为了简单起见&#…

软件测试(测试用例 )—— 写用例无压力

软件测试——用例篇 一、概念 测试用例的基本概念&#xff1a; 测试用例&#xff08;Test Case&#xff09;是为了实施测试而向被测试的系统提供的一组集合&#xff0c;这组集合包含&#xff1a;测试环境、操作步骤、测试数据、预期结果等要素 。 主要步骤&#xff1a; 测试…

企业数字化营销怎么做?企业数字化营销系统怎么选择?

数字化营销是在不改变原有营销本质的前提下&#xff0c;借助数字化平台&#xff0c;把营销集成在系统或者说平台&#xff0c;通过平台的整合发力&#xff0c;改变传统营销压力及规避一些营销困难&#xff0c;实现数据留痕平台&#xff0c;用数据反哺运营与营销&#xff0c;让营…

jdk动态代理案例和实现原理

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是「奇点」&#xff0c;江湖人称 singularity。刚工作几年&#xff0c;想和大家一同进步&#x1f91d;&#x1f91d; 一位上进心十足的【Java ToB端大厂…

visio插入mathtype保存时报错“DOS共享冲突”解决方案

软件版本 软件版本VisioMicrosoft Visio 专业版2019WordMicrosoft Office LTSC 专业增强版 2021MathType7.4.10.53WindowsWindows 10 家庭中文版 22H2 19045.3208 现象 无论是从Word直接“粘贴”到Visio或从Visio“插入→对象”插入“MathType 7.0 Equation”&#xff0c;在…

如何为SoC做ARM CPU适配——以裸核使用malloc为例

本文任务&#xff1a;为陌生的SoC平台编写基础软件&#xff0c;适配 malloc() 函数 0 如何为SoC做ARM CPU适配 今时不同往日&#xff0c;我们平时开发/娱乐接触到的消费级MCU/MPU基本山都是包含处理核与一系列外设的SoC。如果熟悉裸片开发&#xff0c;一定会在厂家提供的标准…

运营工具篇

既然要做点事&#xff0c;至少要先做到万事俱备只欠东风。 我们也不用把研发产品看得太神圣&#xff0c;比如拿一张纸做出来一个会旋转的纸杯&#xff0c;碰巧有一群人喜欢它并且愿意为它付费&#xff0c;那么剩下要做的是什么&#xff1f;把这个纸杯量产并送到目标用户面前。…

Baklib团队拜访深证通,加强与合作企业沟通

2023年7月11日&#xff0c;Baklib商务经理、运营经理拜访了深圳证券通信有限公司&#xff08;以下简称为&#xff1a;深证通&#xff09;。 2023年7月11日&#xff0c;Baklib商务经理、运营经理拜访了深圳证券通信有限公司&#xff08;以下简称为&#xff1a;深证通&#xff09…

Java程序员需要掌握的前端知识(一)

对于前端知识&#xff0c;需要进一步巩固和加强&#xff0c;进入企业之后&#xff0c;要具备一定的接口调试&#xff0c;参数接收的能力&#xff0c;以及单体页面的开发&#xff0c;这里我学习一下前端知识巩固一下自身的技术栈和水平。本次笔记是跟学黑马的同名课程&#xff0…

2-5 构建聚合工程

父项目 新建 子模块 创建 父项目的pom文件 自动添加了模块引用 1. 聚合工程里可以分为顶级项目&#xff08;顶级工程、父工程&#xff09;与子工程&#xff0c;这两者的关系其实就是父子继承的关系 子工程在maven里称之为模块&#xff08;module&#xff09;&#xff0c;模…

redis和mongodb数据库的基本操作

目录 一、redis基本操作 1、 string类型数据的命令操作&#xff1a; 2、 list类型数据的命令操作&#xff1a; 3、 hash类型数据的命令操作 4、Keys相关的命令操作 二、MongoDB 基本操作作业 1. 查找练习 2.增加、更新、删除作业 &#xff1a; 3.使用之前的grade数据库…

【开发者指南】MyEclipse是如何支持AngularJS的?

MyEclipse在2015 CI 7版本中就引入了对AngularJS的支持&#xff0c;接着往下看&#xff0c;本文将介绍它包含的功能特性。 MyEclipse v2023.1.1离线版下载 1. 支持AngularJS MyEclipse对AngularJS的初始支持在MyEclipse 2015 CI 7中可用&#xff0c;后续版本将提供更多的Ang…

linux进程间通信的本质

因为进程间具有独立性&#xff0c;你们想用进行进程间通信&#xff0c;难度还是比较大的。 进程间通信的本质就是让不同的进程看到同一份资源。 为什么要进行进程间通信——交互数据、控制、通知等目标 进程间通信的技术背景 进程是具有独立性的。虚拟地址空间页表 保证进程运…

Java基础---常用类大全以及各数据结构的方法大全

目录 前言 一、Math类 二.Scanner类 三、String类、StringBuilder和StringBuffer类 &#x1f496;String类 &#x1f496;StringBuilder和StringBuffer 四.Arrays类 五.Random类 六.时间类 七.ArrayList顺序表 八、LinkedList与链表 九.Stack栈和Queue队列 十.Pri…

UE5 DLC

前言 在网上找了很多文档,并没有介绍DLC如何创建,但是对比多篇文档后,可以总结为DLC也是Pak包,本质上还是补丁包,B站上有一篇视频介绍了: [UE4]如何在虚幻4游戏里添加DLC的教程(中英机翻)_哔哩哔哩_bilibili 但是也感觉不对,因为要改Build.cs文件。故研究了一下插件式…

【python】python五月国内社会消费品零售总额数据分析(代码+数据+报告)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、51CTO技术博主 &#x…