分布式数据库读书报告

合集下载

《分布式数据库的基础与应用》读后感

《分布式数据库的基础与应用》读后感

《分布式数据库的基础与应用》读后感示例文章篇一:哎呀,《分布式数据库的基础与应用》这本书可把我难住啦!你们能想象吗?我一个小学生,翻开这本书的时候,就好像走进了一个超级复杂的迷宫!一开始,我满怀着好奇,心想这书里到底藏着啥神奇的知识呀?结果,刚看了几页,我就懵了!好多专业的名词,什么“分布式”啦,“数据库”啦,就像一群调皮的小怪兽,在我眼前跳来跳去,让我眼花缭乱!我就问我爸爸:“爸爸,这书里说的东西怎么这么难懂啊?”爸爸笑着说:“宝贝,这可是很高级的知识呢,得慢慢理解。

”我心里就犯嘀咕了:哼,再高级我也要弄明白!我继续读下去,就好像在黑暗中摸索着前进。

书中说分布式数据库就像是一群小伙伴一起合作完成一项大任务。

这让我想到了我们班的小组活动,每个人都有自己的职责,一起努力就能把事情做好。

这不就和分布式数据库有点像吗?可是,新的问题又来啦!那些复杂的算法和架构,就像一道道高高的墙,挡在我面前。

我忍不住想:难道我就这么被拦住了?不,我才不要!我去找老师请教,老师耐心地给我解释,还举了好多有趣的例子。

我这才发现,原来这看似可怕的知识,也有它好玩的地方。

比如说,分布式数据库能让数据存储得又快又安全,这就好比给我们的宝贝数据穿上了一层坚固的铠甲,谁也伤害不了它们!读着读着,我好像渐渐摸到了一些门道。

我发现,虽然它很难,但是只要我用心去琢磨,还是能懂一些的。

这就像爬山,一开始觉得累得不行,可当你爬到山顶,看到美丽的风景,就会觉得一切都值得啦!现在想想,读这本书的过程虽然充满了挑战,但也让我收获了很多。

我明白了知识的海洋是无边无际的,就算遇到困难,也不能轻易放弃。

只要坚持下去,总会有惊喜等着你!所以呀,我觉得虽然这本书对我这个小学生来说很难,但是它就像一把钥匙,打开了我对新知识探索的大门,让我充满了勇气去面对更多的未知!示例文章篇二:哎呀,我的天呐!当我看到《分布式数据库的基础与应用》这本书的时候,我心里就在想,这得多难啊!我一个小学生能看懂吗?一开始,我就像走进了一个大大的迷宫,完全找不到方向。

分布式数据库的并发控制读书报告

分布式数据库的并发控制读书报告

读书报告信息学院计算机科学与技术杨凌雯201320602019一、并发控制中的概念和理论1.1 并发控制中的概念数据库的特点就是数据的集中管理和共享。

在通常情况下它总是有若干个事务在执行,这些事务可能并发地存取相同的数据,称为事务的并发操作。

并发控制是负责正确协调并发事务的执行,保证这种并发的存取操作不致破坏数据库的完整性和一致性,确保并发执行的多个事务能够正确的运行并获得正确的结果。

分布式并发控制主要解决多个分布式事务对数据并发执行的正确性。

1.丢失更新问题在图5. 1(a)中,数据库中数据项x的初值是100,事务I对x的值减30,事务T2对x的值增加一倍,如果执行次序是先T1后T2,那么结果x的值是140。

如果是先T2后T1,那么x 的值是170。

这两种情况都应该是正确的,因为具体实现时只有其中一种情况.但是若按图5. 1 (a)那样的并发执行,结果x的值是200,这个值肯定是错误的。

因为在时间t7丟失了事务T1对数据库的更新操作,因此这个并发操作是不正确的。

2.不一致分析问题在图5. 1(b)中,事务T1对x值的值减30,而車务T2只要读出x的值。

