Nacos教程

发布时间:2023年12月22日

常见的微服务架构:

1. dubbo:
????????zookeeper +dubbo + SpringMVC/SpringBoot
????????配套 通信方式:rpc
????????注册中心:zookeeper / redis
2.SpringCloud
????????全家桶+ 轻松嵌入第三方组件 (Netflix)
????????配套 通信方式:http restful
????????注册中心:eruka
????????配置中心:config
????????断 路 器:hystrix
????????网关:zuul
????????分布式追踪系统:sleuth + zipkin
3.SpringCloud Alibaba

1.什么是Nacos

????????nacos是 spring cloud alibaba 生态中非常重要的一个组件,它有两个作用:
  1. 注册与发现中心;
  2. 配置中心

????????nacos有注册中心的作用,我们常见的配置中心还有zkeureka

微服务 CAP? 原则:
1 C(consistency): 一致性,同一时刻的同一请求的实例返回结果相同,属于强一致性性,也就是说,在集群环境中,对外提供的服务信息是完全一致的,但是在效率上面可能会有一定的损耗;
2 A(availability): 可用性,所有实例的读写请求在一定的时间内可以得到正确的响应,它是弱一致性,可能在极短的时间内,不同实例获取到的信息是不一致的,但是服务可用并且最终数据是一致的;
3 P(Partition tolerance): 分区容错性,在网络异常的情况下,仍旧能够提供正常的响应,这是在微服务系统中必须要保证的;
????????nacos在启动时,默认是 AP 模式,可以通过指令将 nacos 变为 CP 模式,在我们经常使用的微服务中,我们是选择使用AP 模式的,此时的所有实例都属于临时实例。临时实例和持久实例最显著的区别就是在健康检查发现服务有问题时,持久实例被标注为不健康,而临时实例会直接剔除。


2.nacos基本使用

????????nacos大体分为两部分: nacos 服务端和 nacos 客户端,首先是 nacos 服务端 ,这一部分是不需要做任何改动,直接启动服务即可。

启动:

方式一:

默认以集群的方式启动

方式二:windows命令启动 (后缀standalone指的是以单例的方式进行启动)

.\startup.cmd -m standalone

访问:http://localhost:8848/nacos

开启后默认账号密码均为nacos,即可访问服务


3.创建nacos客户端

????????idea 创建springboot项目,引入jar包。

<spring-cloud-alibaba-version>2.1.3.RELEASE</spring-cloud-alibaba-version>
<!--引入nacos-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>${spring-cloud-alibaba-version}</version>
</dependency>
启动类添加注解
// nacos使用的注解
@EnableDiscoveryClient

application.yml? 配置
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848  #服务地址(默认端口号为8848)
  application:
    name: cloud-user-provider #服务名

注意:版本对应问题


4.nacos集群配置

????????Nacos集群默认最小要有三个节点,而且三个节点的配置中心的数据都需要存储在 MySQL 数据库中。
????????在mysql 中创建数据库 nacos ,并在 nacos conf 目录下找到 nacos-mysql.sql 文件导入数据库

修改 application.properties 文件,打开数据库连接并修改连接信息

conf 目录下,修改文件名 cluster.conf.example cluster.conf

IP( 可使用 ipconfig 查看自己的 IP 地址 )+ 端口号

注意:端口号不要连续,如 8081 8082 8083 。连续端口会报错

启动(三个):

启动后在集群管理即可查看:


5.nacos负载均衡

? ? ? ? nacos实现负载均衡是通过内置的?Ribbon?实现的。默认的负载均衡策略是使用的?Ribbon?中的默认策略 —轮询(我的端口号为3333)。

? ? ? ? 负载均衡实现前提,服务名相同

server:
  port: 8881
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:3333  #服务地址(默认端口号为8848)
  application:
    name: cloud-user-provider #服务名
dubbo:
  application:
    name: cloud-user-provider
  scan:
    base-packages: com.hz.service.impl #扫包
  protocol:
    # 协议名称
    name: dubbo
    port: -1
    #注册中心
  registry:
    #注册中心地址列表,同一集群内的多个地址用逗号分隔
    address: nacos://127.0.0.1:3333


6.nacos配置中心

????????nacos同 spring-cloud-config 一样,可以作为一个配置中心,统一的来管理配置,可以配置多套环境, 各个微服务可以按需到nacos 配置中心拉取相关配置, 且支持动态刷新 @RefreshScope

新建配置:

idea新建项目,引 jar 包,

<!--为了测试使用spring注解引入-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--引入nacos-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>${spring-cloud-alibaba-version}</version>
</dependency>
<!--nacos配置中心-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>${spring-cloud-alibaba-version}</version>
</dependency>
创建bootstrap.yml

application.yml 中添加

注意:使用nacos 作为配置中心时,
需要创建一个 bootstrap.yaml application.yaml 两个配置文件,
bootstrap.yaml 优先级 高于 application.yaml ,加载时实现加载 bootstrap.yaml 中的相关配置

?

文章来源:https://blog.csdn.net/qq_44114187/article/details/135145255
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。