借助 Flink 与 Pulsar,BIGO 打造实时消息处理系统

本文整理自 BIGO Staff Engineer 陈航在 Flink Forward Asia 2020 分享的议题《借助 Flink 与 Pulsar,BIGO 打造实时消息处理系统》。主要内容包括流计算

  1. 关于 BIGO
  2. BIGO 为什么会选择 Apache Pulsar
  3. Apache Pulsar 在 BIGO 中的角色
  4. BIGO 借助 Apache Pulsar 和 Flink 构造自己的实时消息流处理系统。
  5. 未来计hbase是什么意思

GitHub 地址
https://g测试技术应用实例有哪些ithub.kafka是干嘛的com/apapache2评分ache/flink
欢迎大家给 Flink 点赞送 star~

一、关于 BIGO

借助于大数据和人工智能技术,BI流计算解决什么问题GO 基于视频的服务和产hive数据库品获得了广泛的欢迎,在 150 多个国家和地区获得了大量的用户。BIGO 主要有两款非常流行的产品,第一款是 BIGO Live,另外一款是 Likee。BIGO Live 是一个直播平台,而 Likee 是一个短视频平台。

借助 Flink 与 Pulsar,BIGO 打造实时消息处理系统

二、为什么选择hbase创建表 Apache Pulsar

在过去的几年里,BIGO 的消息平台主要还是以开源的 Kafka 集群为主,但是随着业务的不断增长、用户不断扩充,整个消息流平台所承载的消息量和数据量也出现了成倍的增长,同时也对整个消息流系统提出了更高的要求。

主要体现在以下几个方面:

  • 第一,它对整个系统的稳定性、可扩展性以及鲁棒性hiver提出了更高的要求。
  • 第二,由于我们是短视频推荐相关的服务,所以对整个消息流的低延迟也提出了非常高的要求。

随着数量增长,整个 BIGO 的消息流平台的团队在维护多个 Kafka 集群上付出了大量的工作,苏卿陆容渊摆在我们面前hbase的有很多 Kafka 集群运维相关的问题。这个时候,我们就在思考,我hiveos挖矿教程们是选择开源 Kafka 的一个基线版本进行自己的迭代开发呢?还是看一下开源社区里面有哪些可以借鉴的方案,来打造一个符合我们应用场景需求的消息流平台。

于是我们进行了一系列调研。在调研的过程中,我们舍曲林的目光注意到了 Apache Pulsahive官网r,它有以下几点 feature 比较 match 我们的应用场景:

  • 首先,它能够测试技术基础水平地扩展。我们知道对于 Kafka 而言,它是一个服务和存储绑定的系统。当我们需要去扩容一个集群的时候,单单把机器上线是不能够满足需求的,我们需要对整个 topic 的 partition 进行相应操作,这个时候就是耗人力去运维的。所以,我们需要有一个能够水平扩展的系统。而 Apache Pulsar 提供的是存储和服务分离的一个架构,使用的是 bookk测试技术员工作内容eeper 作为底层的数据存分布式数据库系统于戈课后答案储,上层有一个 broker 来提供相关的服务。
  • 另外,就是它的 low latency 还有高吞存储容量的基本单位吐、低延迟以及在雅虎的生产环境上面经受了大数据量的考验。
  • 跨集群的复制等一系列的 feature 对于我们而言也是hiveos挖矿教程非常需要的。
  • 并且,这样一个存储和服务分离的架构也极大地减少了人工运维的成本。

所以我们选择了 Apache Pulsar。

借助 Flink 与 Pulsar,BIGO 打造实时消息处理系统

三、Apache Pulsar 在 BIGO 中的角色

1. 引入 Pu消息中间件kafkalsar 的历程

在 2019 年 11 月,我们重新开始思考 BIGO 的应用场景下面所需要的消息流平台到底是什么样的。是基于一个开源的 Kakfa 框架去开发,还是选择另外一套整个消息流系统?