但在t5时刻,由于T1已更新了x的值,此时T2使用的x值仍是100,因此就造成了不一致,这个问题称为不一致分析问题。

3.依赖于未提交更新的问題在数据库技术中,把未提交的随后又被撤销的更新数据称为“脏数据”。

这里事务T2在t4时刻读的x值就是脏数据。

1.2事务可串行化理论的基本概念一般来说,对一组并发的分布式事务可能存在多种正确调度,可串行化调度是分布式事务能否正确执行的基本方法。

事务的可串行性是指若千个事务并发执行的结果与按希望的顺序执行的结果相同时,称诸事务是可串行的。

这就是说,如果事务的并发执行能够通过以一定顺序串行执行就可使数据库处于新的一致状态,那么诸如丢失更新的问题就可能得到解决,这就是串行化理论的观点。

1.分布式事务的一个调度在数据库系统中,事务访问数据库中数据的方式是通过发出读操作和写操作原语来实现的。

分布式数据库实训总结

分布式数据库实训总结

分布式数据库实训总结我在这分布式数据库实训里啊,那可真是经历了一场又一场的“头脑风暴”。

就像走进了一个神秘的迷宫,到处都是数据的小格子,我得在这格子里找出路。

刚进去的时候,我看着那些密密麻麻的数据和复杂的系统,眼睛直发懵,感觉就像刘姥姥进了大观园,看啥都新鲜又啥都不懂。

我身边的同学呢,有的也是愁眉苦脸的,那眉头皱得能夹死苍蝇。

有个同学,脸都憋得通红,小声嘟囔着:“这都是啥呀,咋弄呢?”我心里想啊,我可不能就这么被难住。

那老师啊,站在前面,眼睛亮晶晶的,透着一种对这数据库特别懂的那种光芒。

他就开始给我们讲,手在空中比划着,像个指挥家。

他说:“这分布式数据库啊,就好比一群小蚂蚁搬家,每个小蚂蚁都有自己的任务,但最后都得把家搬好。

”我就努力在脑海里想象着蚂蚁搬家的画面,还真有点感觉了。

在实际操作的时候,我就坐在电脑前,手指在键盘上敲啊敲。

有时候敲错了,那系统就给我个大红叉,感觉像是在冲我发脾气。

我就挠挠头,重新来。

周围的同学呢,有的敲得特别快,噼里啪啦的,我都有点羡慕。

我就对旁边的小李说:“你咋这么厉害呢?”小李嘿嘿一笑,说:“我之前偷偷看了点书,有点小基础。

”我心想,我也得加把劲啊。

有一次,我好不容易把一段数据弄好了,正高兴着呢,突然发现数据有点对不上。

我那心啊,一下子就凉了半截。

就像你辛辛苦苦种的瓜,眼看到收成了,发现瓜都烂了。

我就又开始找问题,眼睛死死地盯着屏幕,感觉眼珠子都快掉进去了。

找了半天,原来是一个小逗号的问题,就这么个小玩意儿,差点把我整崩溃。

不过啊,随着不断地摸索,我也慢慢摸出了点门道。

我发现这分布式数据库就像一个大拼图,每个小数据块就是一块小拼图。

只要你耐心点,一块一块地拼,总能拼出个完整的图来。

我就越来越有信心,那感觉就像在黑暗里看到了一丝光亮。

再后来啊,我能熟练地处理各种数据了,那种成就感就像吃了一碗热腾腾的烩面,从心里暖到全身。

我和同学们之间也有了更多的交流,大家互相分享经验。

分布式数据库总结(申德荣)

分布式数据库总结(申德荣)

第一章分布式数据库系统概述一、分布式数据库的发展1、分布式数据库的发展:①集中式数据库管理系统的局限性:a.通讯瓶颈;b.响应速度。

②推动分布式数据库发展的动力:a.应用需求;b.硬件环境的发展。

