COPS

KV存储
整个集群上保证causal dependencies
ALPS(Availability, low Latency, Partition-tolerance, and high Scalability)系统必须牺牲强一致性,在这个约束下实现最强的一致性

handler函数必须是可结合和交换的,replica能以接收顺序处理冲突写。

COPS 通过在写入所有依赖项后才写入版本来在复制期间提供因果+一致性

需要存储版本号
COPS-GT还包含依赖的list

(1)每个集群都维持一份完整的数据
在集群内
使用一致性hash划分keyspace
每个key在少量节点上使用chain replication容错
(2)write局部完成后,primary node将其放入replication queue,发送给remote equivalent nodes(针对某个key而言,primary node集合)。只有其依赖全部满足后,才会在局部进行commit

当在所有replica都提交时,移除依赖
每个client最多有一个未完成的put,因为之后的put必须知道前面put的版本号,才能知道依赖关系

1.1 最终一致性

我们期望在本地处理读写请求
(1)收到写请求后,本地处理完毕后即可向client响应。后台会自动将数据发送给其他数据中心(DC)。
问题:由于网络传输问题,在其他数据中心无法保证执行的顺序。在DC1可能是Wx,Wz,DC2中可能为Wz,Wx;

不同DC对同一数据的写请求顺序问题,通过时间戳保证不会让旧的请求最终存留下来。
处理同一时间戳情况:在实现中需要对写请求附上<时间戳, 机器ID>来进行区分
这样做的前提条件是各DC的时间戳是同步的。