在 2019 年 1存储过程1 月份,我们做了一次整个消息流平台的调研工作。apache安装在调研过程中,我们对比了 Kafka、Rohive怎么读cketMQ、Apache Pulsar 等业界相近的相对的消息队列的实现。然后我们做了一系列的横向对比,并且跟我们的业务需求进行了相应的apache安装比较。最终发现使用 Apache Pulsar 能够解决我们生产上的一些问题,能够为我们的消息流平台提供非常好的运维相关的负担的减轻,以及整个系统的稳定性和吞吐apache和tomcat区别的提升,所以我们就选择了 Apache Pulsar。

在 2019 年 12 月份,我们进行了一系列的压测。任何一个开源的框架,如果没有经过公司内部的大流量场景下Hive的压测,是不敢上线的。所以从 2019 年 12 月份一直到 2020 年 4 月份,经过了一系列的长时间的压测工苏卿陆容渊免费阅读作。

在压测的过程中,我们同时也发现了 Apa存储器可分为哪三类che Pulsar 的一些问题,并且给社apache和tomcat区别区修了一系列的 b存储器可分为哪三类ug。在 2sql数据库020 年 4 月份,我们把 Apache Puhiveslsar 部署在了我们的生产测试环境;在稳定运行一个月之后,我们就把它部署到了生产环apache和tomcat区别kafka和rabbitmq的区别hiveonos在 2020 年 5 月份,正式上线。

现有的 Apache Pulsar 集群规模,目前有十几个 Apache Pulsar 的节点。整个集群的入流量是在 2~3 GB/s。随着时间的推移,也有越测试技术基础第二版课后答案来越多的应用会不断地迁移到 Apache Pulsar 来替代现有的 Kafka 集群。

借助 Flink 与 Pulsar,BIGO 打造实时消息处理系统

2. Apache Pulsar 的角色

Apache Pulsar 在整个流处理过程中分布式数据库两阶段提交协议提供的是一个 PUB-SUB 的角色。

  • 首先,有 BIGO 这hbase数据库边的 Baina,一个 C++ 实现的消息收集服务,把相关的数据写到 Apache Pulsar 相关的 topic 里面去,这是第一种场景。
  • 第二场景就是 KMM,也就是 Kafka 的 Mirror Maker。
  • 第三种场景是 F苏卿陆容渊link。另外就是一些各种语言的客户端所实消息中间件现的 producer。它的下游主要有 Flink、Flink SQL 以及各个语言所实现的 consumer,比如说 golang、JAVA,C++ 的等等。

借助 Flink 与 Pulsar,BIGO 打造实时消息处理系统

3. 下游支撑的业务场景

第一个是实时数仓,第二个hive怎么读是实时的 ETL,第三个是实时消息中间件数据分析,另外就是实时推荐,还有更多的业务场景也在逐渐的介入。下游的数据apache是什么意思会写到 HIVE、消息中间件对比Pulsar 的 topic、C消息中间件面试题lickHouse、Hadoop、redis 等一系列下游的相关存储系统测试技术第三版贾民平课后答案

借助 Flink 与 Pulsar,BIGO 打造实时消息处理系统

四、Apache Pulsar 和 Flink 构造实时消息流处理系统。

这里需要分为以下三个方面来讲:

  • 第一,是关于 Pulsapache和tomcat区别ar-测试技术基础第二版课后答案Flink-Connector 的一些内幕。我相信在介绍 Pu存储诸天lsa分布式数据库系统于戈课后答案r-Flink-Connector 的一些内幕之后,大家会对整个 Flink 与 Pulsar 之间结消息中间件有哪些合的关系会更加地清晰明亮,在使用过程中也会更加地清晰;
  • kafka消费的三种模式二,是 BIGO 的一个 use case,就是使用 A分布式数据库适用于大数据分析pache Pulsar 和 Flink 来打造自己的实时 ETL 处理系统;
  • 第三,是借助 Apache Pulsar 和 Flink 打造 AB-存储过程test 系统。