二、分布式数据库系统的定义:分布式数据库系统,通俗地说,是物理上分散而逻辑上集中的数据库系统。

分布式数据库系统使用计算机网络将地理位置分散而管理和控制又需要不同程度集中的多个逻辑单位(通常是集中是数据库系统)连接起来,共同组成一个统一的数据库系统。

三、分布式数据库系统的特点:a.物理分布性:数据不是存放在一个站点上b.逻辑整体性:是与分散式数据库系统的区别c.站点自治性:是与多处理机系统的区别d.数据分布透明性e.集中与自治相结合的控制机制f.存在适当的数据冗余度g.事务管理的分布性四、分布式数据库系统的分类按局部数据库管理系统的数据模型分类:同构性(homogeneous)(分为同构同质型和同构异质型)DDBS和异构性(heterogeneous)DDBS按分布式数据库系统的全局控制系统类型分类:全局控制集中型DDBS,全局控制分散型DDBS,全局控制可变型DDBS。

五、分布式数据库中数据的独立性和分布透明性所谓数据独立性是指用户或用户程序使用分布式数据库如同使用集中式数据库那样,不必关心全局数据的分布情况,包括全局数据的逻辑分片情况、逻辑片段站点位置的分配情况,以及各站点上数据库的数据模型等。

也就是说,全局数据的逻辑分片、片段的物理位置分配,各站点数据库的数据模型等情况对用户和用户程序透明。

所以,在分布式数据库中分布独立性也称为分布透明性。

六、分布式数据库系统的体系结构、组成成分集中式数据库管理系统结构:a. DB(数据库)b. DBMS(集中式数据库管理系统)c. DBA(数据库管理员)分布式数据库管理系统(DDBMS)结构:a. LDB(局部数据库)b. GDB(全局数据库)c. LDBMS (局部数据库管理系统)d. GDBMS (全局数据库管理系统)e. LDBA(局部数据库管理员)f. GDBA (全局数据库管理员)七、分布式数据库系统的特性:1. 数据透明性:a.分布透明性b. 分片透明性c. 复制透明性2. 场地自治性:a. 设计自治性b. 通信自治性c. 执行自治性八、分布式数据库系统的优点:分布式数据库系统是在集中式数据库系统的基础上发展来的,比较分布式数据库系统与集中式数据库系统,可以发现分布是数据库系统具有下列优点:1.更适合分布式的管理与控制。

《分布式数据库》实验报告_研究生BACKUP11

《分布式数据库》实验报告_研究生BACKUP11

安徽工业大学
《分布式数据库》实验报告
课题名称***
学院计算机
专业计算机应用
专业班级2010班
组长刘乾
成员周松成金祥胡锦
赵起姚佳岷
指导教师戴小平
二Ο一一年月日
课程名称:《分布式数据库》课程号码:XXXXXX
实验学时:学分:
实验地点:校内实验时间:2011.3.10~2011.5.10
连锁百货商店通常由一个中心,多个远程连锁店组成。

为此我们设计了一个数据库作为主数据库,用来模拟百货商店总店数据库,同时利用另一数据库作为从数据库,用来模拟连锁百货商店分店数据库。

并分别为主数据库和从数据库设计了GUI.
我们将百货商店的数据通过分片与分配的方式,分布式的存储在主从两个不同的数据库中,并有区别的给与主从数据库不同的权限。

同时基于SQL Server 2005 数据库之间的通讯,我们设计了数据通讯模块,实现了数据库之间的相互通信,并通过发布与订阅的方式保持了数据一致性。

另外在基本数据库添加删除操作的基础上,我们添加了品牌管理的功能模。

分布式数据库的最佳实践与经验总结(系列五)

分布式数据库的最佳实践与经验总结(系列五)

分布式数据库的最佳实践与经验总结引言如今,随着互联网和大数据的迅猛发展,分布式数据库成为了大数据处理的重要工具,为企业提供了高效可靠的数据存储和处理能力。

