技术点-Nacos 注册中心介绍 | 学习笔记

简介: 快速学习技术点-Nacos 注册中心介绍

开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot)技术点-Nacos 注册中心介绍学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/667/detail/11414


技术点-Nacos 注册中心介绍


目录:

一、用框架实现功能

二、Nacos

三、服务注册(serviceedu 为例)


一、用框架实现功能

第一个功能就是删除小节删除视频;

第二个功能就是删除课程删除视频。在我们的课程大纲页面中,

0306是章节,030611是小节,而我们当时章节删除的时候,如果有小节,那就不删,如果没有小节,那就删除。

但是小节删除的话有一个特点。当我们删除小节的时候,里面的视频我们也要删掉。

让我们找到当时删除小节的代码,在 EduVideoController 中找到代码:

//删除小节

//TODO 后面这个方法需要完善:删除小节时候,同时把里面视频删除@DeleteMapping(" {id}")

publicrR deleteVideo(@PathVariable String id) {

videoService.removeById(id): return R.ok();

//修改小节 TODO

第一种方法:

//删除小节

//TODO 后面这个方法需要完善:删除小节时候,同时把里面视频删除@DeleteMapping(" {id}")

publicrR deleteVideo(@PathVariable String id) {    

将删除代码放入这里,利用微服务划分成多个代码或者多个服务,而每个服务都是独立运行的,每个服务做他专门的功能,例如,在 edu 中,就专门做课程;在 oss中,做 os 操作;在 vod 中,专门做视频。

而我们刚才在 vod 中,写了一个方法:

//根据视频 id 删除阿里云视频

@DeleteMapping("removeAlyVideo/ {id}")

public R removeAlyVideo(@PathVariable String id) {

try{

T/初始化对象DefaultAcsClient client=InitVodCilent.initVodClient(ConstantVodUtils. ACCESS KEY ID.

//创建删除视频 request 对象

DeleteVideoRequest request =new DeleteVideoRequest();

//向request设置视频 id

request.setVideoIds(id);

//调用初始化对象的方法实现删除

client.getAcsResponse(request);

return R.ok():

}catch(Exception e) {

e.printStackTrace();

throw new GuliException(20001,"删除视频失败”);

可以将这段代码放入其中,但是这样的话就不是微服务了,那我们就需要通过 edu中的方式,去调 vod 中的删除方法,来实现我们的功能,这就叫微服务。

刚刚我们提到这两个服务是独立运行的,但是他们之间可以互相调用。那怎么调用呢?

这就需要我们使用到 spring cloud 的技术,通过 edu 去调 vod 的方法,因为在edu 中,我们只需要相关的,而 vod 中写视频的,edu 中调 vod 中的删除方法,把功能做到,这是一个实习场景。

在实际开发中,如果 edu 是你们这个组做到的,而 vod 是另一个组做到的模块,那就是你们组需要调其他组的模块来实现这样的功能。这个过程就是微服务调用。接下来画一个图来讲述这个过程。

image.png

edu 要怎么调用 vod 呢?

我们不能直接通过 edu 去调 vod,有的同学可能会想,把 edu 中的依赖调进去可以吗?

这个是可以的,但是如果这样的话,他就不叫微服务了。这两个要具有关联,但目前他们是没有关联的。就是 edu 和 vod 是独立的,没有什么依赖的关联,要关联,就不要微服务了,但他也不能仅依赖关联,所以如何从 edu 调用 vod,这就是我们要解决的问题。

现在edu中,有删除小节的方法,而我们还需要删除视频,因为是微服务结构,所以我们把删除视频的方法写在了vod中,想通过edu去调vod中的方法,那么该如何做到呢?

按照微服务方式,我们需要模块之间的调用,不能把它引入。引入之后,他就不叫微服务了。

我们需要让他是独立运行的部分,就是801和803。怎么做到?

在我们进行的时候,需要使用到 spring cloud 中的第一个组件:注册中心,即 nacos,需要我们把这两个模块儿或者两个服务先在注册中心进行注册。这是我们要做的第一步。在注册中心注册后,他们就能实现互相的调用。这就是我们的一种做法。

为什么会实现呢?

注册中心就像房产中介,这就是一个很典型的注册中心的案例。

房产中心是连接租房者和房东之间的桥梁,比如目前我有一套房,我想去出租,如果我要出租的话,找不到别人要租这个房子,我应该怎么做呢?我把我的房子放在注册中心进行注册,详细说出房子的特点,只要每月给我金钱,我就可以把房子租出去,就是这么一个过程。

在里边儿进行注册,在注册之后,如果班上有某同学想要去租房,来到注册中心,那房产中心就会把登记好的房子给做出介绍,说出房子的特点,那租房者就会从中挑选出适合自己的房子,这就叫房产中介。

它的作用就是连接租房者和房东的桥梁,二者都在注册中心进行注册,当有合适的匹配就完成了一段合适的交易,就叫房产中介,我们要明确这个过程,当租房子满足条件时,就会有人联系,得到适合的房子。通过房产中介建立起中间的桥梁,通过他连接起双方之间的一段关系,这就是房产中介。

这就是一段典型的注册中心的例子。一般情况下,有一个很著名的卖房的人叫某某,就这个中介跟有点区别。

大家可以了解一下,就是他先把房子租下来,那就成了二房东,然后再把它租出去,这个中介是这么做的。

但真正的中介是你在里边儿注册,别人看到你的条件,租下房子,充当租房子和房东之间的桥梁。这个就叫注册中心,目前我们就是这样的过程,我想通过edu去调vod,不认识,不能直接调过去的,他们是不同的独立模块儿。那我们应该怎么调到呢?

那就需要让两个服务或两个模块儿在注册中心进行注册,等都注册完之后,就能实现这个调用。

比如说地址,联系方式都给了中介,别人租房就能看到这个信息,就是这样的一个过程,所以调用就需要用到注册中心,你注册之后,你就能实现互相调用,像我们提到的租房和房产中介的过程。

所以大家应该知道这个过程,想到房产中介来理解我们的注册中心。总而言之一句话,不同的模块或服务要进行方法的调用,我们需要把我们互相调用的模块要在注册中心中行注册。这就是我们的重点。

videoService.removeById(id):

return R.ok();

//修改小节 TODO


二、Nacos

在这个过程中,我们要使用到 spring cloud。而在 spring cloud 中,就给我们提供了一个注册中心。我们需要看一下微服务中的第二个笔记。

1、基本概念二、服务注册(serviceedu 为例)

把 service-edu 微服务注册到注册中心中,service-vod 步骤相同

1在 service 模块配置 pom

配置 Nacos 客户端的 pom 依赖

1<!--服务注册--> I

<dependency>

3 <groupId>org.springframework.cloud</groupId>

4cartifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId)

5</dependency>

(1)Nacos 是阿里巴巴推出来的一个新开源项目,是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

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

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

(2)常见的注册中心:

1.Eureka(原生,2.0遇到性能瓶颈,停止维护)

在使用 cloud 的早期,他用的不是 nacos,而是 eureka,我们现在也可以用,但是一般不用。

因为Eureka是最原始的注册中心,性能遇到瓶颈,停止维护,更新也会耗费更多时间,因此被慢慢替换了,但也不排除有人用它,更多的还是用Nacos替换Eureka,功能更加强大,性能也更好。Nacos 由阿里巴巴提供,品质更有保证。

2.Zookeeper(支持,专业的独立产品。例如:dubbo)

3.Consul(原生,GO 语言开发)

4.Nacos

用法更加方便,更简单,性能也更加强化。如果以后在面试中遇到这类问题,可以说是用 Nacos 或者 Eureka

相对于 SpringCloud Eureka 来说,Nacos 更强大。Nacos=Spring Cloud Eureka + Spring Cloud Config  ,Nacos可以与Spring,Spring Boot,Spring Cloud 集成,并能代替Spring Cloud Eureka,Spring Cloud Config-通过 Nacos Server和spring-cloud-starter-alibaba-nacos-discovery 实现服务的注册与发现。

(3)Nacos 是以服务为主要服务对象的中间件,Nacos支持所有主流的服务发现、配置和管理。

Nacos 主要提供以下四大功能:

1服务发现和服务健康监测

讲解:这是今天主要用到的技术

2.动态配置服务

3.动态DNS服务

4.服务及其元数据管理

(4)Nacos 结构图

image.png

再画一个 Nacos 的流程图,这里分别有三个部分,第一部分是注册中心。除此之外,还有另外两个部分。我们有术语的描述。

从上图我们可以得知,一个为生产者,一个为消费者。我们要通过 edu 调用 vod。大家要注意这里边谁是提供者,谁是消费者,从图中我们知道 edu 是消费者,他应该去调用 vod,vod 就是生产者,这个我们要明确,我们要让二者都要在注册中心注册,在这里,我们都把他们先注册进去,注册是非常复杂的,我们是通过 IP 和端口进行访问的。

所以他的注册方式就是通过他的 IP 和端口进行注册。那么在图中,消费者先得到IP和端口,根据 IP,端口号得到地址,再对生产者进行调用,得到结果,注册中心起到的就是相当于房产中介的效果。是连接租房者和房东的桥梁。或者是生产者和消费者的桥梁。这就叫注册中心,本质上还是对 IP,端口号进行一个访问。

image.png

2、Nacos 下载和安装

(1)下载地址和版本

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

下载版本:nacos-server-1.1.4.tar.gz或nacos-server-11.4.zip,解压任意目录即可

(2)启动 nacos 服务

-Linux/Unix/Mac

启动命令(standalone 代表着单机模式运行,非集群模式)

启动命令:sh startup.sh-m standalone

-Windows

启动命令:cmd startup.cmd 或者双击 startup.cmd 运行文件。

访问:http://ocalhost:8848/nacos

用户名密码:nacos/nacos


三、服务注册(serviceedu 为例)

把service-edu 微服务注册到注册中心中,service-vod 步骤相同

1、在 service 模块配置 pom

配置 Nacos 客户端的 pom 依赖

1、<!--服务注册--> I

2、<dependency>

3、<groupId>org.springframework.cloud</groupId>

4、cartifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId)

5、</dependency>

相关文章
|
5月前
|
人工智能 Java API
Nacos 3.1.0 正式发布,支持 A2A 注册中心与 MCP 注册协议增强
3.1.0 发布核心全新功能-Agent 注册中心,助力构建基于 A2A 协议的多 Agent 协作的AI应用,同时 MCP 注册中心适配最新 MCP 官方注册中心协议及升级优化多项核心功能。
1377 49
|
负载均衡 Kubernetes 网络协议
注册中心如何选型?Eureka、Zookeeper、Nacos怎么选
这是小卷对分布式系统架构学习的第9篇文章,继续探讨注册中心的原理及选型。文章详细介绍了Eureka、Nacos的工作机制与特点,并对比了Eureka、Nacos、Consul和Zookeeper在一致性协议、健康检查、负载均衡等方面的差异。最后根据不同的应用场景给出了注册中心的选型建议,帮助读者理解如何选择最适合的注册中心。
1183 100
|
Cloud Native Java Nacos
springcloud/springboot集成NACOS 做注册和配置中心以及nacos源码分析
通过本文,我们详细介绍了如何在 Spring Cloud 和 Spring Boot 中集成 Nacos 进行服务注册和配置管理,并对 Nacos 的源码进行了初步分析。Nacos 作为一个强大的服务注册和配置管理平台,为微服务架构提供
4720 14
|
存储 缓存 负载均衡
Nacos注册中心
Nacos注册中心
315 1
Nacos注册中心
|
Java 网络安全 Nacos
Nacos作为流行的微服务注册与配置中心,其稳定性与易用性广受好评
Nacos作为流行的微服务注册与配置中心,其稳定性与易用性广受好评。然而,“客户端不发送心跳检测”是使用中常见的问题之一。本文详细探讨了该问题的原因及解决方法,包括检查客户端配置、网络连接、日志、版本兼容性、心跳检测策略、服务实例注册状态、重启应用及环境变量等步骤,旨在帮助开发者快速定位并解决问题,确保服务正常运行。
259 5
|
网络安全 Nacos 开发者
Nacos作为流行的微服务注册与配置中心,“节点提示暂时不可用”是常见的问题之一
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。然而,“节点提示暂时不可用”是常见的问题之一。本文将探讨该问题的原因及解决方案,帮助开发者快速定位并解决问题,确保服务的正常运行。通过检查服务实例状态、网络连接、Nacos配置、调整健康检查策略等步骤,可以有效解决这一问题。
344 4
|
Java 网络安全 Nacos
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。然而,实际使用中常遇到“客户端不发送心跳检测”的问题。本文深入探讨该问题的原因及解决方案,帮助开发者快速定位并解决问题,确保服务正常运行。通过检查客户端配置、网络连接、日志、版本兼容性、心跳策略、注册状态、重启应用和环境变量等步骤,系统地排查和解决这一问题。
284 3
|
安全 Nacos 数据库
Nacos是一款流行的微服务注册与配置中心,但直接暴露在公网中可能导致非法访问和数据库篡改
Nacos是一款流行的微服务注册与配置中心,但直接暴露在公网中可能导致非法访问和数据库篡改。本文详细探讨了这一问题的原因及解决方案,包括限制公网访问、使用HTTPS、强化数据库安全、启用访问控制、监控和审计等步骤,帮助开发者确保服务的安全运行。
770 3
|
负载均衡 Java Nacos
SpringCloud基础1——远程调用、Eureka,Nacos注册中心、Ribbon负载均衡
微服务介绍、SpringCloud、服务拆分和远程调用、Eureka注册中心、Ribbon负载均衡、Nacos注册中心
SpringCloud基础1——远程调用、Eureka,Nacos注册中心、Ribbon负载均衡
|
Cloud Native Java Nacos
微服务注册中心-Nacos概述
该博客文章提供了对Nacos的全面概述,包括其基本介绍、与Spring Cloud集成的优势、主要功能以及如何在Spring Cloud Alibaba项目中作为服务注册中心使用Nacos。文章解释了Nacos是一个动态服务发现、配置管理和服务管理平台,支持服务发现、健康监测、动态配置、DNS服务和元数据管理。还介绍了如何下载和启动Nacos服务器,以及如何将微服务注册到Nacos中,包括修改pom.xml文件引入依赖、配置application.properties文件和使用@EnableDiscoveryClient注解开启服务注册发现功能。
微服务注册中心-Nacos概述

热门文章

最新文章