(2)为了提供顺序的保证,可以让系统支持sync(k, #v)操作,其会阻塞后续执行,除非DC中具有至少相同的版本号。
v1 = put(k1, val1)
sync(k1, #v1)
put(k2,val2)
这样就能保证在不同DC中,k1肯定在k2之前执行。

(3)上面的sync会阻塞程序的执行,为了快速处理写请求,可以采用Log的方式
每个DC本地都有LOG发送和接收服务器,client的写请求写入LOG发送服务器即可对client进行响应。LOG发送服务器对执行的顺序提供保障。(队列方式)

1.2 因果一致性

在运行过程中,会一直维护上下文(Context),在向其他DC发送时会将Context一起发送,即下图最后一行。

其他DC收到请求后,会对Context进行验证,看依赖是否满足,只有依赖满足后才会实际写入。

对put请求,会将Context清空,这代表这下一个操作只依赖这个put请求。
级联依赖问题:上图中Z依赖X,可能已经收到了X,但X依赖的其他项还没有满足。

1.3 存在的问题

(1)因果一致性只能捕捉到它涉及到的因果关系,例如你更新数据后,打电话告诉朋友,他再去查看这个数据,那么可能不会看到最新的数据,因为这种因果关系是无法被系统捕捉到的。

(2)下述中是因果一致的,但无论哪种顺序执行都会出现问题
第一种,在中间修改ACL,删除该用户的访问权限后,仍能拿到数据
第二种,在中间添加用户的ACL

证书

(1)为了防止中间人攻击,一些机构会给网站所有者颁发证书
其中包含:域名,公匙,以及私匙的签名。(私匙的签名是只有原网站所有者知道的)
client在访问网站时,会先得到证书,然后用证书中的公匙加密一些随机数,发送回网站,网站用私匙进行解密。从而进行验证。

(2)但为了防止一些恶意的CA机构,使用了CT系统。CA颁发的证书都需要先添加到CT LOG服务器中。
为防止系统删除数据,该系统是append-only,no fork的。即保证了可以联合CA进行伪造,但最终一定会被检测到,证据不会被删除。
client收到证书后,会先在CT中验证是否包含该证书。如果不包含,则终止访问。
(3)如何检测伪造的证书?需要一些网站的监视器获取这些日志,进行检测。

(4)使用Merkle trees处理日志,加快检测速度。
如何检测分支结构?因为如果存在分支的话,可能会将其中一个分支展示给用户,另一个分支展示给监视器,这样就无法检测到伪造证书了。
使用了gossip pool的概念,浏览器会将最近得到的STH (signed tree head)都放入该pool中,如果检测到前面的一些STH不是后面另一些STH的前缀,则出现分支。

分布式系统:COPS相关推荐

  1. 分布式系统因果一致性与COPS算法

    COPS是保序系统的集群(Clusters of Order Preserving System)的简称.在了解COPS之前,最好首先了解一下分布式系统CAC算法,从CAP-->CAC--> ...

  2. 分布式系统 一致性模型的介绍 以及 zookeeper的 “线性一致性“ 讨论

    文章目录 1. 一致性 概览 1.1 分布式系统的 "正确性" 1.2 线性一致性(Linearizability) 1.3 顺序一致性(Sequential consistenc ...

  3. 浅析分布式系统之体系结构 技术基本目标----一致性(单对象、单操作)

    一致性的本质 一致性定义:逻辑层面,一致性(consistency)是指一個形式系統中不蕴含矛盾(wiki).在计算机系统的范畴之内,一致性其实是一种人们对于系统的综合需求,人们往往需要计算机的运行结 ...

  4. 《异步处理在分布式系统中的优化作用》学习笔记

    原文地址:http://www.infoq.com/cn/presentations/optimization-of-asynchronous-processing-in-distributed-sy ...

  5. Travis CI : 最小的分布式系统(三)

    日志的作用有两个:当构建日志的数据块通过消息队列进来时,更新数据库对应行,然后推送它到Pusher用于实时的用户界面更新. 日志块以流的形式在同一个时间从不同的进程中进来,然后被一个进程处理.这个进程 ...

  6. Travis CI : 最小的分布式系统(一)

    (本文翻译自http://www.paperplanes.de/2013/10/18/the-smallest-distributed-system.html,由@金斌_jinbin 翻译) Trav ...

  7. 整理下.net分布式系统架构的思路

    最近看到有部分招聘信息,要求应聘者说一下分布式系统架构的思路.今天早晨正好有些时间,我也把我们实际在.net方面网站架构的演化路线整理一下,只是我自己的一些想法,欢迎大家批评指正. 首先说明的是.ne ...

  8. 如何选择分布式系统(区块链)协议?

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 如何选择分布式系统(区块链)协议? 在构建包分布式系统功能的应用程序时,<财富>500强企业和创始人经常问我 ...

  9. 分布式系统的时间顺序

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 分布式系统的时间顺序 区块链被认为是分布式的系统,分布式系统中由于多节点,通讯.物理位置等的问题,各节点间时间一致的问题 ...

最新文章

  1. mysql导出csv数据_mysql 导出 csv数据命令
  2. 讨论Markov Random Field和Gibbs Random Field心得
  3. python编程入门指南怎么样-python编程从入门到实践这本书怎么样
  4. Linux下的sed命令使用详解
  5. SQL:查询学习笔记
  6. 【正一专栏】贾乃亮发文后李小璐会如何回应?
  7. Vulkan Video实现GPU加速视频编码/解码
  8. “约见”面试官系列之常见面试题之第九十四篇之MVVM框架(建议收藏)
  9. PWM调光方法在LED亮度调节中的应用
  10. is not a function_libcxx 的 std::function 源码分析
  11. PyTorch 1.0 中文官方教程:聊天机器人教程
  12. SpringBoot--自动装配之Import注解以及源码分析
  13. 【整理总结】代码沉淀 - Caliburn.Micro - MV*模式短小精悍的框架
  14. c++ 写并查集算法模板
  15. 软件测试级别详细介绍
  16. ecshop 框架 简单分析
  17. coco2d-x学习第一章 codo2d-x 2.2.3+vs2010环境搭建和新建项目
  18. 基于kinect的人体动作识别系统
  19. python之并发编程-进程之间的通信
  20. 关于苹果手机部分版本机型上传时卡住相册问题记录

热门文章

  1. 4款苹果耳机平价替代品,买不起苹果耳机买替代!
  2. 避坑——request.getSession().setAttribute与request.setAttribute的区别
  3. uNo面板L灯一直闪_单开双控什么意思?单开双控开关接线图和面板接法图解
  4. 电脑新手也能学会的diy装机教程
  5. Floyd算法求最短路
  6. 词典linux版本下载不了,有道词典Linux版下载安装
  7. 【测试团队管理】Node版钉钉飞书机器人提醒团队成员每日缺陷状态
  8. hive sql 怎么实现循环_hive实现for循环
  9. java从电脑接收数据丢失_网络编程:Java数据报之失序和丢包Java -电脑资料
  10. 古诗用html的形式,古体诗的形式有哪些_古体诗的分类