分享

kafka权威指南 第一章第1节 【中文版】

本帖最后由 pig2 于 2017-5-7 08:20 编辑
问题导读

1. 为什么数据管道是数据驱动企业的一个关键组成部分?
2. 发布/订阅消息的概念及其重要性是什么?




相关内容:

kafka权威指南 第一章第1节  【中文版】
http://www.aboutyun.com/forum.php?mod=viewthread&tid=21648

Kafka权威指南 —— 第一章第2节 初识Kafka

http://www.aboutyun.com/forum.php?mod=viewthread&tid=21652


kafka权威指南 第一章第4节 【中文版】
http://www.aboutyun.com/forum.php?mod=viewthread&tid=21681




第一章

初识kafka

        企业是由数据驱动的。我们获取信息,分析它,处理它,并创造更多的产出。每一个应用程序都会产生数据,无论是日志消息、指标、用户行为、输出报文或者其他类型。每一个字节的数据都有它的作用,传入的数据会告诉接下来需要做什么。为了知道数据的意义,我们需要把数据从它产生的地方,传输到它能够被分析的地方。然后把分析的结果返回到它们能够被执行的地方。 我们越快地做到这一点,我们的系统就能更敏捷,具有更快的响应。我们在移动数据花费的精力越少越少,我们就越能集中处理核心业务。这就是为什么数据管道是数据驱动企业的一个关键组成部分。我们如何移动数据几乎变的和数据本身一样重要。

任何时候科学家们有分歧,那是因为我们没有足够的数据。我们可以在获取怎样的数据上产生统一的观点。我们获取了数据,然后数据解决了问题,要么你是对的,要么我是对的。然后我们就可以进行接下来的工作。                                                                                       
Neil deGrasse Tyson


Publish / Subscribe Messaging  发布/订阅消息

在讨论kafka的特性之前,需要理解发布订阅消息的概念及其重要性。发布-订阅消息队列的特征是消息的sender(publisher)并不直接将data(message)发送给receiver, publisher以某种方法对消息进行分类,而receiver (subscriber) 会订阅接收特定类别的消息。Pub/Sub系统通常会有broker(消息被发布到的中心点)来进行实现,消息将被发送至broker。

How It Starts        由来

许多发布订阅用例都始于相同的方式: 利用一个简单的消息队列或者进程间的通信。比如,你编写的应用程序需要向某处发送监控信息,你可以从应用程序直接连接到显示监控数据的dashboard,并通过该连接发送监控数据,如图1-1所示
图片1.png
图1-1 单个直连指标发布者

不久之后,你决定要分析长期的数据,但在dashboard中展销效果不是很好。于是你建立了一项新服务,可以接收监控、存储指标并对其进行分析。为了支持此功能,你可以修改应用程序以将指标写入这两个系统(实时监控和长期监控)。到目前为止,有多于三的个应用程序生成指标信息,并且它们都利用相同的连接与这两个服务建立连接。你的同事认为, 对服务器进行轮询以用于产生报警也是个不错的想法, 因此你在每个应用服务器添加根据请求提供监控指标的服务。过一段时间后,你将会有更多应用程序需要使用这些服务器去获取各个指标并将其用于各种目的。现在的架构看起来可能如图1-2所示,连接变得更加复杂难以 跟踪调试。
图片2.png
图1-2 多直连指标发布者
很明显到这里已经欠了很多技术债,你决定偿还一些回来。你使用一个应用程序接收来自所有应用程序的指标,并提供一个服务器来查询任何它们需要的系统的指标。这样就降低了架构的复杂性,类似于图1-3。恭喜,你已经构建了一个发布订阅消息系统!
图片3.png
图1-3 单指标发布订阅系统

Individual Queue Systems   单队列系统

在你与监控这场战争中,你的一个同事也一直在对日志消息进行类似的工作。另一个则是在跟踪前端页面上的用户行为,并向正在从事机器学习的开发人员提供该信息,为管理层创建一些报表。您已经遵循了类似的方法来构建将信息的发布者与该信息的订阅者解耦的系统。 图1-4显示了这种结构,具有三个独立的发布/订阅系统。
图片4.png
图1-4 多指标发布订阅系统

这肯定比之前点对点的连接好多了(图1-2所示),但是有很多重复工作。你的公司需要维护多个队列系统来存储数据,所有这些都有各自的bug和使用限制。你肯定也知道未来将会有更多需要消息队列的情况。你想要的是一个单一的集中式系统,允许发布通用类型的数据,并且能随着业务增长而增长。

本帖被以下淘专辑推荐:

已有(3)人评论

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条