分布式系统介绍-PNUTS
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的更多相关文章
- 大型网站系统与Java中间件实践
大型网站系统与Java中间件实践(贯通分布式高并发高数据高访问量网站架构与实现之权威著作,九大一线互联网公司CTO联合推荐) 曾宪杰 著 ISBN 978-7-121-22761-5 2014年4 ...
- 《大型网站系统与JAVA中间件实践学习笔记》-1
第一章:分布式系统介绍 定义:分布式系统是一组分布在网络上通过消息传递进行协作的计算机组成系统. 分布式系统的意义 升级单机处理能力的性价比越来越低 单机处理器能力存在瓶颈 处于稳定性和可用性考虑 阿 ...
- 《大型网站系统与JAVA中间件实践》【PDF】下载
<大型网站系统与JAVA中间件实践>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230062557 内容简介 到底是本什么书,拥有这样 ...
- 大型网站系统与 Java 中间件实践
http://wanglizhi.github.io/2016/07/27/JavaWeb-And-MiddleWare/ 第一章 分布式系统介绍 分布式系统的定义:组件分布在网络计算机上,组件间仅仅 ...
- 一文读懂非关系型数据库(NoSQL)
为了更好的理解非关系型数据库,我又深入的度娘了下 原文地址:https://baijiahao.baidu.com/po/feed/share?wfr=spider&for=pc&co ...
- 最新咕咆+鲁班+图灵+享学+蚂蚁+硅谷+源码 Java架构师资料《Java架构师VIP课程》
最新的Java架构师完整资料,完整视频+源码+文档. 每一套都是一百多个G的资料,无密. JAVA架构师全套课程 咕泡学院互联网架构师第一期 咕泡学院互联网架构师第二期 咕泡学院互联网架构师第三期 博 ...
- 【译】Object Storage on CRAQ 上篇
摘要 大型存储系统通常会在许多可能出故障的组件上进行数据复制和数据分区,从而保证可靠性和可扩展性.但是许多商业部署系统为了实现更高的可用性和吞吐量,牺牲了强一致性,特别是那些实时交互系统. 本论文介绍 ...
- Zipkin分布式跟踪系统介绍
Zipkin是什么Zipkin分布式跟踪系统:它可以帮助收集时间数据,解决在microservice架构下的延迟问题:它管理这些数据的收集和查找:Zipkin的设计是基于谷歌的Google Dappe ...
- MooseFS分布式文件系统介绍
一.简介 MooseFS是一个具备冗余容错功能的分布式网络文件系统,它将数据分别存放在多个物理服务器或单独磁盘或分区上,确保一份数据有多个备份副本.对于访问的客户端或者用户来说,整个分布式网络文件系统 ...
随机推荐
- Flume 1.5.0简单部署试用
================================================================================ 一.Flume简介 ========= ...
- Material Designer的低版本兼容实现(六)—— Ripple Layout
新版的Android5.0添加了涟漪效果,虽然开源的库提供了各种控件便于大家使用涟漪效果.但是仍旧不可能满足所有需求,因此我今天改出来一个类叫做,LayoutRipple,其实感觉跟应该叫Ripple ...
- 开源项目MultiChoiceAdapter详解(二)——MultiChoiceArrayAdapter的使用
MultiChoiceArrayAdapter其实就是可以多选的ArrayAdapter了,ArrayAdpter我们已经很熟悉了.MultiChoiceArrayAdapter这个类是抽象类,所以使 ...
- Maven 入门指南
为什么要用 Maven? Maven 主要帮助用户完成以下 3 个方面的工作: 生命周期管理,便捷的构建过程: 依赖管理,方便引入所需依赖 Jar 包: 仓库管理,提供统一管理所有 Jar 包的工具: ...
- 聊一聊Spring中的线程安全性
Spring作为一个IOC/DI容器,帮助我们管理了许许多多的“bean”.但其实,Spring并没有保证这些对象的线程安全,需要由开发者自己编写解决线程安全问题的代码. Spring对每个bean提 ...
- frp官方中文文档
frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议. 目录 frp 的作用 开发状态 架构 使用示例 通过 ssh 访问公司内网机器 通过自定义 ...
- OpenWRT - WEB界面开发思路和基本方法
想要对OpenWRT的WEB界面(*下称界面)进行修改.修改的目标是: 1.修改页面的样式,设计为企业的风格(stylesheet) 2.新建自己的功能,实现 访问页面后,用户就可以对配置文件(也就是 ...
- http://download.csdn.net/detail/yanzi1225627/6548337
[2013.9.8网络首发]导入Android4.2源码里的Gallery2和Camera模块至Eclipse全过程 上次导入的时候是新建的一个user library,然后把所需要的四个库文件放里面 ...
- ESP32那些事儿(六):功能开发之蓝牙及WiFi功能
蓝牙和WIFI是ESP32的核心功能,蓝牙和wifi的共存也是esp32的独门武功,但时候后续也会发现共存的时候会有很多问题.不管怎样,蓝牙和wifi在esp-idf中有很多的例子,大家都可以参考.本 ...
- 一个可用来记录Isilon各个节点的CPU,网络,磁盘性能的命令
通过查看命令isi statistics system的帮助信息,拼出了下面的命令. isi statistics system list --nodes=all --degraded --forma ...