Nacos 实现服务调用|学习笔记

简介: 快速学习 Nacos 实现服务调用

开发者学堂课程【全面讲解 Spring Cloud Alibaba 技术栈(知识精讲+项目实战)第二阶段Nacos 实现服务调用】学习笔记与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/684/detail/11863


Nacos 实现服务调用

 

内容介绍:

一、 Nacos 实战准备

二、 商品微服务注册

三、 订单微服务注册

 

一、Nacos 实战准备

Nacos 实战入门,我们需要在现有的环境中加入 nacos ,并将两个微服务注册上去。

接下来我们通过一张图片来描述所需要操作的内容

 image.png

一共分为三个部分:

1、第一件事 在服务治理者处安装一个 nacos-server 端,其本质上就是一个软件,我们只需要从官网上下载并且进行安装启动即可。

2、第二件事 我们需要在订单微服务和商品微服务的位置安装 nacos-client 端,其本质上是一个帐包,我们只需要导入三观的依赖,然后进行一些简单的配置即可。

3、第三个步骤我们需要在订单微服务模块通过 nacos-server 拿到商品微服务的地址和端口,最后进行调用。

接下来先完成 nacos-server 的安装,在安装之前我们需要去下载它,

下载地址:https://github.com/alibaba/nacos/releases ,在浏览器打开,可以看到最新的一个版本是1.1.4版本的,在下方提供了不同平台的安装格式,对应自己的平台下载即可,在提供的素材里面也有准备好了一个 nacos-server-1.1.4.zip ,将其复制到我们的工作空间中,然后将其解压就可拿到一个 nacos 的目录,点击进入有两个目录需要我们注意,第一个是 conf ,里面是配置文件,本次全部采用默认不再改动。

接下来是 bin ,需要关注的有两个,一个是 startup.cmd ,另一个是 startdown.cmd ,前者用于启动,后者用于停止。

我们可以通过双击启动也可以通过执行命令启动,执行命令的代码:

#命令启动

Startup.cmd-m standalone

这里我们通过双击启动,在启动过程中我们会发现它默认接听在了8848端口上,等待启动完毕,默认地会给我们一个 ui 界面,我们可以通过此界面查看注册到本 nacos-server 上的服务列表。

 

二、商品微服务注册

1、 nscos-server 的安装

新建一个标签页,输入网址 localhost:8848/nacos/ 回车,进入到一个登录界面,用户名和密码默认都为 nacos ,点击登录就进入了目的页面,如果有微服务注册上来,我们就可以在服务列表项查看到相关信息。若成功进入登录页面,则说明我们的 nscos-server 就安装完毕了。

2、 nacos-client 的安装

第二个操作是在两个微服务上安装 nacos-client 端。

(1)、在pom.xml 中添加 nacos 的依赖

(2)、在主类上添加 @EnableDiscoveryClient 注解

(3)、在 application.yml 中添加 nacos 服务的地址

由此我们的 Client 端即可访问 servers 端了

之后启动微服务,观察 nacos 的服务面板中是否有注册上来的商品微服务

进入实操:

1、首先我们打开 product 的 pom.xml ,在</dependency> 下方位置输入 nacos 客户端,回车继续输入 </dependency>回车,在 <artifactid> 后

输入 nacos-discivery 回车得到

<groupid>com.alibaba.cloud</groupid> 即可

2、下一步点击 ProductApplication ,

在 @SpringBootApplication 项下方添加一个开启 nacos-client 端的注解,即 EnableDiscoveryClient

3、来到配置文件中添加 nacos-server 的地址,

点击spring.cloud.nacos.discovery.server-adder ,输入 localhost:8848 到此三步全部做完,

最后来启动 ProductApplication 的微服务,若启动过程中没有报错,那么我们即可来到 nacos 的服务端的 ui 界面上,在服务列表上点击刷新,显示的server-product 即为商品微服务注册到服务端上来了。

这个服务名其实就是配置文件里面的 spring:

Application:

Name:service-product

第一个商品微服务就注册完毕了

三、订单微服务注册

1、操作重复

接下来我们把订单微服务也注册到 nacos-server 上来,同样的步骤,第一步加依赖,第二步开注解,第三步加配置,接下来选择 OrderApplication 进行启动,然后来到 ui 界面刷新,可以看到订单微服务也注册到了 nacos-server 上,到这里为止我们的第二个任务也完成了,两个微服务都已经注册到了 nacos-server 上。

接下来我们处理从订单微服务端口通过 nacos-cerver 来获取商品微服务的地址。

在订单微服务中我们打开调用代码,选择 OrderController

Product product =

