共计 4180 个字符,预计需要花费 11 分钟才能阅读完成。
摘要: 高斯 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…
点击关注,第一工夫理解华为云陈腐技术~