远方的灯塔 - 专注于服务端技术分享 远方的灯塔 - 专注于服务端技术分享
首页
  • Java SE
  • Struts2
  • Hibernate
  • MyBatis
  • JAX-WS
  • 并发
  • 分布式
  • Git
  • 文章分类
  • 文章标签
  • 文章归档
  • 《C程序设计语言》
心情随笔
友情链接
给我留言 (opens new window)
关于我
GitHub (opens new window)

Terwer Green

一个后端老菜鸟
首页
  • Java SE
  • Struts2
  • Hibernate
  • MyBatis
  • JAX-WS
  • 并发
  • 分布式
  • Git
  • 文章分类
  • 文章标签
  • 文章归档
  • 《C程序设计语言》
心情随笔
友情链接
给我留言 (opens new window)
关于我
GitHub (opens new window)
  • JavaSE

  • 开源框架

  • Linux

  • Struts2

  • Hibernate

  • Webservice

  • 分布式

    • RPC架构设计及IO模型
    • NIO编程及其三大核心原理
    • NIO三大核心之缓冲区(Buffer)
    • NIO三大核心之通道(Channel)
    • NIO三大核心之选择器(Selector)
    • Netty核心原理
    • 线程模型以及传统IO阻塞模型
    • Reactor模型
    • Netty线程模型
    • Netty核心API介绍
    • Netty入门与异步模型
    • Netty高级进阶之Netty编解码器
    • Netty高级进阶之基于Netty的群聊天室案例
    • Netty高级进阶之基于Netty的HTTP服务器开发
    • Netty高级进阶之基于Netty的Websocket开发网页聊天室
    • Netty高级进阶之Netty中的粘包和拆包的解决方案
    • Nety源码剖析
    • 自定义RPC框架之分布式架构网络通信理论
    • 自定义RPC框架之基于Netty实现RPC框架
    • 分布式架构理论
    • 分布式理论之数据一致性
      • 分布式理论
        • 数据一致性
        • 什么是分布式数据一致性
        • 副本一致性
        • 一致性分类
        • 一致性模型图
    • 分布式理论之CAP定理
    • 分布式理论之BASE定理
    • 分布式一致性协议之两阶段提交协议(2PC)
    • 分布式一致性协议之三阶段提交协议(3PC)
    • 分布式一致性协议之NWR协议
    • 分布式一致性协议之Gossip协议
    • 分布式一致性协议之Paxos协议
    • 分布式一致性协议之Raft协议
    • 分布式一致性协议之Lease机制
    • 分布式系统设计策略之心跳检测
    • 分布式系统设计策略之高可用
    • 分布式系统设计策略之容错性
    • 分布式系统设计策略之负载均衡
    • 分布式架构服务调用
    • 分布式服务治理之服务协调
    • 分布式服务治理之服务削峰
    • 分布式服务治理之服务降级
    • 分布式服务治理之服务限流
    • 分布式服务治理之服务熔断
    • 分布式服务治理之服务链路追踪
    • 架构设计基本原则之开闭原则(OCP)
    • 架构设计基本原则之单一职责原则(SRP)
    • 架构设计基本原则之接口隔离原则(ISP)
    • 架构设计基本原则之里式替换原则(LSP)
    • 架构设计基本原则之依赖倒置原则(DIP)
    • 架构设计基本原则知识扩展
    • 分布式架构知识拓展与总结
  • 分布式框架

  • 后端开发
  • 分布式
terwer
2022-04-28
目录

分布式理论之数据一致性

# 分布式理论

# 数据一致性

# 什么是分布式数据一致性

分布性数一致性,指的是数据在多份副本中存储时,各副本中的数据是一致的。

image-20220317203744981

# 副本一致性

分布式系统中,数据往往会有读个副本。多个副本就需要保证数据一致性。这就带来了同步的问题,因为网络阻塞等因素,我们几乎无法保证可以同时更新所有机器中的所有数据,就会有数据不一致。

image-20220317204315708

总之,无法找到满足分布式系统数据一致性的解决方案。因此,如何保证数据一致性,同时又不影响性能,是每一个分布式系统需要考虑和权衡的。所以,就产生了一致性级别。

# 一致性分类

  1. 强一致性

    符合用户直觉的。它要求用户写进去是什么,读出来就是什么。用户体验好,但是实现起来对性能影响较大。强一致性很难实现。

  2. 弱一致性

    约束了系统在写入成功后,不承诺立即读到写入的值,也不承诺数据多久达成一致,但是会尽可能保证某个时间级别(比如秒级别)后,数据能达到一致。

  3. 最终一致性

    最终一致性是弱一致性的一种,无法保证数据更新后,后续所有访问都能获取到最新值,需要一个时间,在这个时间之后可以保证这一点(在一个时间节点之后,数据会最终达到一致)。在这个时间之内,数据可能会不一致,这个系统无法保证强一致性的时间片段被称为不一致窗口。不一致时间窗口的时间长短取决于很多因素,比如备份数据的个数、网络传输延迟、系统负载等。

image-20220317210009123 最终一致性在实际应用中有很多变种

  • 因果一致性

    如果进程A通知进程B更新了一个数据项,那么进程B的后续访问将返回更新后的值。与进程A无因果关系的进程C的访问将遵守一般的最终一致性规则。

image-20220317215154546

  • 读已之所写一致性

    当进程A更新一个数据项之后,它总是访问到更新过的值,不会看到旧值。这是因果一致性的特例。

image-20220317222852440

  • 会话一致性

    把访问存储系统的进程放到会话的上下文。只要会话还在,就能保证”读己之所写一致性“。如果由于某些失败情形会话终止,就要建立新的会话,而且系统的保证不会延续到新的会话。

image-20220317223501094

  • 单调读一致性

    如果一个进程已经读取到一个特定值,那么该进程不会读取到该值以前的任何值。

image-20220317224143281

  • 单调写一致性

    系统保证对同一个进程的写操作串行化。

image-20220317224245157

# 一致性模型图

image-20220317224446843

编辑 (opens new window)
#rpc#consistence
上次更新: 2023/02/22, 13:47:25
分布式架构理论
分布式理论之CAP定理

← 分布式架构理论 分布式理论之CAP定理→

最近更新
01
解决css部分border被圆角切掉之后圆角的边框消失问题
03-18
02
使用TypeScript开发一个自定义的Node-js前端开发脚手架
03-08
03
Github-Actions使用release-please实现自动发版
03-06
更多文章>
Theme by Vdoing | Copyright © 2011-2023 Terwer Green | MIT License | 粤ICP备2022020721号-1 | 百度统计
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式