RestTemplate.getForobject(url:”http://localhost:8081/product/” +pid, Product.class);

以上即为订单微服务调用商品微服务的代码,为保证代码的完整性,将以下部分复制放到下方,然后将其注释掉。

image.png

2、代码修改

接下来将 //问题:

//1 一旦服务提供者的地址信息变化了,我们就不得不去修改服务调用者的 java 代码

//2 一旦无法提供者做了集群服务,调用者一方无法实现负载均衡的去调用

//3 一旦微服务变得越来越多,如何来管理这个服务清单就成了问题

删掉,此时商品微服务的地址和端口是写死的,我们需要将其改成从 nacos-server 中进行获取,要想从 nacos-server 中拿去相应的地址和端口,我们在提供的位置输入 Autowired

回车 private DiscoveryClient discoveryclient;由此我们即可通过实例获取相关的信息了。

我们有一个方法为 getInstances  是获取实例的意思,返回值是一个集合,参数是 serverId 也就是服务名,因为我们以后可能会做 server-product 的集群,此服务名下的实例可能会有多个,我们以后会介绍。

输入

discoveryClient.getInstances (serviceld:”

service-product”).var 会得到一个集合,本次我们直接输入

instances.get(0), 这样我们就取到了商品微服务。

3、地址和端口的获取

要想获取商品微服务的地址和端口,在 instances 中,get.host() 用于取地址, get.Port() 用于取端口,将商品微服务代码中的 localhost 改为 instances.getHost (),

8081改为 instances.getPort (),

这样代码就调整完毕了,下一步点击 OrderApplication 启动微服务,并将断点打到39和44处的位置,回车执行观察效果,启动完毕以后对1号商品执行一个下单操作,可以发现默认已经发出来了,继续执行一次下单,

回车刷新就可以看到请求已经发出,然后点击 instances 观察得到的实例,可以看到一个集合,集合里面的每一个元素都是 NacosServiceInstance 即为 nacos 服务的实例,点开可以发现实例的各种信息,有 ID,端口号,服务地址等等。

其中 host=“192.168.109.1” 和 port=8081是比较重要的,将他们拼起来即为一个微服务的路径,

接下来点击下一步 instances 就拿到了。然后对 “http://” + instance.getHost() +“:”+ instance.getPort() +”/product/” +pid , 执行一次并运行发现没有任何问题,这时我们将断点去掉,把代码放过去,回到执行网址观察发现此访问已经成功,到这里我们的第三个步骤全部完成。

image.png

我们通过订单微服务代码的形式,从 nscos-server 端口处拉取到了商品微服务的地址和端口,达到了预期的目的。

相关文章
|
自然语言处理 Cloud Native Dubbo
Nacos 开源、自研、商业化三位一体 | 学习笔记
快速学习 Nacos 开源、自研、商业化三位一体
429 0
Nacos 开源、自研、商业化三位一体 | 学习笔记
|
消息中间件 缓存 监控
网关、Nacos 和 Sentinel|学习笔记(三)
快速学习网关、Nacos 和 Sentinel
224 0
网关、Nacos 和 Sentinel|学习笔记(三)
|
缓存 弹性计算 安全
MSE Nacos 配置安全最佳实践|学习笔记(二)
快速学习 MSE Nacos 配置安全最佳实践
669 0
MSE Nacos 配置安全最佳实践|学习笔记(二)
|
弹性计算 安全 数据库连接
MSE Nacos 配置安全最佳实践|学习笔记(一)
快速学习 MSE Nacos 配置安全最佳实践
525 0
MSE Nacos 配置安全最佳实践|学习笔记(一)
|
存储 安全 算法
深入浅出讲解 MSE Nacos 2.0 新特性|学习笔记(二)
快速学习深入浅出讲解 MSE Nacos 2.0 新特性
338 0
深入浅出讲解 MSE Nacos 2.0 新特性|学习笔记(二)
|
存储 SQL 容灾
Nacos 发展历程以及最佳实践| 学习笔记
快速学习 Nacos 发展历程以及最佳实践
611 0
Nacos 发展历程以及最佳实践| 学习笔记
|
Java Nacos 开发者
Nacos config入门案例|学习笔记
快速学习Nacos config入门案例
87 0
Nacos config入门案例|学习笔记
|
Java Nacos 开发者
nacos的几个概念|学习笔记
快速学习nacos的几个概念
121 0
nacos的几个概念|学习笔记
|
Java 数据管理 Nacos
Nacos 服务发现-课程介绍 | 学习笔记
快速学习 Nacos 服务发现-课程介绍。
83 0
Nacos 服务发现-课程介绍 | 学习笔记
|
负载均衡 Java 数据库连接
Nacos 配置管理-什么是配置中心 | 学习笔记
快速学习 Nacos 配置管理-什么是配置中心。
128 0
Nacos 配置管理-什么是配置中心 | 学习笔记