读写机制调研-ppt精品课件.pptx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《读写机制调研-ppt精品课件.pptx》由会员分享,可在线阅读,更多相关《读写机制调研-ppt精品课件.pptx(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、CassandraCassandra读写机制调研读写机制调研篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统在数据的读取过程中,Cassandra会根据需要读取的ColumnFamily查询该ColumnFamily下的Memtable以及所有的SSTable,合并查询的结果,将最新的结果返回给客户端。读取操作根据一致性级别分为两类:强读取弱读取CassandraCassandra的数据读取机制的数据读取机制篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统对于每一个读取命令,
2、Cassandra的执行流程如下:从集群中找出一台最适合读取的服务器。从最适合读取的服务器读取数据如果最适合读取的服务器是本机,对本机的数据进行异步读取如果最适合读取的服务器不是本机,向该服务器请求需要读取的数据,并根据一定概率计算是否进行读修复操作(这里读修复操作异步执行,不会等待读修复操作完毕后再将结果返回客户端)等待结果返回将返回的结果返回给客户端弱读取弱读取篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统对于每一个读取命令,Cassandra的执行流程如下:从集群中找出一台最适合读取的服务器。向该服务器请求需要读取的数据。根据
3、读取一致性级别,从集群中找出其他需要读取的服务器。向其他需要读取的服务器请求需要读取数据的摘要信息,用于对比多台机器之间数据是否一致。等待符合读取一致性要求结果的返回。从不同服务器返回的结果,对比数据是否一致,对于不一致的数据,进行QUORUM级别的读修复操作。将最终结果返回给客户端。强读取强读取篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统TableColumnFamilyStore 对象的集合,可以通过 column family 的名字查找到对应的 CFSColumnFamilyStoreDataTracker 关于该Colu
4、mnFamily的信息一个 Memtable 对象。该对象保存了最近的对该 CFS 中的 Column family 的修改,这些修改还没有被 flush 到磁盘上。一个 SSTableTracker 对象。这是一个 SStableReader 对象的集合,每个 SSTableReader 对象维护了关于磁盘上的 CF 数据的必要信息。与数据模型相关的数据结构与数据模型相关的数据结构篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统Commitlog先写日志再写数据数据写入Memtable前需要由CommitLogExecutorSer
5、vice线程先写Commitlog CommitlogHeader记录了CF的脏标志位和该CF的恢复起始偏移位置。CommitlogSegment记录了变更的RowMutation信息。MemtableConcurrentNavigableMap ,这个哈希表用于从 row-key 查找对应的 ColumnFamily 对象。与数据模型相关的与数据模型相关的数据结构(续)数据结构(续)篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统CassandraServerpublic List get_slice (ByteBuffer key
6、,ColumnParent column_parent,SlicePredicate predicate,ConsistencyLevel consistency_level)Exception:InvalidRequestExceptionUnavailableExceptionTimedOutException读操作读操作thriftthrift接口接口篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统判断是否对指定ColumnFamily具有读权限,如果没有该权限,则抛出InvalidRequestException异常 priv
7、ate MapByteBuffer,List multigetSliceInternal取得ColumnFamily的元数据判断predicate里存储的是column name集合还是范围,构造不同Command集合,每个Key具有一个Command对象private MapByteBuffer,List getSlice(commands,consistency_level)get_Sliceget_Slice篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统根据一致性级别和构造出的读取命令从指定ColumnFamily中读取数据r
8、eadColumnFamily(未来可支持每行多个ColumnFamily,目前仅支持一行)如果一致性级别为ANY,抛出InvalidRequestException异常通过调度,执行StorageProxy.read(commands,consistency_level)取出行数据,可能抛出TimeoutException和IOException两种异常。如果处于BootstrapMode(集群joining状态),则抛出UnavailableException调用StorageProxy的fetchRow取出行数据根据读操作命令从返回结果中取出指定column数据getSlicegetSl
9、ice篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统执行本地和远程读取操作,阻塞等待结果返回针对每个Command,执行如下读取操作:取出负责指定key的目前活着的节点将其按与本地节点之间距离排序判断目前活着的节点是否符合一致性要求向最近的节点发送读取数据请求。(如果之前回复的节点只有一个,则继续下一个读命令的执行)向其他节点发送读取摘要请求,都是异步执行fetchRowsfetchRows篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统一致性级别为LOCAL_QUORUM
10、或EACH_QUORUM,发送DatacenterReadCallback型的,不执行读修复操作否则发送ReadCallback型的随机计算是否需要进行读修复操作,若执行则向所有备份发送摘要请求,否则向比满足一致性需求的备份数少一的备份发送读取摘要请求。判断受到的回复数量是否满足一致性需求针对每个Command,执行如下操作:如果取出的数据与摘要不匹配,则执行Read Repair操作,从所有节点取得数据,达到要求的数据一致性后返回结果。Readrepair多层调用后将调用RowRepairResolver中的resolve方法,取得每个指定column的最新版本,将区别更新发送给数据过期的备
11、份。否则直接返回结果。fetchRowsfetchRows(续)(续)篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统MessagingService向指定终端发送消息sendRR(MessageProducer producer,InetAddress to,IAsyncCallback cb)接受消息receive(Message message,String id)根据message和id构造MessageDeliveryTask对象根据操作类型构造句柄执行操作如果是读操作则构建ReadVerbHandler对象,执行doVer
12、b(Message message,String id)操作消息处理服务消息处理服务篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统从消息中读取命令根据命令中的table名称打开指定Table(代表keyspace,内含ColumnFamilyStore的集合),如果不存在,则初始化包括cache在内的一系列对象。从存储的rowCache取出值,构造keyCache,调度执行。取出指定Table实例根据命令不同类型构造不同对象执行操作,此处以SliceByNamesReadCommand对象为例调用getRow(Table table
13、)方法取出ColumnFamilyStore取出Row存在rowChache则直接通过key取出ColumnFamily,否则从memtable读取或SSTable中读取,载入载入cachecache。发送回复sendReply(reply,id,message.getFrom()doVerbdoVerb篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统构造方法RowCache:列的缓存Cassandra写入数据后会同步更新RowCache,包装Cassandra从RowCache中可以读取到最新的信息。KeyCache:Key的缓存其
14、缓存的是需要读取的数据在SSTable Data文件中的具体位置构造keyCache和rowCache对象keyCache:ConcurrentLinkedHashCache(最大并发64)rowCache:可由配置文件指定取出keyCache中缓存的key从指定存储Cache的路径中读入缓存key结合缓存的key批量打开存储指定columnFamily的SSTable并进行载入处理压缩处理二级索引ColumnFamilyStoreColumnFamilyStore篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统根据硬件可用处理器的数
15、量创建线程池批量打开SSTable构造SSTableReader对象open(Descriptor descriptor,Set components,Set savedKeys,DataTracker tracker,CFMetaData metadata,IPartitioner partitioner)载入SSTableReader对象load(boolean recreatebloom,Set keysToLoadInCache)throws IOExceptionkeyCache如果容量不够则扩充从名称类“Index.db”的索引文件中加载加载keycachekeycachebatc
16、hOpenbatchOpen篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统rowCacheSaveInSeconds每隔多长时间将cache写入持久化Cache文件,默认0keyCacheSaveInSeconds每隔多长时间将cache写入持久化Cache文件,默认4hrowCacheKeysToSave每次写入多少个row到持久化Cache文件,默认为整数的最大值rowCacheSize默认为0,缓存Cache的条数keyCacheSize内存最大缓存key的个数,默认为0.01,大于1时是key个数,小于1是百分比,预计总数的
17、百分比。Cache Cache 参数配置意义参数配置意义篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统rowCache是存储于JVM的堆中的,不受compaction和read repair操作影响。但是相比于操作系统的page cache,row cache不是非常高效。而操作系统的page cache会受compaction和read repair操作影响,因此如果依靠page cache在内存中保存动态集,会有很明显的性能降低。使用KeyCache花费的时间相比于它节省的时间是不值一提的,因此将所有key缓存也是可取的。使用r
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 读写 机制 调研 ppt 精品 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内