分布式系统你不懂 CAP principle ,你在和我开玩笑?

CAP 定理,估计大部分人都听说过,但CAP 定理的在实际中的价值,其实倒是鲜有人提及。

理解定理到底对实际的操作和使用有什么帮助,估计是很多人都要提及的问题。

Consistency , 一致性

Availability    可用性

Partition tolerance  分区的容错性

但我和我的很多朋友之间讨论这个定理的时候,其实有一些不同的意见,其中关于C 就是有不同的理解

 Consistency ,一致性, 这个一致性,有人理解为在同一个时刻需要数据的一致性,有的人理解是,在最终的一个时刻数据是具有一致性。

这里我想举个例子来讲述一下我理解的 C 到底是什么样子的

例如我们有一个汽车预售系统,而预定汽车在预定期是开放预定的,并且在数量上仅仅有50个名额。 那根据C 的定理, 我们的数据提供的数据 A点写,B点读,C点读,由于B 和 C 之间的网络不通,导致的两个客户端,在访问 B 和 C 节点在同一个时刻可能会得到两个截然不同的值,我个人觉得 这就严重的违背了,C ,这个数据的一致性的定理。 我们需要在一个时刻,客户端访问 ABC,得到的数据是一致的。

可用性 A Availability

基本上在这个概念上,有不同的意见的人比较少,个人理解就是在分布式系统中,任意的可以继续工作的节点都必须对客户的请求产生响应。

上图中 A , B 两个节点是故障点,只有C 节点是存活的,这也就造成两个问题,C 要符合 可用性,则必须能继续提供服务,而提供服务或响应。 其中的响应是包含于 A 和 B 节点一致的服务,例如 读 或 写的服务。

P Partition  tolerance 分区容错性

我们试想如果网络出现问题,则 A , B ,C  不能被互访的时候,每个节点自己就需要单独对客户端进行访问,由于网络的问题,会导致 A, B ,C 三节点的数据不在一致,那么我们的系统还是否能继续工作,则是一个分区的容错性需要考虑的问题。

那么下面的问题是,我知道这个定理到底有什么用?

1  首先,一个数据库系统到底是在使用CAP的那种原理,是需要知道的,知道数据库使用的原理,你就会很清晰的明确的了解到你使用的这个数据库对应的业务是什么。

里有一个我个人最近悟出的道理, 如果选择一个数据库系统仅仅是通过感性来选择,而不是根据业务的特性来选择,则很可能会发生一些尴尬的现象。

例如,我们有一个字幕系统,对我们的系统的要求是,只要能提供数据就好,准确度不要求,但需要持续性的提供服务。

那这样的一个系统我们对于 C   A   P  这三者是怎么考虑的

1 C 数据的一致性

2 A 数据的可用性

3 P 数据的分区容错

根据上面的简单(或许还没有准确秒的) 需求,我们可以大致判断这个系统我们的数据库如果根据 C A P 原理我们能提供的系统方式要保证, A , P 

从提供服务的  A , P  两个点.

主要原因是,客户在输入字幕后,如果我们从多个节点中读取,会保证数据的提供,并且在网络或其他节点出现故障时,还能继续提供服务,但我们不能保证的就是数据的一致性,如果客户从 A 节点写入数据,但很可能我们在下一秒,或者几十秒都不能再 B 点读出出数据,或者 C 点已经能读出数据,但B 点和C点的数据不同步,这都是可以被这个系统所容忍的。

而符合我们上面系统中所描述的数据库,有哪些,大名鼎鼎的 Cassandra 就是这样的系统,所以妄图在同一个时间点,必须严格的读取同样的数据,这样的想法,你想都不要想在 cassandra 上使用,同时你要理解这个特性,你也就很清楚cassarda 会应用到哪些系统中,而不会不敢不顾的把cassardra放到银行金融中关于付款,收款之类的系统中使用。

而下面如果我们还有相关的需求,例如我们有一个关于合同签署的系统,顾客在我们这里购买汽车,同时需要签署合同并上传 PDF 的电子版作为最终4S 店和 客户,汽车金融公司,三方的具有法律效力的存档。 如果我们使用分布式系统我们需要保证什么?

1 C 一致性, 2 A  可用性  3  分区容错性

根据业务,我们可以很清楚的明白,C 一致性是我们要保证的,我们不能再 A 节点上传PDF 文档后,在B 节点还查不到, 在C 节点查到的文档和 B 节点不一致,从业务的角度来将,这是不能容忍的。同时如果有 B 节点失效,那C 节点,A 节点还能继续提供相关的服务。 

我们损失的是 A ,可用性,如果我们不能保证 C 的前提下,我们会自动的终止服务。 意思就是如果我们不能保证幸存节点之间的信息是 C ,具有一致性的话,则我们就应该停止服务。

在数据库系统中,例如MONGO DB 就是 支持 CP 的系统, 例如我们有 三个节点的复制集的MONGODB 当我们的受损的节点超过节点数据量的大多数的情况下,系统就会终止相关的服务。

支持 CA 系统的目前有  Apache KAFKA,  其实这个系统中关键点在于他的日志系统在哪里,如果存储日志的主节点和 其他节点无法进行网络数据同步,则能提供服务的就只有这个存储日志的主节点,所以这个KAFKA系统就丢弃了 P 这个属性。

所以在理解了CAP 原理后,你就可以很清楚的,明白你选择的系统适合什么业务,而什么业务又应该选择什么样的系统来支持。

在目前的分布式系统蓬勃发展的情形下,例如 MYSQL 的 MGR  则应该是 CP原理的产物(如有不同意见请告知),SQL SERVER 的 AWO 也是类似 CP 的产物,而类似ORACLE 这样的数据库产品,到目前为止,还不属于分布式数据库系统的一员。

