PNUTS是Yahoo!的分布式数据库系统,支持地域上分布的大规模并发操作。它根据主键的范围区间或者其哈希值的范围区间将表拆分为表单元(Tablet),多个表单元存储在一个服务器上。一个表单元控制器根据服务器的负载情况,进行表单元的迁移和拆分。每条记录的数据都没有固定的模式(采用JSON格式的文本)

组件

  • 区域(Region):一个区域包含全部表的数据和相关组件。
  • 表单元控制器(Tablet controller):一个表单元是是表中被划分出来的一组记录的集合。表单元控制器管理着表单元的创建,切分,维护存储单元与表单元的映射关系。有主备服务器来保证其可用性。
  • 路由器(Router):根据从表单元控制器中读取到的信息将数据路由到正确的存储单元。另外也支持数据的聚合。
  • 存储单元(Storage unit):存储表单元。可以是一个Ulix文件系统(hash表)或者MySQL InnoDB(顺序表)
  • 消息中间件(YMB):分发备份记录到其他的Region或者更新通知给客户端。

一致性

由于PNUTS设计数据分布在地理上的不同位置,所以它没有采用代价比较高的事务操作。另外由于最终一致性可能会出现一些不希望看到的中间结果,所以PNUTS主要实现一种时序上的一致性。

在每条记录中,有一个字段标志该记录Master所属的区域,所有的更新先发往Master,由Master将数据同步到其他的备份中。为了避免插入操作的冲突,表也分为主备,所有的记录插入操作都先在主表上执行。在底层,通过消息中间件(YMB, Yahoo! Message Broker)来保证数据分发的顺序。

另外每条记录都有一个版本号,由应用根据自己的需要,来决定读写记录的方式: 可以读取任意的备份,也可以读取最新的记录,或者读取指定的版本,在写的时候既可以直接覆盖,也可以实现乐观锁的控制。通过这种方式,来保证应用的读写一致性和写读一致性。

可用性

数据的可用性主要是通过YMB来保证,YMB也同时管理日志,数据发布到YMB视为数据的提交,初始时YMB将数据写到两个服务器的日志中, 只有当数据分发到所有的区域上后,YMB才将日志删除。

在一条记录的master区域不可用时,应用程序可以决定是否继续更新,如果更新则需要手动解决潜在的冲突。

客户端支持自动的failover

高性能

主要通过本地化操作实现,系统统计最近三次请求的来源,将master迁移到相应的Region中。

表单元控制器检测系统的负载情况,通过迁移或者拆分tablet来均衡负载。

另外,数据拷贝的传输为异步操作。

分布式系统介绍-PNUTS的更多相关文章

  1. 大型网站系统与Java中间件实践

    大型网站系统与Java中间件实践(贯通分布式高并发高数据高访问量网站架构与实现之权威著作,九大一线互联网公司CTO联合推荐) 曾宪杰 著   ISBN 978-7-121-22761-5 2014年4 ...

  2. 《大型网站系统与JAVA中间件实践学习笔记》-1

    第一章:分布式系统介绍 定义:分布式系统是一组分布在网络上通过消息传递进行协作的计算机组成系统. 分布式系统的意义 升级单机处理能力的性价比越来越低 单机处理器能力存在瓶颈 处于稳定性和可用性考虑 阿 ...

  3. 《大型网站系统与JAVA中间件实践》【PDF】下载

    <大型网站系统与JAVA中间件实践>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230062557 内容简介 到底是本什么书,拥有这样 ...

  4. 大型网站系统与 Java 中间件实践

    http://wanglizhi.github.io/2016/07/27/JavaWeb-And-MiddleWare/ 第一章 分布式系统介绍 分布式系统的定义:组件分布在网络计算机上,组件间仅仅 ...

  5. 一文读懂非关系型数据库(NoSQL)

    为了更好的理解非关系型数据库,我又深入的度娘了下 原文地址:https://baijiahao.baidu.com/po/feed/share?wfr=spider&for=pc&co ...

  6. 最新咕咆+鲁班+图灵+享学+蚂蚁+硅谷+源码 Java架构师资料《Java架构师VIP课程》

    最新的Java架构师完整资料,完整视频+源码+文档. 每一套都是一百多个G的资料,无密. JAVA架构师全套课程 咕泡学院互联网架构师第一期 咕泡学院互联网架构师第二期 咕泡学院互联网架构师第三期 博 ...

  7. 【译】Object Storage on CRAQ 上篇

    摘要 大型存储系统通常会在许多可能出故障的组件上进行数据复制和数据分区,从而保证可靠性和可扩展性.但是许多商业部署系统为了实现更高的可用性和吞吐量,牺牲了强一致性,特别是那些实时交互系统. 本论文介绍 ...

  8. Zipkin分布式跟踪系统介绍

    Zipkin是什么Zipkin分布式跟踪系统:它可以帮助收集时间数据,解决在microservice架构下的延迟问题:它管理这些数据的收集和查找:Zipkin的设计是基于谷歌的Google Dappe ...

  9. MooseFS分布式文件系统介绍

    一.简介 MooseFS是一个具备冗余容错功能的分布式网络文件系统,它将数据分别存放在多个物理服务器或单独磁盘或分区上,确保一份数据有多个备份副本.对于访问的客户端或者用户来说,整个分布式网络文件系统 ...

随机推荐

  1. ZooKeeper_客户端工具zkCli.sh使用

    #一.命令 [root@VM_31_182_centos bin]# ./zkCli.sh -server 127.0.0.1:2181   #二.帮助命令 help #三.创建.修改.删除.退出de ...

  2. 初学者必读:IBM长文解读人工智能、机器学习和认知计算

    转自:https://zhuanlan.zhihu.com/p/27228015?utm_source=weibo&utm_medium=social 人工智能的发展曾经经历过几次起起伏伏,近 ...

  3. http抓包以及网速限定

    由于我是MAC, 举荐一个Charles工具 限速选择在:可以打开Proxy –> Throttle Setting 设置. 附多篇介绍:http://www.36ria.com/6278 ht ...

  4. [转]如何将PHP作为Shell脚本语言使用

    From : http://www.linuxfly.org/post/559/ 我们都知道,PHP是一种非常好的动态网页开发语言(速度飞快,开发周期短……).但是只有很少数的人意识到PHP也可以很好 ...

  5. IIS7增加mine类型,以便可以访问apk

    1.打开IIS 2.找到mine类型,单击右边的添加 3.输入apk的配置 application/vnd.android-package-archive .这样,用户就可以直接访问apk了

  6. Maven 搭建spring boot多模块项目(附源码),亲测可以,感谢原创

    原创地址:https://segmentfault.com/a/1190000005020589 我的DEMO码云地址,持续添加新功能: https://gitee.com/itbase/Spring ...

  7. 数据库实例: STOREBOOK > 用户 > 编辑 用户: SYS

    ylbtech-Oracle:数据库实例: 数据库实例: STOREBOOK  >  用户  >  编辑 用户: SYS 编辑 用户: SYS 1. 一般信息返回顶部 1.1, 1.2, ...

  8. opengl 教程(24) shadow mapping (2)

    原帖地址:http://ogldev.atspace.co.uk/www/tutorial24/tutorial24.html 本篇教程中,我们通过shadowmap来实现阴影渲染. 我们知道shad ...

  9. fasttext介绍和试用

    http://fasttext.apachecn.org/cn/docs/v0.1.0/support.html fasttext介绍网站 https://github.com/facebookres ...

  10. Binary Tree ZigZag Level Order Traversal leetcode java

    题目: Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from lef ...