摘要: 高斯Redis,兼具开源Redis和HBase各自长处,提供老本更低、性能更好、灵活性更强的数据库服务!
本文分享自华为云社区《华为云PB级数据库GaussDB(for Redis)揭秘第九期:与HBase的比照》,原文作者:高斯Redis官网博客。
0. 引言
HBase是一个分布式的、面向列的开源数据库,基于Hadoop生态圈,在NoSQL蓬勃发展的明天被国内外泛滥公司抉择,利用于古代互联网零碎的不同业务。本文简要形容了HBase的根本架构和应用场景,重点剖析了HBase要害个性在此场景下的体现,以及HBase在应用上尚存的痛点;同时介绍了华为自研的强统一、长久化 NoSQL数据库GaussDB(for Redis)(下文简称高斯Redis)在以上场景中的体现,以及对于HBase痛点问题的改善。
1. HBase零碎简述
HBase的物理构造次要包含ZooKeeper、 HMaster、 RegionServer、HDFS 等组件。 ZooKeeper 用以实现 HMaster 的高可用、 RegionServer 的监控、元数据的入口以及集群配置的保护等工作。HMaster的作用是保护整个集群的Region信息,解决元数据变更及负载平衡工作。RegionServer是间接解决用户读写申请的节点,理论解决所调配Region的读写、决裂等工作,并应用WAL实现容错机制。HDFS提供最终的底层数据存储服务,提供元数据和表数据的底层分布式存储服务,同时利用数据多正本,保障的高牢靠和高可用性。
在逻辑构造中,RowKey是表的主键,并依照字典序进行排列,HRegion 达到肯定大小后也会依照 RowKey 范畴进行裂变。ColumnFamily在纵向上对表进行切分,将多个Column分成一组进行治理,在HBase中,ColumnFamily是表的schema而Column不是。Cell则是保留的具体value,在HBase中,所有的数据都是以字节码的形式进行存储。
2.HBase大显神通
2.1标签数据的存储
标签数据是稠密矩阵的代表,形容了实体的各类属性,次要利用于智能举荐、商务智能或营销引擎等畛域。
三个不同的用户在同一公司旗下的不同APP中留下了大量的行为数据,这些数据中蕴含了间接填写的用户材料、应用APP的具体行为以及领域专家对某些景象的标记,通过后盾的标签算法能够失去这样的数据:
咱们能发现,对用户行为采集存在局限性,因而所能失去的标签品种各不相同,表中大量的数据项只能被置空,也就是所谓的稠密矩阵。而且随着用户更深度的应用APP,能够预见到,对用户感兴趣畛域/不感兴趣畛域会逐步被挖掘,那么表的列也会随之减少。
这样的特点对于MySQL是灾难性的,这是因为在MySQL建表时就必须定义表构造,属性的动静增删是微小的工作量,同时大量NULL值的存储会导致存储老本变得难以承受。然而应用HBase存储时,未指定value的列不会占用任何的存储空间,因此能够将无限的资源高效利用,且HBase表在创立时只需指定ColumnFamily,而对于Column的增删极为容易,有利于应答将来属性的扩张。
2.2 车联网数据的收集
车联网零碎是利用车载设施收集车辆运行时产生的各项数据,通过网络实时上传,在平台进行动态分析和利用。
咱们能够发现,车联网零碎所面对的数据特点是大量车辆终端高并发的不间断写入TB级甚至PB级的数据,而且对于实时剖析来说,为了保障剖析后果的时效性,又要求查问的低时延响应。
HBase采纳LSM存储模型,能够从容应对高并发写入的场景,同时也能保障读时延在可承受的范畴内。同时HBase具备良好的程度扩大能力。通过增减RegionServer来实现对存储容量动静调整,满足对应用老本的要求。
2.3 交易记录的保留
在挪动领取畛域,保障历史交易记录等敏感信息的安全性是一个重要的话题。当数据中心遭逢自然灾害、内部攻打时,必须保障这些信息不丢,而且从业务角度要保障RTO尽可能短、RPO尽可能为0。
HBase基于底层的HDFS作为存储系统,HDFS实现了三正本策略,依照肯定的规定将正本放在不同的节点或机架中,自身具备较高的容灾能力。在工程实际中,也产生了Region replica、主备集群、互备双活等策略来尽可能进行灾备并保障高可用。
3.HBase并不全能
从上文三个例子能够看出,HBase基于其自身的设计,在稠密矩阵的存储、抗高并发大流量写入、高可用和高牢靠场景下体现得相当优良,但这并不意味着HBase能够没有任何弱点的适应所有场景。
3.1HBase的阿克琉斯之踵
1. 朱丽叶暂停
Java零碎绕不开Full GC的探讨。HBase在Full GC造成STW时,ZooKeeper将收不到来自RegionServer的心跳,进而将此节点断定为宕机,由其余节点接管数据,当Full GC完结后,RegionServer为避免脑裂而被动他杀,称之为朱丽叶暂停。这类问题个别须要资深的java程序员依据业务场景进行粗疏的GC策略调优能力尽可能防止。
2. 数据类型少
HBase反对存储的类型是字节数组,在应用中须要将字符串、简单对象、甚至图像等数据转化为字节数组进行存储。然而这样的存储只能示意涣散的数据关系,对于汇合、队列、Map等数据结构或数据关系,则须要开发人员编码实现转换逻辑能力进行存储,灵活性较差。
3. 性能之瓶颈
HBase是依照RowKey的字典序宰割为Region进行存储的,不佳的RowKey设计方案会造成负载不均,申请大量打到某一个Region造成热点,那么所在RegionServer的IO有可能被打爆。
RegionServer掉线后,须要由ZooKeeper发现节点宕机,将其负责的数据挪动到其余节点接管,并对meta表中的Region信息进行批改。在此过程中,RegionServer上的数据将变得不可用,对于这部分数据的申请会被阻塞。
3.2 Redis的伊卡洛斯之翼
3.2.1 开源Redis的良好体现
开源Redis的个性在肯定水平上解决了HBase的痛点问题,因其具备以下长处:
1. 更丰盛的数据类型
Redis 5.0协定中蕴含了String、List、Set、ZSet、Hash、Bit Array、HyperLogLog、Geospatial Index、Streams九种数据类型,以及建设在这些数据类型上的相干操作。与HBase的繁多数据类型相比,Redis给了开发人员更多的抉择空间来表白数据和数据间的互相关系。
2. 纯内存的丝滑感触
开源Redis的实质是一个key-value类型的内存数据库,整个数据库都加载在内存中进行操作。这也就意味着Redis的响应速度和解决能力远超过须要进行磁盘IO的HBase,目前大量的测试后果都表明,开源Redis的性能能够达到每秒10万次读写。
3.2.2 开源Redis的显著弱点
纯内存的操作也使得开源Redis有无奈防止的弱点,次要体现在以下两方面:
1. 大数据量下的噩梦
当数据量继续增大时,无限的内存成为应用限度。此时必须应用更大容量的内存能力实现数据的全量加载,而内存价格远高于磁盘价格,会导致应用老本的激增。同时常见的服务器内存多是GB级,也重大限度了开源Redis在高量级数据库畛域的竞争力。
2. 断电后该何去何从
纯内存操作的另一弊病是宕机后数据会全副失落。现有的解决方案是应用AOF或RDB的形式将数据长久化,过程重启后能够在内存中将数据恢复。但这两种形式并不齐备,AOF是执行命令的汇合,因而复原速度绝对较慢;RDB是定期dump内存数据,因而存在数据失落的危险。除此之外,在最坏场景下须要预留一半内存,升高了内存的使用率。
4.高斯Redis:成年人不做选择题
HBase和开源Redis各有千秋,这时一句相熟的话在脑海中浮现:小孩子才做选择题,成年人当然是全都要,高斯Redis的兼具二者长处,更好的满足了对数据库服务的需要。
- 兼容Redis5.0协定
连续开源Redis的丰盛数据类型,为形容数据和数据关系提供更多抉择。例如在稠密矩阵场景应用Hash类型,甚至无需定义HBase表ColumnFamily,能够更灵便的进行数据组织。
- 性能追平开源Redis
参考【华为云高斯DB(for Redis)与开源Redis集群性能比照】能够看出,高斯Redis与开源Redis的性能简直雷同,在大流量高并发的场景中,能够提供比HBase更好的读写体现。
- 更高的灾备可靠性
高斯Redis基于华为自研的分布式、强统一数据湖DFV构建的存储层,在局部局点的曾经上线了3AZ个性,AZ间做到风火水电的物理隔离,一个AZ的故障不会影响到其余AZ,与HBase相比更好保障了要害数据的可靠性。
- 秒级弹性伸缩
高斯Redis应用存算拆散架构,数据下沉至存储池,计算节点扩缩容仅批改映射无需搬迁数据,实现秒级平滑伸缩,不存在HBase在Region高低线时呈现的数据不可用问题。
- 低成本海量长久化存储
全量数据通过逻辑和物理压缩,将落入共享存储池DFV长久化存储,无宕机数据失落问题,每GB的综合老本不到开源Redis的十分之一。理论利用中可依据业务须要随时对DFV容量进行扩容,不存在开源Redis存储受限的问题。
- 自动化监控运维等其余劣势
高斯Redis配套全面的监控零碎可对申请时延等要害性能指标可视化监控,同时可实现故障节点主动摘除、平滑挪动、主动告警、主动复原。此外,高斯Redis利用hash策略对数据进行平衡,与HBase相比更好的防止了热点问题,而且不存在Full GC懊恼。
5.结语
高斯Redis在兼容Redis5.0协定的根底上,兼具开源Redis和HBase各自长处,联合华为自研DFV存储的相干个性,躲避HBase和开源Redis在典型场景下的弱点,提供老本更低、性能更好、灵活性更强的数据库服务。
6.附录
本文作者:华为云高斯Redis团队。
杭州西安深圳简历投递:yuwenlong4@huawei.com
更多技术文章,请关注高斯Redis官网博客:
https://bbs.huaweicloud.com/c...
高斯Redis官网首页:
https://www.huaweicloud.com/p...
点击关注,第一工夫理解华为云陈腐技术~