cassandra:
partition分区器有两种方法: RandomPartitioner 一致性哈希 ByteOrderedPartitioner 按照自己大小
那么cassandra为什么能快呢。因为它采取了这么一个解决方案:
数据首先写到 commit log, 然后写到memtable。干完了这两件事,写就算成功了,别的事情您就不用操心了。后面事情是sstable(磁盘),然后是压缩文件
好在cassandra有一个 Bloom filter, 这个东东就是专门用来判断某个数据是否存在一个sstable的,如果不在,就不用浪费时间了。所以读也是挺快的。
所有节点都是一样的,副本也没有主副本和从副本,放在hash环上
回滚?
hbase 一个table对应按照rowkey划分region,
一个region内部包含多个store,一个store存储了一个column family,对应hdfs上一个逻辑文件
一个store包含了一个memstore和多个storefile(对应hdfs的一个文件块),以及hlog
先写hlog,然后写memstore,memstore内的数据,到达一定量之后,会被异步写入到storefile
一个table的所有region共享一个hlog,如果数据还没写入到memstore或者还没从memstore写入到storefile,这时候集群挂了
那么重启的时候,hbase会自动从hlog中回放日志。
hbase里面最小的数据单元是cell,里面包含value和timestamp
kafka:
leader and replica partition, 也需要配合zookeeper,里面存了每个consumer group消费每个分区对应的offset
elasticsearch:
集群-节点 索引-分片 分片分primary和slave,只写primary分片,slave增加读并发
redis:
master-》slave1-》slave2-》slave3 这样master挂了,slave1可以迅速切换为master,同时这样可以减少master的同步线程压力
redis里面所有的操作都是串行的,这样就不需要做并发同步了
原文地址:https://www.cnblogs.com/brainstorm/p/8284677.html