Kafka Streams实战 - (EPUB全文下载)

文件大小:0.28 mb。
文件格式:epub 格式。
书籍内容:

Kafka Streams实战
第1章 欢迎来到Kafka Streams
第2章 Kafka快速指南
第二部分 Kafka Streams开发篇
第3章 开发Kafka Streams
第4章 流和状态
第5章 KTable API
第6章 处理器API
第三部分 管理Kafka Streams
第7章 监控和性能
第8章 测试Kafka Streams应用程序
第四部分 Kafka Streams进阶
第9章 Kafka Streams的高级应用
附录A 额外的配置信息
附录B 精确一次处理语义
第1章 欢迎来到Kafka Streams
本章主要内容
了解大数据的发展是如何改变程序设计方式的。
了解流式处理是如何工作的以及我们为什么需要它。
Kafka Streams简介。
看看Kafka Streams能解决的问题。
在本书中,你将学习如何使用Kafka Streams来解决流式应用程序的需求问题。从基本的提取、转换、加载(ETL)到复杂的有状态转换再到连接记录,将会覆盖Kafka Streams的各组件,这样你就能够应对流应用程序中遇到的这些挑战。
在深入研究Kafka Streams之前,我们将简要地探索一下大数据处理的历史。当我们在确定问题和解决方案时,将会清楚地看到对Kafka和Kafka Streams的需求是如何演变的。让我们看看大数据时代是如何开始的,是什么导致了应用Kafka Streams的解决方案。
1.1 大数据的发展以及它是如何改变程序设计方式的
随着大数据框架和技术的出现,现代编程语言出现了爆炸式增长。当然,客户端开发经历了自身的转变,移动设备应用程序的数量也出现了爆炸式增长。但是,无论移动设备市场有多大,客户端技术如何革新,有一个不变的事实:我们每天需要处理的数据越来越多。随着数据量的增长,分析和利用这些数据带来的好处的需求也在同时增长。
然而,有能力批量处理大量数据(批处理)还不够。越来越多的组织机构发现它们需要在数据到达时就要对其进行处理(流式处理)。Kafka Streams提供一种前沿的流式处理方式,它是一个对记录的每个事件进行处理的库。基于每个事件进行处理意味着每个单独的数据记录一到达就能够被及时处理,并不需要将数据分成小批量(微批处理)。
注意
 
当数据到达时即对其进行处理的需求变得越来越明显时,一种新的策略应运而生——微批处理。顾名思义,所谓微批处理也是批处理,只不过数据量更小。通过减少批尺寸,微批处理有时可以更快地产生结果;但是微批处理仍然是批处理,尽管间隔时间更短。它并不能真正做到对每个事件进行处理。
1.1.1 大数据起源
20世纪90年代中期,互联网才开始真正影响人们的日常生活。从那时起,网络提供的互联互通给我们带来了前所未有的信息访问以及与世界任何地方的任何人即时沟通的能力。在所有这些互联互通访问过程中,一个意想不到的副产品出现了——大量数据的生成。
但在我看来,大数据时代正式始于Sergey Brin和Larry Page创立了谷歌公司的1998年。Sergey Brin和Larry Page开发了一种新的网页搜索排名方法——PageRank算法。在一个很高的层面上来说,PageRank算法通过计算链接到网站的数量和质量来对该网站进行评级。该算法假定一个Web页面越重要或越相关,就会有越多的站点引用它。
图1-1提供了PageRank算法的图形化表示。
图1-1 PageRank算法应用。圆圈代表网站,其中较大的圆圈表示有更多的其他站点链接到它
网站A是最重要的,因为有最多引用指向它。
网站B有些重要,尽管没有很多引用指向它,但有一个重要网站指向它。
网站C没有网站A或网站B重要。虽然指向网站C的引用比指向网站B的多,但是这些引用的质量较低。
底部的网站(从D到I)没有引用指向它们,这就使得这些网站的价值最小。
虽然图1-1是对PageRank算法的极度简化,但展示出该算法实现原理的基本思想。
当时,PageRank是一种革命性的方法。以前,Web上的搜索更倾向于使用布尔逻辑来返回结果。如果一个网站包含了你想要搜索的所有或大部分词条,那么这个网站就会出现在搜索结果中,而不管内容的质量如何。但在所有互联网内容上运行PageRank算法需要一种新的方法——传统的数据处理方法耗时太长。谷歌公司要生存和成长,就需要快速索引所有的内容(“快速”是一个相对的术语),并向公众展示高质量的结果。
谷歌公司为处理所有这些数据开发了另一种革命性的方法——MapReduce范式。MapReduce不仅使谷歌能够做一个公司需要的工作,而且无意中还催生了一个全新的计算产业。
1.1.2 MapReduce中的重要概念
在谷歌公司开发MapReduce时,map和reduce函数并不是什么新概念。谷歌方法的独特之处在于在许多机器上大规模地应用这些简单的概念。
MapReduce的核心在于函数式编程。一个map函数接受一些输入,并在不改变原始值的情况下将这些输入映射到其他对象。下面是一个用Java 8实现的一个简单实例,该实例将一个LocalDate对象映射为一个字符串消息,而原始的LocalDate对象则不会被修改。代码片段如下:
Function addDate =
(date) -> "The Day of the week is " + date.getDayOfWeek();
尽管简单,但这个简短的例子足以展示出了一个映射函数是做什么的。
但reduce函数接受一组参数,并将这些参数归约成一个值或者归约后至少参数规模更小。取一组数字并将它们加在一起是一个reduce操作的很好例子。
对一组数字执行归约,首先要初始化一个起始值,本例将起始值设置为0(加法的恒等值)。下一步是将起始值与数字列表中的第一个数相加,然后将第一步相加的结果与列表中的第二个数相加。函数重复执行这个过程,直到列表中最后一个数字,产生一个数值 ............

以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。

版权声明:书云(openelib.org)是世界上最大的在线非盈利图书馆之一,致力于让每个人都能便捷地了解我们的文明。我们尊重著作者的知识产权,如您认为书云侵犯了您的合法权益,请参考版权保护声明,通过邮件openelib@outlook.com联系我们,我们将及时处理您的合理请求。 数研咨询 流芳阁 研报之家 AI应用导航 研报之家
书云 Open E-Library » Kafka Streams实战 - (EPUB全文下载)