Spring Cloud Nacos笔记

Spring Cloud 笔记

学习一个框架,最重要的是先弄懂他的思想。

名称 Spring Cloud 第一代 Spring Cloud 第二代
网关 Spring Cloud Zuul Spring Cloud Gateway
注册中心 Eureka(不再更新),Consul,Zk 阿里Nacos,拍拍贷radar等可选
配置中心 SpringCloud Config 阿里Nacos,携程Apollo,随行付Config
客户端软负载均衡 Ribbon Spring-cloud-loadb,ancer
熔断器 Hystrix spring-cloud-r4j,阿里Sentinel

SpringCloud第二代(自己研发)和优秀的组件组合:

Spring Cloud Gateway 网关
Spring Cloud Loadbalancer 客户端负载均衡器
Spring Cloud r4j(Resilience4J) 服务保护

Spring Cloud Alibaba Nacos 服务注册
Spring Cloud Alibaba Nacos 分布式配置中心
Spring Cloud Alibaba Sentinel服务保护
SpringCloud Alibaba Seata分布式事务解决框架
Alibaba Cloud OSS 阿里云存储
Alibaba Cloud SchedulerX 分布式任务调度平台
Alibaba Cloud SMS 分布式短信系统

Nacos 分布式配置中心和分布式服务注册中心

Nacos产生的背景
产生背景rpc远程调用中,服务的url的治理
EPC(Remote Procedure Call)远程过程调用,简单的理解是一个节点请求另一个节点提供的服务。
Rpc的远程调用框架 HttpClient、gprc、dubbo、rest、openfeign等。
传统的rpc远程调用中会存在的问题

  1. 超时的问题
    客户端已经发送请求到达了服务器端,服务器端没有及时的响应请求给客户端,防止客户端一直阻塞等待。
  2. 安全的问题
    加密,https,令牌传输数据等,限流,服务保护等。
  3. 服务于服务之间URL地址管理
    在分布式和微服务中,服务于服务之间依赖关系非常复杂的,接口调用如果写死的情况下,后期接口地址发生变化的情况下,需要人工刷新地址。

微服务架构通讯,服务之间依赖关系非常大,如果通过传统的方式管理我们服务的url地址的情况下,一旦地址发生变化的情况下,还需要人工修改rpc远程调用地址。
在这里插入图片描述
注册中心:实际上就是存放接口的调用地址。 IP和端口号
接口地址:IP和端口/接口名称。接口名称一般不会改变
知名注册中心有:Dubbo依赖Zookeeper,Eureka,Consul,Nacos,Redis,数据库。
最大特性:能够实现动态感知。

  1. 微服务架构设计常用名称
    生产者:提供接口被其他服务调用
    消费者:调用别人写好的接口
    注册中心:存放调用接口地址和动态感知

在这里插入图片描述
下载nacos之后,启动失败:

java.lang.IllegalArgumentException: db.num is null   //报错信息

是因为默认集群模式启动,但是只有一个nacos。需要修改成单机模式启动。在这个startup.cmd文件里修改
在这里插入图片描述

rem set MODE = "cluster"    %集群模式% 修改前
set MODE=“standalone”      %单机模式%

本地负载均衡器 负载均衡算法都是在本地实现
依赖于注册中心
应用场景:Dubbo、feign客户端/rpc远程调用框架
框架:客户端Ribbon

服务器负载均衡器 负载均衡算法都是服务器端实现

依赖于:nginx
场景:tomcat负载均衡
框架:nginx | vs

在这里插入图片描述

OpenFeign客户端

OpenFeign是一个Web声明式的Http客户端调用工具,提供接口和注解形式调用。

Nacos作为分布式配置中心属于轻量级,部署和运维学习成本都非常简单。

导入依赖:
在这里插入图片描述
加上注解:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果报Feign客户端没有找到的情况下,就是少了下面这个注解@EnableFeignClients
在这里插入图片描述
在这里插入图片描述
OpenFeign客户端默认会自带一个负载均衡

Nacos配置中心

分布式配置中心原理:

  1. 管理人员发布配置文件,需要配置文件持久化到硬盘
  2. 分布式配置中心服务器端,监听,客户端连接
  3. 本地项目发送连接到分布式配置中心服务端,分布式配置中心服务端读取配置文件返回给 本地项目(客户端)
  4. 如果分布式配置中心服务端发现配置文件发生变化的情况下,通知本地项目刷新配置文件。

Data id = 服务名称-版本.结尾

bootstrap.yml 加载优先级比 application.yml 要高。

默认配置格式是:file-extension:Properties
所以需要设置:file-extension: yaml

动态配置属性加上这个注解
@RefreshScope

多版本:名字后面加上版本
IDES:Internet Demonstration and Evaluation System 交互式演示与评估系统
DEV:Development System,开发系统
QAS:Quality Assurance System,质量保证系统
UAT:User Acceptance Test 用户验收测试
PRD:Production System,生产系统
在这里插入图片描述
配置文件里加上需要的版本
在这里插入图片描述
寻址原理 就是根据服务名称application.name-prd.yaml查询的

高可用
如果时集群模式的化,就没办法一起用本地的配置信息
所以可以保存到数据库里。
先用这个sql导入数据库
在这里插入图片描述
然后在配置数据源:然后重启就可以了
在这里插入图片描述
连接到数据库后,配置信息就会储存到数据库里了。
在这里插入图片描述
在这里插入图片描述

nacos集群配置

修改这个cluster.conf.example文件去掉后缀,cluster.conf再加上集群ip和端口号
在这里插入图片描述
再修改每个nacos的端口号
在这里插入图片描述
在这里插入图片描述

事务的定义

对我们的业务逻辑可以实现提交或者回滚,保证数据的一致性的情况。
所以要么提交,要么回滚。

  • 原子性a 要么提交,要么回滚
  • 一致性c
  • 隔离性i 多个事务在一起执行的时候,互不影响
  • 持久性d 事务一旦提交或者回滚后,不会在对该结果有任何影响

CAP原则:
CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。

主流:Nacos,Eureka,Zookeeper注册中心有哪些区别

ZK 底层采用zab协议 保证每个节点之间数据一致性 模型:cp保证数据一致性 如果我们的zk在选举的过程中,zk集群的坏境暂时可能无法访问,也可能客户端无法读取到最新的接口地址,zk集群可用节点必须满足过半机质,如果没有满足过半机质的情况下,整个zk集群节点也暂时无法访问,目的就是为了保证数据一致性的问题。
在zk中整个集群必须选举一个领导和从节点的角色,没有实现中心化思想。

注册中心的情况下:建议使用ap Eureka

中心化思想 选举领导和从节点
去中心化思想 人人都是平等的

Nacos 1.0 版本开始支持cp和ap 默认是ap模式
Eureka支持ap保证可用性
Zk cp保证数据一致性

ap:保证可用性
cp:保证数据一致性

zookeeper选举机质:

  1. 判断zxid是否相等
  2. 在比较myid
    在这里插入图片描述

zk中心化集群 选举领导(leader)和从节点(follower3)只能有一个leader角色,多个从节点。

猜你喜欢

转载自blog.csdn.net/yang13676084606/article/details/113817887