加入收藏 | 设为首页 | 会员中心 | 我要投稿 南通站长网 (https://www.0513zz.cn/)- 专有云、图像技术、经验、数据治理、专属主机!
当前位置: 首页 > 站长资讯 > 评论 > 正文

鸿蒙HarmonyOS北向应用开发者极速入门教程

发布时间:2021-01-28 16:32:36 所属栏目:评论 来源:互联网
导读:这就是 HBase 实现的大致思路。接下来正式进入 HBase 设计解析。 2 Hbase 简介 Hbase 官网:http://hbase.apache.org 2.1 HBase 特点 海量存储 HBase适合存储 PB 级别的海量数据,能在几十到百毫秒内返回数据。 列式存储 HBase是根据列族来存储数据的。列族

这就是 HBase 实现的大致思路。接下来正式进入 HBase 设计解析。

2 Hbase 简介

Hbase 官网:http://hbase.apache.org

2.1 HBase 特点

海量存储

HBase适合存储 PB 级别的海量数据,能在几十到百毫秒内返回数据。

列式存储

HBase是根据列族来存储数据的。列族下面可以有非常多的列,在创建表的时候列族就必须指定。

高并发

在并发的情况下,HBase的单个IO延迟下降并不多,能获得高并发、低延迟的服务。

稀疏性

HBase的列具有灵活性,在列族中,你可以指定任意多的列,在列数据为空的情况下,是不会占用存储空间的。

极易扩展

基于 RegionServer 的扩展,通过横向添加 RegionSever 的机器,进行水平扩展,提升 HBase 上层的处理能力,提升HBase服务更多 Region 的能力。

基于存储的扩展(HDFS)。

2.2 HBase 逻辑结构

逻辑思维层面 HBase的存储模型如下:
 

这里面用到了异步迭代器相关的概念。如果不明白,可以去看我的另一篇专门讨论异步迭代器的文章,【传送门】。

二、解决终止标志

好像做好了,我们用循环接收和发送,并传递了外部的终止标志给这两个方法。

真的做好了吗?

还没有。问题出在终止标志上。我们没有考虑到这两个流是相互依赖的,特别是,我们不希望生产者(使用SendAsync的代码)在任何连接失败的场景中仍然运行。

实际上,会有比我们想像中更多的终止路径:

  • 我们可能已经为这两个方法提供了一个外部的终止令牌,并且这个令牌可能已经被触发
  • ReceiveAsync的消费者可能已经通过WithCancellation提供了一个终止令牌给GetAsyncEnumerator,并且这个令牌可能已经被触发
  • 我们的发送/接收代码可能出错了
  • ReceiveAsync的消费者在数据获取到中途,要终止获取了 - 一个简单的原因是处理收到的数据时出错了
  • SendAsync中的生产者可能发生了错误

这只是一些可能的例子,但实际的可能会更多。

本质上,这些都表示连接终止,因此我们需要以某种方式包含所有这些场景,进而允许发送和接收路径之间传达问题。换句话说,我们需要自己的CancellationTokenSource。

显然,这种需求,用库来解决是比较完美的。我们可以把这些复杂的内容放在一个消费者可以访问的单一API中:

(编辑:南通站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读