zoukankan      html  css  js  c++  java
  • Redis/HBase/Tair比较

    KV系统对比表

    对比维度

    RedisRedis ClusterMedisHbaseTair
    访问模式    支持Value大小 理论上不超过1GB(建议不超过1MB) 理论上可配置(默认配置10M,这个可以调大) 256M(更大value还需要测试)
    支持Value结构 byte[]/list/map/set 支持分列族存储,在列族(column Family)下支持多quantifier(quantifier支持实时增删,不需要在schema中预定义)

    (1)kv/map/list

    (2)支持big_list(list无长度限制)

    (3)支持创建schema,cmd query

    支持的总数据量   1000+instance 按业务划分group集群,单个group不超过100GB scale out(业界已经有单机群几百台服务器的集群规模应用案例) scale out,理论上总数据量无限制
    适宜的读写比 存内存型,均适合 支持读写混合的业务模型(读、写应用不同的Cache,可配置适用各种比例的读写业务) 支持多引擎,适宜各种比例的读写。读多写少(mdb+leveldb),读少写多(leveldb)。
    数据是否可改写 Y Y 支持
    是否支持Scan/Range Query   不支持,并且不支持merge operations Scan目前不支持(即将支持),Range Query不支持 支持按Key维度的Scan

    支持scan

    支持range query

    CAP   CP 仅CA(有方案可扩展为CP) CP 用户可配置,CP或AP
    语言支持 主流语言 主流语言,目前java、ruby可用 仅Java(有其它语言支持方案)

    原生为Java接口。支持restful接口,支持通过thrift Server方式间接支持其他多用语言(如C,golang等)

    php,restful,java,c/c++
    访问性能 点写latency 虚机上平均1~2ms 平均5ms以下(写操作直接刷cache和追加持久化HLOG即可)

    5~8ms(write through),1ms左右(write back)

    点写吞吐率 一个instance 5w,单机器整体性能根据cpu来决定   虚机上单个redis节点5~10w qps,group的吞吐可通过多节点来扩展。受限网卡带宽瓶颈 预计单节点可达20K/s(key + value = 1k) 受限网卡带宽瓶颈(100MB),单机纯内存8w~10w qps(key+value=1k)
    批量写吞吐率 受限网卡带宽瓶颈 可在hbase集群外直接将原始数据转换为HFile(hbase底层存储文件),直接以文件接口copy到hbase集群即可(理论上受限于网络带宽)

    受限网卡带宽瓶颈(100MB),单机纯内存8w ~10w batch/s(batch=10keys,key+value=100,batch_size=1k)

    读latency 虚机上平均1~2ms 目前Java client的平均latency在5ms左右。(理论上负载过高时,latency会有所增加) 同机房内存1ms,磁盘5-8ms(延迟不会随单机数据容量增加而增加)
    可运维性 可扩展性(自动扩容、在线扩容)   支持水平扩展 支持在线扩容(暂不支持扩容时数据迁移),支持在线数据迁移 支持在线平滑扩容。 在不停读和写的服务下自动扩容
    可用性(是否有单点、数据迁移/单机出错时是否会有服务中断、过载保护、慢查询保护) 使用keepalived或者官方哨兵来保持高可用

    无单点

    无单点

    数据迁移/单机出错时自动故障转移

    无过载保护(仅限制单客户端到redis的连接数500)

    无慢查询保护

    目前的集群hmaster为单点服务(提供进程级恢复机制)。后续部署多hmaster方案。

    单个RegionServer异常时,region服务被迁移到其他Server上时,该Server上的数据短时不可访问。

    无慢查询保护

    (1)无单点

    (2)不中断服务

    (3)有过载保护

    (4)无慢查询保护,但有慢查询递归树监控

    可靠性(如何防止数据丢失,包括机器断电、硬盘损毁等情形下) 0~N个数据slave备份(实际使用情况基本是0个备份) 数据持久化在底层HDFS中,默认配置为三备份。

    (1)多机数据冗余

    (2)断电数据不丢失,重放redo log

    (3)数据完整性crc校验(防止磁盘损坏)

    对业务混合部署的支持(性能隔离) 进程级隔离(特殊处理可以到机器间隔离) 集群级隔离

    硬软隔离:

    (1)支持不同group的业务混步

    (2)支持同一个group业务混步(通过名字空间隔离),支持网络和内存的隔离。

    对访问权限的可控制性

    web操作管理员授权

    api操作支持鉴权和非鉴权两种模式

    提供机器接入的安全认证;

    提供业务表级别的权限认证机制(如读、写、管理运维等)。

    机器粒度的白名单管理
    实现语言、代码量 JAVA,java客户端14000行、管理中心22000行

    Java。

    client,30K

    整个工程(包括client和测试用例等)500k

    核心代码c++,10w行左右

    注:redis、redis cluster、medis如果没有特殊说明,核心指标相同。

  • 相关阅读:
    Lambda表达式 Lambda expression(1)
    解密随机数生成器(2)——从java源码看线性同余算法(转)
    解密随机数生成器(1)——真随机数生成器(转)
    HTML标签 table(4)
    HTML标签详解(3)
    Flink DataStream API
    Apache Flink Watermark
    Flink核心概念
    Flink SQL and Table
    Hive ORC File Format
  • 原文地址:https://www.cnblogs.com/houkai/p/4691308.html
Copyright © 2011-2022 走看看