首先看一下 Pulsa流计算框架r-Flink-Connector 整个生产和消费的逻辑。它主要包括一个 source 的 API 和 sink 的 API。对于消费的时候,也存储容量的基本单位就是使用一个 Pulsar-Flink-Connector 的 source 来订阅 Pulsar 的一个 topic。另外一个就是我们写一hiveon官网个 sink,会把 Flink 里面的数hive是什么意思中文据写出到 Pulsar 的 topic 里面。下图左边的宋庆玲代码展示怎么去订阅这样一个 topic,实际上只需要 new 一个 FlinkPulsarSource 的一个流,然后把这条流加入到 DataStream 里面去就可以了。

借助 Flink 与 Pulsar,BIGO 打造实时消息处理系统

对于 Flink 数据的写出而言,只apache是干嘛用的需要 new 一个 FlinkPulsar 的 Sink,然后我们调用第二个 DataSapache服务器tream 的 sink 就可以把数据给写出去了。实际上,整个的实现而言,跟 Kafka 的 API 是非常类似的。这流计算解决什么问题hive官网需要注意的几点就是,对于 Flink流计算是什么PulsarSource 里面需要传入的是 serviceUrl 以及 adminUrl。

  • serviceUrl 类似于 Kafka 的 broker_list;
  • adminUrl 就是我们去以管理员的方式来控制 Pulsar 的一些相关的操作。

Pulsar分布式数据库系统不具有的特点是 Flink 怎么样来订阅 Pulsar 的 topic,怎么样消息中间件和消息队列消费以及它的 offset 是怎么样 commit 回去的?

借助 Flink 与 Pulsar,BIGO 打造实时消息处理系统

这里就会涉及到 Pulsar Flink 的 exactly-once source。咱们首先来看一下图左边部分。这个图里面有一个 Pulsar 的 topic,当我们 new 一个 PulsarFlinkSource 的时候,实际上会对每一个 Pulsar t测试技术及应用opic 的 partition 创建一个 reader。这个 reader 使用的是 Non-Du分布式数据库适用于大数据分析rable Cursor,当这个 reader 订阅了消息中间件和消息队列这个 topic 之后,这个 topic 的数据流就会源源不断地流到这个 reader测试技术 的线程里面去。当 reader 的线程hbase触发一次 checkpoint 的时候,这测试技术贾民平第三版课后题答案个 Flink 任hbase务就会把自己的一些状态 checkpoint 起来。当 checkpoint 完成的测试技术第三版贾民平时候,就会调用一次 Notify checkpoint compl测试技术基础ete 这样的一个方法。触发的是另外一个 subscription 的一个 commit。

这个 subscription 实际上是一hbase数据库个 durable cursor。当它 commit offset 的时候,这个 offset 会消息中间件面试题保存在 bookkeeper 里面,这是一个永久hbase的特点保存的 offset。这样做的好处是,当 checkpoint 失败或者apache公司 checkpoint 丢了的时候,我们需要以一个 subscription name 从 Pulsar 里面去恢复的时候,就可以从 bookkeeper 里面去把 message i消息中间件和消息队列d 读出来,然后从这边恢复。

实际上对于 Pulsar-Flink测试技术员工作内容-Connector 的消费而言,它是由一条数据流和一条控制流来组成的:

  • 对于数据流,就是 Pulsar Topic 的数据源源不断的会流入到 reade测试技术第三版贾民平r 的这样一个线程里面,由 reader 线程进行相应的处理kafka
  • 控制流就是通过 subscripthbase安装ion name 来提交消费sql数据库的 message id,也就是类似于 Kafka 的一个 offset,会分布式数据库两阶段提交协议提交到 Pulsar 的客户端来保证消费的位置。

接下来看一下 checkpoint 实现的流程。

  • 首先,当我们去做 checkpoint N 的测试技术贾民平第三版课后题答案时候,当 N 结束了之后,它会把 dur消息中间件面试题able cursor 进行一次 commit;
  • 当我们去做 checkpoint N+1 的时候,N+1 完成之后,会接着去 commit N+1 的 duraHiveble cursor。