但是,分布式数据库的设计和实施并非容易事,需要深入理解其最佳实践和经验总结。

本文将介绍几个分布式数据库的最佳实践,包括数据分片、一致性、容灾备份以及性能优化等方面的经验总结。

数据分片与负载均衡数据分片是分布式数据库的关键之一。

通过将数据分散存储在不同的节点上,可以有效提高数据库的扩展能力和性能。

在进行数据分片时,要根据业务需求和数据模型进行合理的划分。

一般来说,可以按照数据的关键字段进行分片,确保数据的均衡访问和查询效率。

同时,为了实现负载均衡,还需要采用合适的路由策略,确保数据请求被均匀地分发到各个节点上,避免单点故障和性能瓶颈。

一致性与可用性在分布式数据库中,维护数据的一致性和可用性是非常重要的。

为了确保数据一致性,可以采用复制和同步机制。

通过在不同节点之间进行数据的复制和同步,可以提供冗余和容错能力,一旦某个节点出现故障,可以快速进行切换和恢复。

然而,数据的一致性和可用性常常是冲突的,需要根据具体业务情况进行权衡。

如果业务对数据的一致性要求较高,可以采用强一致性模型;如果对数据的可用性要求较高,可以采用弱一致性模型。

容灾备份与恢复容灾备份是分布式数据库不可或缺的一环。

在进行容灾备份时,需要考虑到数据的安全性和完整性。

可以采用多中心多活的架构,将数据备份到不同的地理位置,避免单点故障和灾难风险。

同时,还要定期进行数据的差异备份和增量备份,减少备份的时间和空间成本。

在数据恢复时,应根据备份的策略和优先级进行有序的恢复操作,确保数据能够尽快恢复到正常状态。

性能优化与扩展在分布式数据库的实施过程中,性能优化是至关重要的。

首先要对数据库的性能进行监控和诊断,及时发现和解决潜在的问题。

其次,可以采用硬件和软件的优化措施,如优化查询语句、增加索引、调整缓存配置等。

分布式数据库实训报告

分布式数据库实训报告

一、实训背景随着互联网技术的飞速发展,数据量呈爆炸式增长,传统的集中式数据库已无法满足日益增长的数据存储和处理的性能需求。

分布式数据库作为一种新型的数据库架构,通过将数据分散存储在多个节点上,提高了数据库的可扩展性、可用性和容错性。

为了更好地理解和掌握分布式数据库的原理和应用,我们开展了分布式数据库实训。

二、实训目标1. 理解分布式数据库的基本概念、架构和原理;2. 掌握分布式数据库的安装、配置和管理;3. 学会使用分布式数据库进行数据存储、查询和事务处理;4. 分析分布式数据库的优缺点,了解其在实际应用中的挑战和解决方案。

三、实训内容1. 分布式数据库基本概念分布式数据库是由多个节点组成的系统,这些节点通过网络连接在一起,共同存储和管理数据。

分布式数据库具有以下特点:(1)数据分散存储:数据分布在多个节点上,降低了单节点存储的负担;(2)高可用性:通过冗余设计,提高系统的可用性;(3)可扩展性:系统可根据需求动态增加节点,提高性能;(4)容错性:系统在部分节点故障的情况下仍能正常运行。

2. 分布式数据库架构分布式数据库架构主要包括以下几种:(1)主从复制架构:主节点负责处理数据更新,从节点负责读取数据;(2)对等复制架构:所有节点都具有读写权限,数据在节点间同步;(3)分片架构:将数据按照一定的规则划分到不同的节点上;(4)多活架构:所有节点都可以同时处理读写请求。