内容概要:本文档名为《赵家湾学校后大门一百三十六栋.txt》,实则是一份综合性科研仿真资源索引,集中展示了多个技术领域的Matlab/Simulink与Python代码实现项目。内容涵盖风光互补制氢合成氨系统容量-调度优化、微电网能量管理、无人机三维路径规划、图像分割、信号处理、电力系统建模、模型预测控制(MPC)、深度学习预测模型(如LSTM、Transformer)、联邦学习、强化学习应用等多个前沿方向。文档不仅列出具体研究题目算法模型,还整合了智能优化算法(如PSO、GWO、DBO等)、路径规划、车间调度、通信优化、雷达跟踪、元胞自动机模拟等通用技术模块,并附有网盘链接提供完整代码与仿真模型下载,旨在为科研人员提供可复现的技术支持与开发参考。; 适合人群:具备一定编程基础,从事电气工程、自动化、计算机科学、人工智能、控制工程、能源系统等相关领域的研究生、科研人员及工程技术开发者。; 使用场景及目标:①辅助高水平学术论文复现与科研项目开发;②为硕士/博士论文、课程设计、学科竞赛提供算法实现与仿真建模支持;③提升在新能源并网、智能控制、路径规划、负荷预测、故障诊断等领域的工程实践与创新能力。; 阅读建议:此文档为资源导航型材料,建议结合个人研究方向筛选对应主题,通过提供的百度网盘链接获取完整代码包,并配合相关文献进行仿真实验与参数调试,以实现高效复用、二次开发与技术创新。
内容概要:本文深入解析了AI Agent(智能体)的技术原理与系统架构,阐述其如何通过“思考-行动-观察”的闭环循环,使大语言模型(LLM)从被动应答的对话系统进化为能主动完成复杂任务的智能实体。文章详细介绍了Agent四大核心模块:作为决策中枢的LLM(大脑)、实现外部交互的工具调用(双手)、支持状态延续的记忆模块(记忆),以及驱动自主执行的规划与协调机制(协调)。同时对比了Agent与传统聊天机器人在任务规划、工具使用、记忆能力执行闭环等方面的本质差异,并探讨了从单智能体到多智能体系统的架构演进趋势,强调专业分工对处理复杂任务的重要性。最后,文章分析了Agent模式与预设工作流模式的应用权衡,指出前者适用于灵活探索类任务,后者更适合确定性高的固定流程。; 适合人群:对人工智能、大模型应用开发感兴趣的技术人员、产品经理及研究人员,尤其适合具备一定AI基础知识、希望深入了解Agent系统设计的专业人士; 使用场景及目标:①理解AI Agent的核心架构与关键技术组件;②掌握ReAct等主流执行范式;③区分Agent与传统聊天机器人的能力边界;④判断在实际业务中应采用Agent模式还是工作流模式; 阅读建议:本文理论性强且结构清晰,建议结合实际Agent案例(如AutoGPT、LangChain应用)进行对照学习,重点关注各模块间的协同机制与设计权衡,以深化对Agent系统级思维的理解。
内容概要:本文针对三相并网逆变器在瞬态过程中的全局最优控制问题,提出一种基于有限字符集预测控制(FCS-MPC)的渐进式调控策略,旨在实现从电流畸变抑制到功率无差拍响应的平滑过渡。通过构建电流与功率双模态预测控制框架,结合Simulink仿真与Matlab代码实现,系统分析了有限控制集对系统动态响应、谐波含量及功率调节性能的影响机理,深入探讨了预测模型构建、代价函数设计与控制参数优化的关键技术路径,验证了该策略在提升并网电能质量、增强动态响应能力实现多目标协同控制方面的优越性与可行性; 适合人群:具备电力电子、自动控制理论基础,熟悉Matlab/Simulink仿真环境,从事新能源发电并网、逆变器先进控制策略研究等相关领域的研究生、科研人员及工程技术人员; 使用场景及目标:①深入研究有限集模型预测控制在三相并网系统中的理论与应用;②掌握电流与功率双模态预测控制策略的设计方法与实现流程;③实现高动态性能、低谐波畸变与功率快速无差拍响应的综合控制目标; 阅读建议:建议结合文中提供的Matlab代码与Simulink仿真模型进行复现实验,重点剖析预测时域设定、代价函数权重配置及开关状态枚举策略对系统性能的影响,以全面理解FCS-MPC的核心原理及其在工程实践中的优化技巧。
内容概要:本文系统阐述了多层感知机(MLP)神经网络的底层原理、从零手写代码实现、工程化框架落地及超参数优化的完整体系。内容涵盖MLP的理论基础、前向传播与反向传播的数学推导、激活函数与损失函数的选择、NumPy原生实现与PyTorch/TensorFlow工业级封装,并深入解析了网络结构、训练优化、正则化等超参数的系统化调参策略。通过构建“数学原理→代码实现→调参优化→故障排查→工业实战”的闭环体系,提供可复用的标准化模型开发流程,结合分类与回归实战案例,全面指导模型评估、可视化与部署落地。; 适合人群:具备一定Python机器学习基础,从事AI研发、数据科学、工程建模的1-5年经验技术人员,以及高校科研人员与企业AI落地团队。; 使用场景及目标:①掌握MLP神经网络的数学本质与代码实现机制;②系统学习超参数调优策略,解决过拟合、欠拟合、梯度异常等常见问题;③实现从学术理解到工业级模型部署的全流程落地;④提升在结构化数据建模任务中的模型性能与鲁棒性。; 阅读建议:建议结合文中提供的NumPy与PyTorch代码边学边练,重点理解反向传播推导与调参逻辑,对照实战案例进行调试与优化,建议按章节顺序学习,尤其重视第5章超参体系与第9章故障排查,以建立系统性调参思维与问题解决能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值