这样做的好处是,当这个任务失败之后,如果需要从某一个流计算引擎 checkpoi分布式数据库适用于大数据分析nt 恢复,只需要从 checkpoint 里面分布式数据库管理系统去读到上一次 checkpoint 成功的分布式数据库有哪些 offset 的 durable cursor 的 messa测试技术第三版贾民平ge id 的位置,就可以从上一次的位置去消费了。这也是保证 source 的 exactly once 的实现。

Topic/Partition 的 Discovery

  • 第一点是,在 Pulsar-Flink-Connector 实现的逻辑里,会为每一个 Topic/Partition 分配一个 reader 的线程。
  • 第二点是,每一个 task manager 会包括多个 reader 的线程,这地方会有一个什么样的映射关系?

举个例子:假设我们订阅的 T存储器中存取速度最快的是opic 里面,有 10 个 partition,Flink 里面只给它分配 5 个 task manager,那么怎么将 partition 映射到 5 个 task manager 里面去?这就会涉及到一个分配的hbase和hive的区别逻辑。整个分配的逻辑,实际上是使用一个哈希的方式把某一个 Topic/Partition hash 到目标的 task manager 上面。

这就会存在一些隐患:当我们订阅了几百个甚至上千个 topic 的时候,可能会存在一定的hbase创建表分配不均衡。成百上千舍曲林个 Topic/Partition 里面,并不是kafka消费的三种模式每一个 partition 的流量都是均衡的。假设我们订kafka和rabbitmq的区别阅了十个 Topic,其中有九个 Topic 的流量很小,另外一个 Topic 的流量很大,那么均摊到某一个 partition 时候也是这样的。这个很大的 topic 的 Partition 的流量很大,另外 Topic/Partition 的流量很小。如果我们只是单纯地进行一次 hash 的话,就会造成某些分布式数据库原理 t分布式数据库系统ask m存储容量的基本单位anager 上面的流量不均衡,可能会导致频kafka和rabbitmq的区别繁 GC 的问题。这个问题在下一个 use case 里会详细地提到,以及怎么样去解决它。

另外就是当某apache是什么意思一个 Topic/Partition 进行一次分测试技术员是做什么的区扩容时,怎么样去自动订阅这apache服务器样一个新的分区?在 Pulsar-分布式数据库两阶段提交协议Flink-Connector 里面会启动一个定时 check 的线程的逻辑。假设我们每一分钟 check 一次,是否有新的 partition 的加入,并且这个新 Tkafka消费的三种模式opic/Partition 分配到了某一个 task manager 上面,那么这个 task manaapache怎么读ger 就会自动地新创建一个 reader 的线程hbase数据库,然后把这个 partition 订阅下来。

这整个的流程,会有一个 discover 会不断的去 check。当有新的 partition 的时候就会 new 一个 reader 起来。每分布式数据库系统一个 reader 独立消流计算框架费某一个 Topic/Partition,把数据拿过来之后会定期宋庆玲进行自己的反序列化操消息中间件的作用作以及后续的处理。

借助 Flink 与 Pulsar,BIGO 打造实时消息处理系统

上面讲到的是整个 connector 的一个逻辑。在 Pulhbase是什么意思sar-Flink-Connector 里面提供hbase安装了 job 的方式,还提供了 catalog 的方式来消费 Pulsar 的 topic。但是目前它是没有提供 SQL DDL 的方式,在 BIGO 的应用场景里面大部分的 topic 都是以 json 的格式。大部分的数据,都是以 json 格式写入的。

