Nacos 是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。他是使用 java 编写。需要依赖 java 环境
Nacos 文档地址: https://nacos.io/zh-cn/docs/quick-start.ht
Nacos注册中心(步骤):
1.下载 nacos-server,地址:
2.启动 nacos-server
①双击 bin 中的 startup.cmd 文件
②访问 http://localhost:8848/nacos/
③使用默认的 nacos/nacos 进行登录
3.将服务注册到 nacos 中:
首先,修改 pom.xml 文件,引入 Nacos Discovery Start
<!-- 服务注册/发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
4.在应用的 /src/main/resources/application.properties 配置文件中配置 Nacos Server 地址
在application.yml中也可以(下方使用配置中心讲解)
使用@EnableDiscoveryClient 开启服务注册发现功能
然后启动服务就可以看到服务已经注册进来了
步骤总结:
- Nacos 使用三步:
- 导包 nacos-discovery
- 写配置,指定 nacos 地址,指定应用的名字
- 开启服务注册发现功能@EnableDiscoveryClient
服务间远程调用(Feign):
第一步导包(比如会员服务想要调用优惠卷服务,我们就需要会员服务中引入openFeign)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
开启Feign功能(在启动类上添加 “@EnableDiscoveryClient” 注解)
声明远程接口
开启远程调用feign
此时就可以使用远程调用接口了
成功
Nacos配置中心(步骤):
pom.xml 引入 Nacos Config Starter
<!-- 配置中心来做配置管理-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
在应用的 /src/main/resources/bootstrap.properties (需要创建bootstrap.properties这个文件,是规定的,nacos默认读取该文件中的配置)配置文件中配置 Nacos Config 元数据
在nacos中添加一个数据集 DataId默认 服务名称.properties
给应用配置gulimall-coupon.properties 添加任意配置
然后就可以动态的应用配置了 (如果nacos配置中心中有的配置,和当前应用中配置一样那么会优先使用nacos配置中心的配置)
有两个注解需要注意下
可以自定已命名空间,这样在配置管理中就可以看到我们独立命名空间
我们在配置nacos配置中心的时候可以进行多中配置文件的配置分组
项目中配置
如果有多个配置,通过数组下标来指定我们需要加载的第 1、2、3个配置
application.properties(服务注册中心) 配置参考
#指定服务启动后的端口
server.port=7000
#指定服务名称
spring.application.name=gulimall-coupon
#nacos服务地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
#指定服务启动后的注册空间
spring.cloud.nacos.discovery.namespace=04054a3b-e50b-4ed8-8960-3260e5669332
bootstrap.properties(配置中心) 配置参考
spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=04054a3b-e50b-4ed8-8960-3260e5669332
spring.cloud.nacos.config.group=dev
spring.cloud.nacos.config.ext-config[0].data-id=coupon_application.yml
spring.cloud.nacos.config.ext-config[0].group=dev
spring.cloud.nacos.config.ext-config[0].refresh=true
Nacos、Eureka和Zookeeper都是服务发现和注册中心,但它们有一些区别:
- Nacos是阿里巴巴开源的服务发现和配置中心,支持服务发现、配置管理、动态DNS服务等功能。Eureka是Netflix开源的服务发现组件,主要用于AWS云平台上的服务注册和发现。Zookeeper是Apache开源的分布式协调服务,可以用于服务发现、配置管理、分布式锁等。
- Nacos支持多种协议,如HTTP、DNS、gRPC等,可以适应不同的场景。Eureka只支持HTTP协议。Zookeeper也支持多种协议,如TCP、UDP、HTTP等。
- Nacos支持服务配置管理,可以动态修改服务的配置信息。Eureka和Zookeeper也支持配置管理,但需要自己实现。
- Nacos支持服务健康检查,可以检测服务的状态。Eureka和Zookeeper也支持健康检查,但需要自己实现。
- Nacos支持服务路由和流量控制,可以实现服务的负载均衡和限流。Eureka和Zookeeper不支持路由和流量控制。
总的来说,Nacos功能比Eureka和Zookeeper更全面,但也更复杂一些。选择哪个服务发现和注册中心,需要根据具体的需求和场景来决定。