3. 分布式数据库安装与配置以分布式数据库HBase为例,介绍其安装与配置过程:(1)安装Java环境:HBase基于Java开发,需要安装Java环境;(2)下载HBase安装包:从Apache官网下载HBase安装包;(3)解压安装包:将安装包解压到指定目录;(4)配置HBase环境变量:在系统环境变量中添加HBase的bin目录;(5)启动HBase服务:运行hbase.sh start命令启动HBase服务;(6)创建HBase表:使用hbase shell命令创建表。

分布式数据库的最佳实践与经验总结(系列二)

分布式数据库的最佳实践与经验总结(系列二)

分布式数据库的最佳实践与经验总结一、引言在当前大数据时代,分布式数据库成为了处理海量数据的关键技术。

而分布式数据库的设计和实践则是一个具有挑战性的任务。

本文将总结一些分布式数据库的最佳实践和经验,帮助读者更好地理解和应用分布式数据库技术。

二、理解分布式数据库分布式数据库是将数据存储和处理分布在多个节点上的数据库系统。

相比于传统的集中式数据库,分布式数据库具有更强大的横向扩展能力和高可用性。

然而,分布式数据库的设计与管理复杂度更高,需要考虑数据的一致性、容错性以及数据分片等因素。

三、数据分片与负载均衡在设计分布式数据库时,合理的数据分片策略和负载均衡机制是至关重要的。

一方面,数据分片可以将数据分布在不同的节点上,避免单点故障和性能瓶颈;另一方面,负载均衡机制能够平衡各个节点的压力,提高整体性能。

根据应用场景和数据特点,选择合适的分片键和负载均衡算法非常重要。

四、一致性与并发控制在分布式环境下,保证数据的一致性是一项具有挑战性的任务。

分布式数据库需要选择合适的一致性模型,例如强一致性、弱一致性或最终一致性。

同时,针对并发控制,可以采用乐观锁或悲观锁等机制来实现事务的隔离性和一致性。

五、容错与故障恢复分布式数据库需要具备良好的容错性,能够应对节点故障和网络中断等异常情况。

采用数据冗余和备份机制可以保证数据的可靠性和可恢复性。

此外,及时的故障检测和自动恢复机制也是分布式数据库设计的重要方面。

六、性能监控与优化为了保证分布式数据库的高性能,需要进行实时的性能监控和优化。

通过监控系统指标,例如请求响应时间,吞吐量等,可以及时发现并解决潜在的性能瓶颈。

此外,优化查询语句、索引设计和数据模型等方面也是提高性能的关键。

七、数据安全与隐私保护分布式数据库中的数据安全和隐私保护是至关重要的。

采用合适的身份认证和访问控制机制可以防止未经授权的访问和数据泄露。

另外,数据加密和数据脱敏等技术也能有效保护数据隐私。

八、云原生与容器化在云计算时代,云原生和容器化的技术越来越受到关注。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Cassandra And PNUTS--Two classic distributed system翁纯佳(浙江工业大学计算机科学与技术系,杭州,310023)Cassandra And PNUTS–两个经典的分布式系统WengChunJia(Zhejiang university of technology Computer science and technology department ,HangZhou,310023)AbstractCassandra is a distributed storage system for managing very large amounts of structured data spread out across many commodity servers, while providing highly available service with no single point of failure. Cassandra aims to run on top of an infrastructure of hundreds of nodes (possibly spread across different data centers). At this scale, small and large components fail continuously. The way Cassandra manages the persistent state in the face of these failures drives the reliability and scalability of the software systems relying on this service.We describe PNUTS, a massively parallel and geographically distributed database system for Yahoo!’s web applications. PNUTS provides data storage organized as hashed or ordered tables, low latency for large numbers of concurrent requests including updates and queries, and novel per-record consistency guarantees. It is a hosted, centrally managed, and geographically distributed service, and utilizes automated load-balancing and fail over to reduce operational complexity.Key words:Cassandra;distribute;storage system;PNUTS;automated load-balancing;fail over 摘要:Cassandra是一个分布式的存储系统,可用来管理分布在大量廉价服务器上的巨量结构化数据,并同时提供没有单点故障的高可用服务.Cassandra的设计目的是运行在由几百个节点(可能分布在多个不同的数据中心)组成的基础设施上.当节点达到这个规模时,大大小小的组件出现故障就可能经常发生了.Cassandra在管理持久状态时面临这些故障,这种情况也驱动软件系统的可靠性与可伸缩性会依赖于Cassandra的服务.PNUTS是一个Yahoo的网站应用的数据库系统,它并发量极大和分布在多个地域。