对于这一类 jskafka的作用on 格式的topic,它可能没有事先配置自己的 schema 就写进来了,那么我们在消费apache和tomcat区别的时候,如果想用 SQL,怎么办呢?这里就需要用到 Flink DDL 的框架,所以 BIGO 的消息流平台团队在我们的使用过程中为 Pulsar-Flink-Connector 开发了 Flink SQL DDL 的支持。接下来看一下 Flink SQL DDL 的框架。

  • 第一步消息中间件mq,图左边就是 fetch messa分布式数据库的特点ge from P分布式数据库系统于戈课后答案ulsar topic,首先会定义这个 topic 的里面数据的一个字段信息,也就是 create table test_Flink_SQL,这里面有 rid 等字段。下面的位置里面包含的是怎样去和 Pulsar 的服务端建立连接的,这里会指定 topic 名称,指定 s苏卿陆容渊ervice苏卿陆容渊免费阅读 url,admin url 以及apache服务器 subscribe name,还有一些一系列相消息中间件有哪些关的配置操作。这样一段 SQL 的代码就能够hiveon矿池很好地完成把数据从 Pulapache公司sar topic 里面给消费出来。
  • 第二步,就可以进行一系列应用层相关逻辑的处理。比如做 join,count、union 等操作。另外就是一些应用层逻辑的处理,比如说去做统计相关的一些操作。在第二步操作完了之后,我们需要将最终的结果写出到第三方SQL存储里流计算技术面。第三方存储会包括 Hive 表、HDFSkafka适合的应用场景 和 Pulsar 的 topic 等。
  • 对于最终的写入写出就会测试技术员是做什么的进入到第三步,我们会调用一个 insert into 的方法,直接把我们处理的结果,写出到相关的 Hive 表里面去,这就是整个apache安装与配置 Flink SQL DDL 的一个处理逻辑。我们借测试技术助 Flink SQ流计算的应用L DDL 能够很好地来实现我们帅气撩人高冷动漫男头的 AB test 相关的hbase的特点操作。那么在前面的讲解里面,我消息中间件使用场景们可能会使用一个 job 的方式来提交,有了 Flink SQL DDL 的支持,我们就可以很方便地使用一个 SQL 的方式来消息中间件mq消费 Pulsar 的 topic,会进行一系列逻辑处理,最终把结hive是什么意思中文果写出去。

借助 Flink 与 Pulsar,BIGO 打造实时消息处理系统

现在来看一下基于 SQL分布式数据库系统不具有的特点是 方式的 use case。

Case 1

首先来看一下 BIGO reall-time ETL 的实现。这个实时 ETL 的背景,是我们在 Pulsar 里面,会有成百上千个 topic,每一个 topic 会有自己独立的 schema。我们现在的一个需求是想要把每一个 topic 使用自己的 schema 进行一次解析,把最终解析的结果以 bucket 的神祇领主时代格式落到 HDFS 的 Hive 表上面去。对于这样一个需求,我们可能会有几种方案:

  • 第一种方案,我们会直接使用 Pulsar 的 HDFS 的 connector,会把 topic 里面的数据会消费出来然后落到 HDFS 上面存储器去,这样做的话,当我们需要对 topic 里面进apache怎么读行一系列的处理的时候,可能就不大好办了。另外一个就是我们有成百上apache服务器千个 topic,那么也会有成百上千个 schema,也就是说我们可能要测试技术员是做什么的维护成百上千个线程,去解相应的 topic 里面的数据,然后把它落出去。这样对于整个任务的维护成本消息中间件原理与实现可能会比较高。
  • 第二种方案。我们可以用 Flink SQL 去消费每个topic,每一个 SQL 指令自己的 schema,然后把这个 topic 给消费出来,之后进行一系列的处理,然后写出去。这种方式,实际上也会带来几百个甚存储容量至上千个 SQL 任务的维护工作消息中间件原理与实现
  • 第三个方案,我们想到了使用一存储器可分为哪三类个 Flink 任务来消费apache安装与配置成百上千个 Pulsar 的 topic。然后进行一系列的 ETL 处理,首先进行 schema 的解析,然后进行apache安装一系列逻辑处理,最终把它kafka集群写出到 HDFS 上面去。下面这张图,就是我们采用的第三种方案:使用一个 Flink 的 job 把成百上千个 topic 订阅了。订阅完了之后,获取相应的线程去消分布式数据库架构费。解析完了之后会经过一系列逻辑处理,最终显示到 HDFS 上面去。

借助 Flink 与 Pulsar,BIGO 打造实时消息处理系统

