一、Nacos介绍
官网:nacos.io
在分布式系统中,Nacos是微服务注册中心、同时也是微服务配置管理中心
二、搭建Nacos
搭建方式1:使用docker搭建,使用已有的Mysql5.7
搭建教程: juejin.cn/post/712871…
搭建方式2:本地启动单机(省事,本地开发方便)
到github下载Naocs github.com/alibaba/nac… 2.1.1版本: github.com/alibaba/nac…
解压后,到bin目录,找到startup.sh或startup.cmd,使用文本编辑器打开。把启动模式改成standalone(单机启动)。然后双击startup文件就能启动。
启动成功后,访问管理页面:http://localhost:8848/nacos/ 用户名和密码都是nacos。
三、项目集成nacos
3.1 使用注册中心和配置中心的理由
问题一:为什么要使用微服务注册中心?
答:1. 两个微服务通过网络协议进行数据交互,必须知道对方的ip和端口号。使用微服务注册中心后,可以将ip和端口号交给注册中心来管理。我们只需要给要访问的微服务定义一个applicationName,使用applicationName来代替ip地址和端口。就好像访问百度首页,我们使用域名(baidu.com)来访问,而不是使用ip地址+端口进行访问。
问题二:为什么要使用微服务配置中心。
答:分布式系统会有多个微服务,这些微服务肯定存在部分一样的配置,我们将这些配置称为共享配置。将共享配置抽取出来后,必须找一个地方存放,这个地方能被所有微服务访问。这时,nacos就提供了配置中心的功能。方便我们管理微服务的配置。
3.2 演示分布式系统微服务互相调用的场景
新建两个微服务。一个是user-service,两个是order-service。order-service提供一个查询订单的API,订单API又需要向user-servcie查询用户数据。
新增新建的微服务,只需要添加一个spring-boot-starter-web依赖。利用RestTemplate就可以访问到对方的服务器。如图所示:
可以看到,orderController中写死了user-service的ip地址和端口。下面将集成Nacos来简化微服务之间的调用: 官方教程: nacos.io/zh-cn/docs/…
步骤1:order-service和user-service都添加nacos-client依赖。
这个nacos-client的主要工作是向Nacos进行服务注册和发现。
添加依赖时,并没有指定版本号。因为我们在父目录的<dependencyManagement>中import了<artifactId>spring-cloud-alibaba-dependencies</artifactId>,在spring-cloud-alibaba-dependencies里面呢已经指定了版本号。
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
步骤2:在resources目录下,新建一个bootstrap.yml文件。在里面定义微服务名字,以及指定nacos地址
order-service的配置:
spring:
application:
name: order-service
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
user-service的配置:
spring:
application:
name: user-service
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
步骤3:修改OrderController访问user-service的url,使用applicationName代替ip+端口
步骤4:order-service的RestTemplate配置负载均衡器。这个负载均衡的工作,会向Nacos拉取服务列表,然后将请求路径中的服务名替换成ip+端口
重新访问order-service的api(http://localhost:8066/orders/1), 发现能正常读取到数据。到此为止,已经将nacos-client集成到微服务中去了。