PNUTS在存储方面按哈希或有序表组织数据,大量并发地查询或更新响应时延很低,同时很有创意地为单条记录提供一致性保证。

它是一个自建的、集中管理并分布在多个地域的服务,通过负载均衡和故障自动切换来降低运营的复杂度。

关键词: Cassandra;分布式;存储系统;PNUTS;负载均衡;故障自动切换一.Cassandra1. 导论Facebook维护着世界上最大的社交网络平台,利用分布在世界各地的大量数据中心的成千上万台服务器,为上亿的用户提供服务.Facebook 平台有严格的业务要求,包含性能、可靠性、效率以及高度的可伸缩性以支持平台的持续增长.在一个包含成千上万的组件的基础设施上处理故障是我们的标准运作模式;在任何时候,随时都可能出现相当数量的服务器或网络组件故障.这样,软件系统在构建时就需要将故障当作一种常态而不是异常来处理.为了满足上面描述的这些可靠性与可伸缩性,Facebook开发了Cassandra系统.为了实现可伸缩性与可靠性,Cassandra组合了多项众所周知的技术.设计Cassandra的最初目的是解决收件箱搜索的存储需要.在 Facebook,这意味着这个系统需要能够处理非常大的写吞吐量,每天几十亿的写请求,随着用户数的规模而增长.由于我们是通过在地理上分布的数据中心对用户进行服务的,因此支持跨越多个数据中心的数据复制对于降低搜索延时就非常关键了.当Facebook在2008年6月发布收件箱搜索项目时,有1亿的用户, 现在差不多有2.5亿的用户,Cassandra一直保持了其对业务的承诺.目前,Facebook 内部已经有多个服务部署了Cassandra作为其后端存储系统.2. 相关研究对于为了性能、可用性与数据持久性对数据进行分布,文件系统与数据库社区已经进行了广泛的研究.与仅支持扁平命名空间的点对点(P2P)存储系统相比,分布式文件系统通常支持层次化的命名空间.与Ficus 与Coda类似的系统都是通过牺牲一致性来复制文件以实现高可用.通常使用特别的冲突解决程序来管理更新冲突.Farsite是一个没有使用任何中心服务器的分布式文件系统. Farsite使用复制来实现高可用性与可伸缩性.Google文件系统(GFS)是另一个分布式文件系统,用来存储Google内部应用的各种状态数据.GFS 设计比较简单,用一台主服务器存储所有的元数据,数据拆分成块存储在多个块服务器上.不过,目前Google 已经使用Chubby抽象层为GFS的主服务器做了容错处理.Bayou是一个分布式的关系数据库系统,它支持断开操作(个人理解为网络断开以后的操作)并提供最终的数据一致性.在这些系统中,Bayou、Coda与Ficus 允许断开操作,并且在遇到类似与网络断开与停机时能够做到自动复原.这些系统在冲突解决程序上存在差异.例如,Coda与Ficus执行系统级别的冲突解决,而Bayou允许应用级别的冲突解决.但所有这些都保证最终一致性.与这些系统类似,即使在网络段开的时候,Dynamo[6]也允许进行读写操作,并使用不同的冲突解决机制(部分客户端驱动) 来解决更新冲突.传统的基于复制的关系数据库系统重点在保证复制数据的强一致性.虽然强一致性为应用写程序提供了一个方便的编程模型,但是,这些系统在伸缩性与可用性方面却受到了限制.因为这些系统提供强一致性的保证,所以在网络分开时,它们就无法进行处理.Dynamo[6]是一个Amazon开发的存储系统,Amazon用它来存储检索用户的购物车.Dynamo利用基于Gossip的会员算法来维护每个节点上所有其他节点的信息.可以认为Dynamo是一个只支持一跳路由请求的结构化覆盖层.Dynamo使用一个向量时钟概要来发现更新冲突,但偏爱客户端的冲突解决机制.为了管理向量时间戳,Dynamo中的写操作同时也需要执行一次读操作.在一个需要处理非常大的写吞吐量的系统中,这可能会成为瓶颈. Bigtable[4]既提供了结构化也支持数据的分布式,不过它依赖于一个分布式的文件系统来保证数据的持久化.3. 数据模型Cassandra中的表是一个按照主键索引的分布式多维图.它的值是一个高度结构化的对象.表中的记录键是一个没有大小限制的字符串,虽然它通常都只有16-36个字节的长度.无论需要读写多少列,单一记录键的每个副本的每次操作都是一个原子操作.多个列可以组合在一起形成一个称为column family的列的集合,这一点与Bigtable系统非常相似.Cassandra提供两种类型的column family,简单的column family与超级的column family.可以将超级column family想象成column family里面嵌入column family.进一步,应用还可以指定超级column family或者简单column family里面的列的排序顺序.系统允许按时间或者名称对列进行排序.按照时间对列进行排序可以被类似于收件箱搜索这样的应用使用,因为它们的结果始终需要按照时间顺序进行展示.column family中的每个列都需要通过规范column family : column来进行访问,每个超级column family中的列都通过规范column family : super column : column来进行访问.小节6.1给出了一个展示超级column family抽象能力的非常好的例子.通常,应用都会使用一个独占的Cassandra集群,并将它们当作服务的一部分进行管理.虽然,Cassandra系统支持多表的概念,在部署时每个概要中都只能有一个表.4. 系统架构一个需要在生产环境运转的存储系统的架构是很复杂的.除了真实的数据持久化组件外,这个系统还需要包含以下特性;可伸缩性与强大负载均衡解决方案、会员与故障检测、故障恢复、副本同步、超负荷处理、状态转移、并发与任务调度、请求编组、请求路由、系统监控与报警以及配置管理.详细描述这里的每一个解决方案超出了本论文的范围,我们将集中介绍Cassandra使用的核心的分布式系统技术:分区、复制、会员、故障处理以及伸缩性.处理读写请求需要所有这些模块的协同处理.通常,一个键的请求可能被路由到Cassandra集群的任何一个节点去处理.这个节点会确定这个特定的键的副本.对于写操作来讲,系统会将请求路由到副本上,并且等待仲裁数量的副本以确认写操作完成.对于读操作来讲,基于客户端要求的一致性保证,系统要么将请求路由到最近的副本,要么将请求路由到所有的副本并等待达到仲裁数量的响应.4.1 分区.增量扩展的能力是我们设计Cassandra时考虑的一个关键特性.它要求做到在集群中的一组节点之间动态的对数据进行分区.Cassandra使用一致性散列(consistent hash)技术在整个集群上对数据进行分区,但是使用一种保证顺序的散列函数来实现.在一致性散列中,散列函数的输出结果区间可以看作是一个封闭的圆形空间或者”环”(例如,最大的散列值回绕到最小的散列值).为系统中的每个节点分配这个空间上的一个随机值,代表它在这个环上的位置.每个数据项都会根据它的键被指派给一个节点,通过对这个数据项的键做散列计算,获得它在环上的位置,然后按照顺时针找到比它的位置大的第一个节点.这个节点就被认为是这个键的协调器.应用指定这个键,Cassandra利用它来对请求做路由.这样,每个节点都会负责环上的一个区间-节点与它在环上的前一个节点(逆时针)之间的区间.一致性散列的主要优势是增加或删除节点只会影响到它的近邻,其他的节点都不会受影响.基本的一致性散列算法还面临一些挑战.首先,在环上随机的为每个节点指定位置可能导致数据与负载的分布不均衡.其次,基本的一致性算法会抹杀节点之间性能的异质性(差异).解决这个问题一般有两种方法:一种方法是在环上为节点指定多个位置(Dynamo采用的方法),另一种方法是分析环上的负载信息,并移动负载较低的节点的位置以缓解负载过重的节点,引文对此有详细描述.Cassandra选择了后者,因为使用它可以简化设计与实现,并且可以让负载均衡的选择更加具有确定性.4.2 复制Cassandra使用复制来实现高可用性与持久性.每个数据项都会被复制到N台主机,N是通过参数”per-instance”配置的复制因子. 每个键(k)都被指派给一个协调节点(上一节介绍的).由协调节点负责复制落在这个节点范围的数据项的复制.除了将本节点范围内的数据存储到本地外,协调器需要将这些键复制到环上的其他N-1个节点.关于如何复制数据,Cassandra为客户端提供了多个选项.另外,Cassandra还提供了多种不同的复制策略,例如”机架不可知”、”机架可知”(同一个数据中心内)与”数据中心可知”.应用选择的复制策略决定了副本的数量.使用”机架可知”与”数据中心可知”复制策略时复制的算法要稍微复杂一点.Cassandra使用一个称为Zookeeper[13]的系统在这些节点中选择一个引导者.所有节点在加入集群时都需要与此引导者联系,并由引导者告知它们负责哪个环上哪个范围的副本,引导者还需保持协调一致的努力来保持不变,以确保没有哪个节点负责环上的超过N-1个范围.关于一个节点负责的范围的元数据信息都会在每个节点做本地缓存,并在Zookeeper内做容错处理,这样当一个节点崩溃并返回的时候就可以知道它到底负责哪个范围.借用Dynamo的措辞,我们认为负责一个给定范围的节点是这个范围的”优选清单”.4.3 会员Cassandra中的集群会员是基于Scuttlebutt[19]的,一个非常高效的反熵闲话机制. Scuttlebutt的突出的特点是它非常高效的CPU利用率以及非常高效的Gossip通道利用率.在Cassandra中,系统Gossip 不止用来管理会员信息,也用来传输其他系统相关的控制状态.4.4 引导程序当一个节点第一次启动的时候,它会随机的选择一个令牌作为它在环上的位置.为了容错的需要,映射关系会被持久化到本地磁盘以及 Zookeeper中.接着令牌信息会被传播到整个集群.我们就是通过它来知道集群中的所有节点以及它们在环上的位置的.通过它,任何一个节点都可以将一个键的请求路由到集群中的合适的节点.在引导过程中,当一个新的节点需要加入集群时,它需要读取它的配置文件,配置文件中包含集群中的几个联络点名单.我们将这些联络点称为集群的种子.种子也可以来自一个类似于Zookeeper的配置服务.4.5 集群的扩展当有一个新节点加入系统时,它会被分配一个令牌,这样就可以缓解负载过重的节点的负载.这样导致的结果是,这个新的节点会分担部分先前由其他节点负责的范围.Cassandra的引导算法可由系统中的任何其他节点通过命令行工具或Cassandra的网络仪表盘来启动.放弃这部分数据的节点通过内核到内核的拷贝技术将数据拷贝到新的节点.我们的运维经验显示,从单个节点传输的速率可以达到 40MB/s.我们还在努力对它进行改善,通过让多个副本来参与并行化引导传输,类似于Bittorrent技术.二.PNUTS1.简介我们把PNUTS打造成一个超级规模、托管的数据库系统,来支持Yahoo!的网站应用。

相关文档
最新文档