这个 case 可能存在数据分布不均的问题。假设,我们有 500 个 topic,其中 400 个 topic 的流量hiveos挖矿教程很小,另外 100 个 topic 的流量很大。那么我们在订阅的时候,假设我起了 100 个 task manage测试技术员工作内容r 去消费。那么这可能就会按平均来算,有 5-10 个 topic partition 会落到同一个 task manager 上面去。如果我们不干预的话,由于这个 partition 自身的流量不均衡,可能会导致它从运行任务的进程的流量也是不均衡的,带来了频繁 GC 的问题。

为了解决消费端上面的 task manager 流量不均衡的情况。我们引入了一个 slot group 的概念。我们会事先对 topic partition 的流量进行一个预估,预估存储容量的基本单位完了之后,会通过人工计算的方式把几个低流量的 topic 组合成同一个 group 里面。同一个 gro消息中间件使用场景up 的 topic 会被放在同一个 slot 里面,然后去进行调度,这样就能够hive怎么读很好的去把 taskhiveon官网 manager 上SQL面的消费流量不宋庆玲均的问题解决掉了,整个 Flink job流计算的应用 就会运行的很好。

Case 2

第二个 case 是一个 AB test 的应用场景,做这个 AB test 场景的一个初衷是什么呢?hbase和hive的区别消息中间件有哪些我们实时的分布式数据库系统数仓里面,需要去产出小时级别的中间表,以及天级的中间分布式数据库表,给推荐算法的工程师以及数据分析师来使用。对于小时级别的中间表以及天级的中间表的产生,需要通过实时的去计算底层的各种类型的打点,比如用户观看的打点、某个视频的下发打点,还有用户其他行为的打点等等,会按照某一个维度进行聚合。聚合了之后会进行相关的一些统计,最终会形成一张宽带供推荐算法工程师以及数据分流计算框架析师来使用。

如果我们不提供这样一个宽表的话,那么对于上层的业务方而言,可能要不断的去访问底层的表,对底层表进行各种相应的操作。这样不但会浪费数据分析师以及推荐算法工程存储器可分为哪三类师的时间,也会造成整个集群计算资源的浪费apache和tomcat区别。那么在 BIGO 这边,之前的解决方案是使用 Hive消息中间件原理与实现。使用 Map Reduce 的方式,来把每张底层的表apache服务器进行一次聚合操作。聚合完了之后会提供一个小时级别中测试技术员是做什么的间表apache怎么读以及天级的中间表给上层业务使用,这样做的弊端是:Hi流计算countdistinctve M测试技术第三版贾民平课后答案ap Reduce 的时效性是没法保证的。所以我们就在想能否使用 Flink 流式计算的方式来提hbase怎么读高实时数仓的数据产出效率。

接下来就是我们这边的一个解决方案:首先我们会用 Flink SQL 去消费 Pulsar 的 topic。从下图的左边来看,我们有 Topic A、Topic B 和 Topic K。每个 topic 有自己的 DDL。我们首先会使用 Flink SQL 加上每一个 topic 的 scanner,也就是 DDL 会把 topic 的数据从存储容量 Pulsar 里面加载出hiver来,然后把测试技术第三版贾民平课后答案它做成每个 topic 的一个视图。

这个地方我们就会有 Table A、Table B 和 Table K 的一个表。假设有 K 张表,那么SQL我们需要对 K 张表进行一次聚合操作。假设是按照 uid 进行一次聚合,那么这个聚合有两种方式:

第一种方式是做 join。对于 Flink 而言,它的流测试技术员工作内容式 join 可能耗时会比较长,整个计算资源的消耗也是非常大的。所以我们这边做了一个比较巧妙的方案就是使用 union 代替 join。我们会把 Table A、Table B 和 Table K 通过 union 的方式会生成一个 View X。然后把 View X 直接写出以小时为粒度,到 ClickHouse 供用户查询。在 union 的过程当中,我们还会做一些相关的聚合的操作。来把相测试技术基础关的指标给聚合起来供用户使用。这个就是小时级别的中间表。

借助 Flink 与 Pulsar,BIGO 打造实时消息处理系统

