- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
分布式:一致性问题
1.一致性
一致性(consistency),是指对于分布式系统中的多个服务节点,给定一系列操作,在约定协议的保障下,试图使得它们对处理结果达成“某种程度”的认同。
分布式计算机集群系统中容易出现以下几个问题:
1.节点之间的网络通信是不可靠的,包括消息延迟、乱序和内容错误等;
2.节点的处理时间无法保障,结果可能出现错误,甚至节点自身可能发生宕机;
3.同步调用可以简化设计,但会严重降低分布式系统的可扩展性,甚至使其退化为单点系统。
对于节点的问题就要涉及到一个关于拆分的问题。拆分一般分为水平拆分和垂直拆分,这并不单指对数据库或者缓存的拆分,主要是表达一种分而治之的思想和逻辑。
水平拆分:指由于单一节点无法满足性能需求,需要扩展为多个节点,多个节点具有一致的功能,组成一个服务池,一个节点服务一部分请求量,所有节点共同处理大规模高并发的请求量。垂直拆分:指根据功能进行拆分,简单来说就是什么专业的人干什么事,把一个复杂的功能拆分为多个单一、简单的功能,不同的单一功能组合在一起,和未拆分前完成的功能是一样的。由于每个功能职责单一、简单,使得维护和变更都变得更简单、容易、安全,所以更易于产品版本的迭代,还能够快速地进行敏捷发布和上线。在这样的互联网时代,一致性指分布式服务化系统之间的弱一致性,包括应用系统的一致性和数据的一致性。
无论是水平拆分还是垂直拆分,都解决了特定场景下的特定问题,拆分后的系统或者服务化的系统的最大问题就是一致性问题:如何保证它们的信息、工作进度、状态一致并且协调有序地工作。
2.一致性的问题部分案例
a.下订单和扣库存
电商系统中有一个经典案例,即下订单和扣库存如何保持一致。如果先下订单,扣库存失败,那么将会导致超卖;如果下订单不成功,扣库存成功,那么会导致少卖。这两种都会导致运营成本增加,在严重的情况下需要赔付。也就是说,要将订单和库存的扣除一一对应,保障用户的买卖需求和自身的利益得失。
b.同步和异步调用的超时
1).同步:主要针对的是网络问题导致的系统之间调用超时。对于系统A同步调用系统B超时,A可以得到反馈但是无法确定B是否完成预设,就无法反馈给使用方。
2).异步:使用异步回调返回处理结果,系统A同步调用系统B发起指令,系统B采用受理模式,受理后则返回成功信息,然后系统B处理后异步通知系统A处理结果,那么如果对于A而言没有收到回调结果,那么这两个系统间的状态就不一致,互相认知的状态不同会导致系统间发生错误。
c.缓存问题
1).缓存和数据库不一致
缓存中的数据跟数据库的数据出现了不一致,即其中一方存在脏数据的现象。需要注意的是,只有在对同一条数据并发读写的时候,才可能会出现这种问题。
如果系统并发量很低,特别是读并发很低,那么它发生缓存跟数据库数据不一致的情况相对比较少,概率比较低;如果系统并发量很高,像淘宝、京东等电商平台,每天都是上亿级流量,每秒并发读是几万,每秒都有写请求,这种情况下出现缓存跟数据库不一致的概率就比较高;
2).本地缓存节点间不一致
一个服务池上的多个节点为了满足较高的性能需求,需要使用本地缓存,这样每个节点都会有一份缓存数据的复制,如果这些数据是静态的、不变的,就永远不会有问题,但是如果这些数据是半静态的或者经常被更新的,则被更新时各个节点的更新是有先后顺序的,在更新的瞬间,在某个时间窗口内各个节点的数据是不一致的,如果这些数据是为某个开关服务的,则想象一下重复的请求进入了不同的节点,一个请求进入了开关打开的逻辑,同时另外一个请求进入了开关关闭的逻辑,会导致请求被处理两次,最坏的情况下是导致资金损失。
3).缓存数据结构不一致
该数据由多个数据元组成,其中,某个数据元素需要从数据库或者服务中获取,如果一部分数据元素获取失败,则由程序处理不正确,仍然将不完全的数据存入缓存中,在缓存使用者使用时很有可能因为数据的不完全而抛出异常
3.解决方法
1.分布式一致性协议
a.两阶段提交协议
例如JEE(Java的企业版)的XA协议就是根据两阶段提交来保证事务的完整性,并实现分布式服务化的强一致性(简单的来说就是在任何时刻下,所有节点中的数据都是一样的,任何一次读都能读到某个数据的最近一次写的数据。)。
里面会存在两个角色分别为协调者和参与者(多个?)。
准备阶段:协调者向参与者发起指令,参与者评估自己的状态,如果参与者评估指令可以完成,则会写redo或undo日志,然后锁定资源,执行操作,但是并不提交。提交阶段:如果每个参与者预留资源和执行操作成功,则协调者向参与者发起提交指令,参与者提交资源变更的事务,释放锁定的资源;如果任何一个参与者明确返回准备失败,也就是预留资源或者执行操作失败,则协
您可能关注的文档
- 6.1服务等级管理流程图 conv.docx
- 地方法规-河南省数据要素市场培育行动方案(2025—2027年) conv.docx
- TTAF 268.1—2025 生成式人工智能个人信息保护技术要求 第1部分:总则 conv.docx
- 银河麒麟高级服务器操作系统【rsyslog日志服务】配置手册.pdf
- 校园网网络设备安全技术要求(发布稿) conv.docx
- 信息系统安全管理制度 .pdf
- 安般易察Web API模糊测试系统技术白皮书 conv.docx
- 中央结算公司:2024年区块链数字债券白皮书 conv.docx
- 8.2 事件管理流程图 conv.docx
- TTAF 267.3—2025 软件开发工具包(SDK)用户权益和个人信息保护技术要求 第3部分:地图类.pdf
- 2025自动驾驶公交“车路云一体化”系统联调导则白皮书 conv.docx
- 7月3日攻防演练外部威胁情报信息汇总.pdf
- 7 关系管理流程图 conv.docx
- 【彩页PDF】山石智铠统一终端安全管理系统(EDR)v5.0R6 产品彩页_202506 conv.docx
- TTAF 268.4—2025 生成式人工智能个人信息保护技术要求 第4部分:模型规制控制.pdf
- 卷烟制造工业领域数据安全分类分级指南_29cdd3c9-74f1-4671-a3e0-9e00e6abc64a(1) conv.docx
- 网络安全法(修正草案).PDF
最近下载
- 湖南省湘西自治州2023-2024学年七年级上学期期末语文试题[附答案].pdf VIP
- 超声探头与扫查方式.PPT VIP
- 惠州海滨度假项目酒店托管及返租模式研究2019.pptx VIP
- 五年级上册语文全册教材课后习题参考答案.pdf VIP
- 2025年九年级语文下册课后习题参考答案.docx VIP
- 2025年九年级语文上册课后习题参考答案.docx VIP
- 四川省眉山市东坡中学2024届物理八上期末学业水平测试试题含解析.pdf VIP
- 4.4 国际合作(课件)高二地理课件(人教版2019选择性必修2).pptx VIP
- 《医疗陪诊顾问》2025年考试真题及答案.docx
- 水环境修复(642009)教学大纲.pdf VIP
原创力文档


文档评论(0)