实时流处理Kafka

2023-04-06 18:09:09 浏览数 (1)

在大数据学习中,实战演练是必不可少的,下面就以实战项目技术构架体系中实时流处理kafka为例做一个详细讲解。

流处理就是介于请求应答和批处理之间的一种新型计算模型或者编程模型。为什么当我们说到流处理的时候,很多人都在说 Kafka。大多数人在最早接触 Kafka 时会说,Kafka 就是一个分布式发布订阅的消息系统,但是如果我们去观察 Kafka 的最初一些设计特性可发现以下几点内容。

第一点,它可以作为一个写在磁盘上的缓存来使用,或者说,并不是仅基于内存来存储流数据,它可以保证数据包不被及时消费时,依然可用且不被丢失;第二点,由于位移的存在提供了逻辑上的顺序,在同一个话题上,第一个数据比第二个数据最先被发布的时候,也可保证在消费时也是永远第一个数据比第二个数据先被消费;第三点,因为 Kafka 是一个公有的大数据中转站,就是说,所有的数据只要在 Kafka 上,永远可以在 Kafka 周围进行业务的开发或者认知事物的开发。

流式计算在 Kafka 上的应用主要有哪些选项呢?

第一个选项就是 DIY,Kafka 提供了两个客户端 —— 一个简单的发布者和一个简单的消费者,我们可以使用这两个客户端进行简单的流处理操作。举个简单的例子,利用消息消费者来实时消费数据,每当得到新的消费数据时,可做一些计算的结果,再通过数据发布者发布到 Kafka 上,或者将它存储到第三方存储系统中。DIY 的流处理需要成本。打个比方,考虑数据的延迟性,考虑不同时间上的管理分配,正如很多人提到的 processing time,这将是我后文会重点提及的概念。以上这些都说明,利用 DIY 做流处理任务、或者做流处理业务的应用都不是非常简单的一件事情。

第二个选项是进行开源、闭源的流处理平台。比如,spark。关于流处理平台的一个公有认知的表示是,如果你想进行流处理操作,首先拿出一个集群,且该集群包含所有必需内容,比如,如果你要用 spark,那么必须用 spark 的 runtime。因为他们划定了你作为一个流处理平台使用者需要用到的所有行为,比如,资源管理系统、参数调配系统、容器配置、代码封装、分发等,以上行为都已被该平台所限定。一旦你选择使用甲就必须用甲套餐装备,如果选择使用乙就必须使用乙套餐装备。

第三种选项是使用一个轻量级流处理的库,而不需要使用一个广泛、复杂的框架或者平台来满足他们不同的需求。在 Kafka 0.10 当中已发布轻量级流处理内容平台,我们可以设想,跟其他客户端发布者和消费者一样,它也是一个客户端,不同之处在于它是一个计算者客户端,一个好用的、功能强大的客户端,并且支持 state processing、Windows 延时的、异步的、甚至不同数据的调控。最重要的是 Kafka 作为一个库,可以采用多种方法来发布流处理平台的使用。比如,你可以构建一个集群;你可以把它作为一个手提电脑来使用;甚至还可以在黑莓上运行 Kafka。

0 人点赞