分布式系统介绍-PNUTS
2013-11-01 01:14
288 查看
PNUTS是Yahoo!的分布式数据库系统,支持地域上分布的大规模并发操作。它根据主键的范围区间或者其哈希值的范围区间将表拆分为表单元(Tablet),多个表单元存储在一个服务器上。一个表单元控制器根据服务器的负载情况,进行表单元的迁移和拆分。每条记录的数据都没有固定的模式(采用JSON格式的文本)
表单元控制器(Tablet controller):一个表单元是是表中被划分出来的一组记录的集合。表单元控制器管理着表单元的创建,切分,维护存储单元与表单元的映射关系。有主备服务器来保证其可用性。
路由器(Router):根据从表单元控制器中读取到的信息将数据路由到正确的存储单元。另外也支持数据的聚合。
存储单元(Storage unit):存储表单元。可以是一个Ulix文件系统(hash表)或者MySQL InnoDB(顺序表)
消息中间件(YMB):分发备份记录到其他的Region或者更新通知给客户端。
在每条记录中,有一个字段标志该记录Master所属的区域,所有的更新先发往Master,由Master将数据同步到其他的备份中。为了避免插入操作的冲突,表也分为主备,所有的记录插入操作都先在主表上执行。在底层,通过消息中间件(YMB, Yahoo! Message Broker)来保证数据分发的顺序。
另外每条记录都有一个版本号,由应用根据自己的需要,来决定读写记录的方式: 可以读取任意的备份,也可以读取最新的记录,或者读取指定的版本,在写的时候既可以直接覆盖,也可以实现乐观锁的控制。通过这种方式,来保证应用的读写一致性和写读一致性。
在一条记录的master区域不可用时,应用程序可以决定是否继续更新,如果更新则需要手动解决潜在的冲突。
客户端支持自动的failover
表单元控制器检测系统的负载情况,通过迁移或者拆分tablet来均衡负载。
另外,数据拷贝的传输为异步操作。
组件
区域(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
- 跟我学习dubbo-消息中间件在分布式系统中的作用介绍(8)
- 简单分布式系统体系结构介绍
- 分布式系统介绍(持续更新)
- 跟我学习dubbo-消息中间件在分布式系统中的作用介绍(8)
- 分布式日志收集系统Apache Flume的设计介绍
- 基于Dubbo的分布式系统架构-持续集成原理介绍
- 学习dubbo(7):基于dubbo的分布式系统架构介绍
- Hadoop学习6_CentOS6.5系统下Hadoop2.6.0完全分布式环境安装与配置信息介绍
- 分布式日志收集系统Apache Flume的设计详细介绍
- 分布式文件系统介绍
- 分布式日志收集系统Apache Flume的设计介绍
- 分布式日志收集系统- Cloudera Flume 介绍
- 分布式日志收集系统- Cloudera Flume 命令介绍
- 【分布式共识一】分布系统及共识介绍
- cobar阿里巴巴开源关系型数据分布式处理系统介绍
- 分布式文件系统介绍(MooseFS)
- 基于Dubbo的分布式系统架构(一)-分布式系统架构介绍
- GFS、HDFS等分布式文件系统对比介绍
- 在分布式系统中进行日志查询与管理的新手段介绍