# 杂项

记录一些杂项

# CAP

# CAP 介绍

1. **CAP是 Consistency、Availability、Partition tolerance三个词语的缩写，分别表示一致性、可用性、分区容忍性。**
2. **一致性(Consistency)**: 是指在同一时刻，[分布式系统](https://so.csdn.net/so/search?q=%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F&spm=1001.2101.3001.7020)中的所有数据备份为相同值；
3. **可用性(Availability)**: 指集群中的某一个节点故障宕机后，集群还能响应客户端请求。即假设一个节点挂，另一个备份节点要顶上
4. **分区容忍性(Partition tolerance)**: 当分布式系统中因为一些原因导致无法通信而分成多个分区，系统还能正常对外服务。在实际应用中指的是**集群架构和数据**支持动态横向扩展。所谓动态，就是不停机~~。横向扩展指的是当一套系统性能达到瓶颈时，运维人员可以利用增加服务器数量，来提供系统性能。而不是购买更贵的高性能服务器

# eureka、zookepeer、nacos三者的关系

# eureka、zookepeer、nacos 简单对比

1. **eureka**

[![image.png](http://wiki.shopqorg.com/uploads/images/gallery/2023-07/scaled-1680-/98Eimage.png)](http://wiki.shopqorg.com/uploads/images/gallery/2023-07/98Eimage.png)

eureka:服务的注册中心，主要是保存服务的信息，可以进行搭建集群来提高注册中心的高可用

  
提供者:将自己的服务信息注册到eureka上面供消费者消费，同时也将获取注册表信息到本地

  
消费者:在eureka上面拉取服务，然后通过httpclient进行调用服务，同时也将自己的信息注册到eureka上面

[![image.png](http://wiki.shopqorg.com/uploads/images/gallery/2023-07/scaled-1680-/image.png)](http://wiki.shopqorg.com/uploads/images/gallery/2023-07/image.png)

分析上图的注册过程：  
1、先读eureka server的配置信息，从而知道eureka server在哪，以便后面进行注册  
2、接着再读取自己的配置信息，然后将自己的信息封装在InstanceInfo实例中，等下将实例发送到eureka server中  
3、通过上面步骤已经知道eureka server的地址了，此时先把注册拉取到本地缓存起来  
4、将上面封装的InstanceInfo实例发送到eureka server进行注册，然后初始化心跳检测以及缓存刷新（这些都是通过开启后台线程完成的）  
5、再次拉取注册表更新本地注册表信息

 1.3、eureka服务续约  
1、Eureka Client通过发送心跳进行续约  
2、默认情况下每30秒发送一次心跳  
3、如90秒内Eureka Server未收到续约，则进行服务剔除

 1.4、eureka服务剔除  
1、Eureka Client优雅退出时会发送cancel命令  
2、Eureka Server收到cancel命令时会删除该节点

 1.5、eureka自我保护  
1、Eureka Server会自动更新续约更新阀值  
2、Eureka Server续约更新频率低于阈值则进入保护模式  
3、自我保护模式下Eureka Server不会剔除任何注册信息

**2、zookepper简单介绍**  
<span style="background-color: rgb(194, 224, 244);">定义：简单的说zookepper=文件系统+监听通知机制</span>

 3.1、文件系统  
上面我们说了zookepper是文件系统的类型，下面我们来一起看下

[![image.png](http://wiki.shopqorg.com/uploads/images/gallery/2023-07/scaled-1680-/HgGimage.png)](http://wiki.shopqorg.com/uploads/images/gallery/2023-07/HgGimage.png)

  
每个子目录项如 NameService 都被称作为 znode(目录节点)，和文件系统一样，我们能够自由的增加、删除znode，在一个znode下增加、删除子znode，唯一的不同在于znode是可以存储数据的

有四种类型的znode：  
 1、PERSISTENT-持久化目录节点  
 指client和zookepper断开链接之后，client在zookepper上面创建的节点不会被zookepper删除，还会继续保留  
 2、PERSISTENT\_SEQUENTIAL-持久化顺序编号目录节点  
 比如，一个user模块部署了多台服务器，在zookepper上面进行注册自己服务，zookepper会对user模块进行创建持久性顺序节点，当第一个节点宕机之后，会按照顺序取下一个节点  
 3、EPHEMERAL-临时目录节点  
 client在zookepper上面进注册自己的服务，当服务宕机之后,zookepper会进行删除创建的节点  
 4、EPHEMERAL\_SEQUENTIAL-临时顺序编号目录节点  
 第四种情况和第二种情况很像，只不过，服务宕机之后就会剔除服务，不会永久保留

 3.2、监听通知机制  
客户端注册监听它关心的目录节点，当目录节点发生变化（数据改变、被删除、子目录节点增加删除）时，zookeeper会通知客户端。

# [nacos](https://so.csdn.net/so/search?q=nacos&spm=1001.2101.3001.7020)简单介绍

主要的核心功能

1、服务注册：每个服务客户端通过rest方式向服务端进行注册自己的信息  
2、服务心跳：每个服务客户端都会维护一个定时心跳，向服务到证明自己是健康的，默认5s发送一次  
3、服务同步：服务器集群之间相互进行通讯来保证服务信息的一致性同时提高注册中心的高可用  
4、服务发现：客户端有一个定时任务，定时的去注册中心拉取各个服务的信息列表到本地  
5、服务健康检查：注册中心定时检查各个服务的健康状态

 4.2、可视化界面配置的功能

1、雪崩保护：通过给每个服务实例进行配置阈值，从而实现雪崩保护  
2、临时实例：当服务宕机时，注册中心会进行删除注册的服务实例  
3、永久实例：即使服务宕机了，服务实例也不会被删除，和前面我们一起讨论的zookepper的持久性节点很像

[![image.png](http://wiki.shopqorg.com/uploads/images/gallery/2023-07/scaled-1680-/dHPimage.png)](http://wiki.shopqorg.com/uploads/images/gallery/2023-07/dHPimage.png)

# 新页面

<div drawio-diagram="171"><img src="http://wiki.shopqorg.com/uploads/images/drawio/2025-04/drawing-1-1744169739.png" alt=""/></div>

<div drawio-diagram="164"><img src="http://wiki.shopqorg.com/uploads/images/drawio/2024-07/drawing-1-1720766082.png" alt=""/></div>

# SAP 关联关系

<div drawio-diagram="184"><img src="http://wiki.shopqorg.com/uploads/images/drawio/2025-06/drawing-1-1751087679.png" alt=""/></div>