对于天级的中间表而hiveon矿池言,我们所遇到的挑战是:它并不是单单的只依赖了 Table A、Table B 和 Tab分布式数据库原理le K,可能还依赖了离线的表。假设有 Table a1、Table a2 和 Table a3 三张表。我们怎么样把实时的表和离线的表做一个关联?这里我们也是使用的一个比较巧妙的方式。

首先。在左边 Table A、Table B 和 Table K 会使用 Flink SQL 把数据从 Pulsar 消费出来,然测试技术第三版贾民平后做成一个独立的 table。然后同样也是以 union 的方式把实时的流表给 union 起来,做一些统计相关的处理生成一个视图,一个View深情来的太迟 X。这个 View X 会根据我们精心设计过的一个 row-key,把它以天为维度写出到 HBase 里面去。

另外,对于离线而言。因为我们 Table Ahive官网、Table B 和 Table K 只是代表了咱们实时的一些数据,对于离线的数据,也是需要 join 进来的,那么就会使用一个 S测试技术及应用park 来把 Table a1、Table a2 和 Table a3 相关的数据给 join 起来,然后也以相同的规则生成一个 row-key 写在 HBase 里面去。

对于 HBase 而言,它实际上提供的就是一个 join 操作,写到 HBase 就很好的避免了我们将 View X 以及 Spark 所生成的这样一张表做 join 了。因为如果是有相同的 key,那么假设 HBase 这样一张宽表有 100 列,View X 占了前 8kafka适合的应用场景0 列,那么后面的 Spark 所算出来的这个表苏卿陆容渊会自动地填充到那个后 20 列里面去,那么最终会消息中间件生成同一个 row-key 的一个 100 维的一张宽表。测试技术员工作内容那么我们接下来会把 HBase 里面这样一张宽表读出来,然后写到 ClickHouse 供上层用户去查询。这样就能够很好的去避免表之间的 join 操作,极大地提高 join 的效率。

五、未来工作

  • 首先,我们会接着在 Pulsar-Flink-Connector 上面继续的去开发新的 feature 并且持续的去进行一系列的 bug 修复;
  • 第二点,我们会更多的将 Flink 任务持续地从 Kakfa 迁移分布式数据库系统到 Apache Pulsar 上面去;
  • 第三点,在我们整个的消息流平台里,之前使用的是 Kakfa,可能有成百上千个 Flink 的任务存储器或者是其他的任务,使用 Kafka 的 API 来消费 Kafka 的 top消息中间件有哪些ic。如果不提供一个简单测试技术应用实例有哪些的方式让用户来消费 Pulsar 的 topic 的话,这个迁移工作是非常难进消息中间件对比行的。所以我们会借助于 KOP,也就是 Kakfa on Pulsar,方便上层应用的迁移,有了这样一层 KOP 的一个 proxy,对于上面应用程序是不需要改任何的代码就能够自动的从 Kafka消息中间件kafka 切到 Pulsar 上面的;
  • 第四点,我们打算实现一个批流统一的数据的消费,从 Pulsar topic 里分布式数据库系统于戈课后答案面以批或者是流的方式来消费 topic 里的数据;
  • 第五点,我们会持续kafka加强 Pulhivessar 以及 bookkeeper 的稳定性以及吞吐的调优;
  • 第六点,我们会持续的去优化 Bookkkafka消费的三种模式eeper 的 IO 协议栈。

更多 Flink 相测试技术基础关技术问题,可扫码加入社区钉钉交流群
第一时间获取最新技术文章和流计算的应用社区动态,请关kafka适合的应用场景注公众苏卿陆容渊号~

借助 Flink 与 Pulsar,BIGO 打造实时消息处理系统

活动推荐

阿里云基于 Apache Flink 构建的企业级产品-实时计算Fli存储nk版现开启活动:
99 元试用 实时计算Flink版(包年包月、10CU)即有机会获得 Flink 独家定制卫衣;另包 3 个月及以上还有 85 折优惠!
了解活动详情:https://www.aliyun.com/product/bigdatahbase/sc

借助 Flink 与 Pulsar,BIGO 打造实时消息处理系统