技术点-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天前
|
SpringCloudAlibaba 负载均衡 Java
【微服务 SpringCloudAlibaba】实用篇 · Nacos注册中心
【微服务 SpringCloudAlibaba】实用篇 · Nacos注册中心
20 3
|
5天前
|
安全 Linux Nacos
如何使用公网地址远程访问内网Nacos UI界面查看注册服务
如何使用公网地址远程访问内网Nacos UI界面查看注册服务
25 0
|
5天前
|
负载均衡 Cloud Native Java
Nacos 注册中心(2023旧笔记)
Nacos 注册中心(2023旧笔记)
20 0
|
5天前
|
Dubbo Java 应用服务中间件
深度剖析:Dubbo使用Nacos注册中心的坑
2020年笔者在做微服务部件升级时,Dubbo的注册中心从Zookeeper切换到Nacos碰到个问题,最近刷Github又有网友提到类似的问题,就在这篇文章里做个梳理和总结。
深度剖析:Dubbo使用Nacos注册中心的坑
|
5天前
|
SpringCloudAlibaba Java Nacos
SpringCloud Alibaba微服务 -- Nacos使用以及注册中心和配置中心的应用(保姆级)
SpringCloud Alibaba微服务 -- Nacos使用以及注册中心和配置中心的应用(保姆级)
|
5天前
|
Dubbo Java 应用服务中间件
双活工作下的数据迁移:Nacos注册中心实战解析
这篇内容介绍了如何使用NacosSync组件进行双活项目中的注册中心数据迁移。首先,准备包括64位OS、JDK 1.8+、Maven 3.2+和MySQL 5.6+的环境。接着,获取并解压NacosSync安装包,配置数据库连接,启动服务,并通过访问特定URL检查系统状态。然后,通过NacosSync控制台进行集群配置,添加Zookeeper和Nacos集群,并设置同步任务。当数据同步完成后,Dubbo客户端(Consumer和Provider)更新配置以连接Nacos注册中心。最后,迁移完成后,原有的Zookeeper集群可下线,整个过程确保了服务的平滑迁移。
46 1
|
5天前
|
XML Dubbo Java
【Dubbo3高级特性】「框架与服务」 Nacos作为注册中心-服务分组及服务分组聚合实现
【Dubbo3高级特性】「框架与服务」 Nacos作为注册中心-服务分组及服务分组聚合实现
66 0
|
5天前
|
Dubbo 关系型数据库 MySQL
nacos常见问题之命名空间配置数据上线修改如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
104 1
|
5天前
|
存储 运维 监控
NACOS 配置中心和注册中心是分两个集群部署还是放在一个集群中
【2月更文挑战第33天】NACOS 配置中心和注册中心是分两个集群部署还是放在一个集群中
92 2
|
5天前
|
SpringCloudAlibaba 应用服务中间件 Nacos
【微服务 SpringCloudAlibaba】实用篇 · Nacos配置中心(下)
【微服务 SpringCloudAlibaba】实用篇 · Nacos配置中心
18 0

热门文章

最新文章