《读写机制调研》PPT课件.ppt
《《读写机制调研》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《读写机制调研》PPT课件.ppt(34页珍藏版)》请在三一办公上搜索。
1、Cassandra读写机制调研,在数据的读取过程中,Cassandra会根据需要读取的ColumnFamily查询该ColumnFamily下的Memtable以及所有的SSTable,合并查询的结果,将最新的结果返回给客户端。读取操作根据一致性级别分为两类:强读取弱读取,Cassandra的数据读取机制,对于每一个读取命令,Cassandra的执行流程如下:从集群中找出一台最适合读取的服务器。从最适合读取的服务器读取数据如果最适合读取的服务器是本机,对本机的数据进行异步读取如果最适合读取的服务器不是本机,向该服务器请求需要读取的数据,并根据一定概率计算是否进行读修复操作(这里读修复操作异步执
2、行,不会等待读修复操作完毕后再将结果返回客户端)等待结果返回将返回的结果返回给客户端,弱读取,对于每一个读取命令,Cassandra的执行流程如下:从集群中找出一台最适合读取的服务器。向该服务器请求需要读取的数据。根据读取一致性级别,从集群中找出其他需要读取的服务器。向其他需要读取的服务器请求需要读取数据的摘要信息,用于对比多台机器之间数据是否一致。等待符合读取一致性要求结果的返回。从不同服务器返回的结果,对比数据是否一致,对于不一致的数据,进行QUORUM级别的读修复操作。将最终结果返回给客户端。,强读取,TableColumnFamilyStore 对象的集合,可以通过 column fa
3、mily 的名字查找到对应的 CFSColumnFamilyStoreDataTracker 关于该ColumnFamily的信息一个 Memtable 对象。该对象保存了最近的对该 CFS 中的 Column family 的修改,这些修改还没有被 flush 到磁盘上。一个 SSTableTracker 对象。这是一个 SStableReader 对象的集合,每个 SSTableReader 对象维护了关于磁盘上的 CF 数据的必要信息。,与数据模型相关的数据结构,Commitlog先写日志再写数据数据写入Memtable前需要由CommitLogExecutorService线程先写Co
4、mmitlog CommitlogHeader记录了CF的脏标志位和该CF的恢复起始偏移位置。CommitlogSegment记录了变更的RowMutation信息。MemtableConcurrentNavigableMap,这个哈希表用于从 row-key 查找对应的 ColumnFamily 对象。,与数据模型相关的数据结构(续),CassandraServerpublic List get_slice(ByteBuffer key,ColumnParent column_parent,SlicePredicate predicate,ConsistencyLevel consisten
5、cy_level)Exception:InvalidRequestExceptionUnavailableExceptionTimedOutException,读操作thrift接口,判断是否对指定ColumnFamily具有读权限,如果没有该权限,则抛出InvalidRequestException异常 private Map multigetSliceInternal取得ColumnFamily的元数据判断predicate里存储的是column name集合还是范围,构造不同Command集合,每个Key具有一个Command对象private Map getSlice(commands
6、,consistency_level),get_Slice,根据一致性级别和构造出的读取命令从指定ColumnFamily中读取数据readColumnFamily(未来可支持每行多个ColumnFamily,目前仅支持一行)如果一致性级别为ANY,抛出InvalidRequestException异常通过调度,执行StorageProxy.read(commands,consistency_level)取出行数据,可能抛出TimeoutException和IOException两种异常。如果处于BootstrapMode(集群joining状态),则抛出UnavailableExceptio
7、n调用StorageProxy的fetchRow取出行数据根据读操作命令从返回结果中取出指定column数据,getSlice,执行本地和远程读取操作,阻塞等待结果返回针对每个Command,执行如下读取操作:取出负责指定key的目前活着的节点将其按与本地节点之间距离排序判断目前活着的节点是否符合一致性要求向最近的节点发送读取数据请求。(如果之前回复的节点只有一个,则继续下一个读命令的执行)向其他节点发送读取摘要请求,都是异步执行,fetchRows,一致性级别为LOCAL_QUORUM或EACH_QUORUM,发送DatacenterReadCallback型的,不执行读修复操作否则发送Re
8、adCallback型的随机计算是否需要进行读修复操作,若执行则向所有备份发送摘要请求,否则向比满足一致性需求的备份数少一的备份发送读取摘要请求。判断受到的回复数量是否满足一致性需求针对每个Command,执行如下操作:如果取出的数据与摘要不匹配,则执行Read Repair操作,从所有节点取得数据,达到要求的数据一致性后返回结果。Readrepair多层调用后将调用RowRepairResolver中的resolve方法,取得每个指定column的最新版本,将区别更新发送给数据过期的备份。否则直接返回结果。,fetchRows(续),MessagingService向指定终端发送消息send
9、RR(MessageProducer producer,InetAddress to,IAsyncCallback cb)接受消息receive(Message message,String id)根据message和id构造MessageDeliveryTask对象根据操作类型构造句柄执行操作如果是读操作则构建ReadVerbHandler对象,执行doVerb(Message message,String id)操作,消息处理服务,从消息中读取命令根据命令中的table名称打开指定Table(代表keyspace,内含ColumnFamilyStore的集合),如果不存在,则初始化包括ca
10、che在内的一系列对象。从存储的rowCache取出值,构造keyCache,调度执行。取出指定Table实例根据命令不同类型构造不同对象执行操作,此处以SliceByNamesReadCommand对象为例调用getRow(Table table)方法取出ColumnFamilyStore取出Row存在rowChache则直接通过key取出ColumnFamily,否则从memtable读取或SSTable中读取,载入cache。发送回复sendReply(reply,id,message.getFrom(),doVerb,构造方法RowCache:列的缓存Cassandra写入数据后会同步
11、更新RowCache,包装Cassandra从RowCache中可以读取到最新的信息。KeyCache:Key的缓存其缓存的是需要读取的数据在SSTable Data文件中的具体位置构造keyCache和rowCache对象keyCache:ConcurrentLinkedHashCache(最大并发64)rowCache:可由配置文件指定取出keyCache中缓存的key从指定存储Cache的路径中读入缓存key结合缓存的key批量打开存储指定columnFamily的SSTable并进行载入处理压缩处理二级索引,ColumnFamilyStore,根据硬件可用处理器的数量创建线程池批量打开
12、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”的索引文件中加载keycache,batchOpen,rowCacheSaveI
13、nSeconds每隔多长时间将cache写入持久化Cache文件,默认0keyCacheSaveInSeconds每隔多长时间将cache写入持久化Cache文件,默认4hrowCacheKeysToSave每次写入多少个row到持久化Cache文件,默认为整数的最大值rowCacheSize默认为0,缓存Cache的条数keyCacheSize内存最大缓存key的个数,默认为0.01,大于1时是key个数,小于1是百分比,预计总数的百分比。,Cache 参数配置意义,rowCache是存储于JVM的堆中的,不受compaction和read repair操作影响。但是相比于操作系统的page
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 读写机制调研 读写 机制 调研 PPT 课件

链接地址:https://www.31ppt.com/p-5646817.html