Apache kafka简介

第一个挑战是如何收集大量的数据,第二个挑战是分析收集的数据。为了克服这些挑战,你必须需要一个消息系统。

kafka专门分布式高吞吐量系统而设计。kafka往往工作的很好,作为一个更传统的消息代理的替代品。与其他消息传递系统相比,kafka具有更好的吞吐量,内置分区,复制和固有的容错能力,这使的它非常适合大规模消息处理应用程序。

2.什么是消息系统?

消息系统负责将数据从一个应用程序传输到另一个应用程序,因此应用程序可以专注于数据,但不担心如何共享它。分布式消息传递基于可靠消息队列的概念。消息在客户端应用程序和消息传递系统之间异步排队。有两种类型的消息模式可用-- 一种是点对点,另一种是发布-- 订阅(pub -sub)消息系统。大多数消息模式遵循pub-sub。

3.点对点消息系统

在点对点系统中,消息被保留在队列中。一个或多个消费者可以消耗队列中的消息,但是特定消息只能由最多一个消费者消费。一旦消费者读取队列中的消息,它就从该队列中消失,该系统的典型示例是订单处理系统,其中每个订单将由一个订单处理器处理,但多个订单处理器也可以同时工作,下图描述了结构。

                                    

发布---订阅者消息系统

在发布---订阅系统中,消息被保留在主题中。与点对点系统不同,消费者可以订阅一个或多个主题中的所有消息。在发布--订阅系统中,消息生产者称为发布者,消息使用者称为订阅者。一个现实生活的例子是Dish电视,它发布不同的渠道,如远动,电影,音乐等,任何人都可以订阅自己的频道集,并获得他们订阅的频道时可用。

       

4. 什么是kafka?

Apache kafka是一个分布式发布---订阅消息系统和一个强大的队列,可以处理大量的数据,并使能够将消息从一个端点传递到另一个端点。kafka适合离线和在线消息消费。kafka消息保留在磁盘上,并在集群内复制以防止数据丢失。kafka构建在Zookeeper同步服务之上。它与Apache storm和Spark非常好的集成,用于实时流式数据分析。

好处

1.可靠性---kafka是分布式,分区,复制和容错的。

2.可扩展性---kafka消息传递系统轻松缩放,无需停机。

3. 耐用性:kafka使用分布式提交日志,这意味着消息会尽可能快的保留在磁盘上,因此他是持久的。

4. 性能  : kafka对于发布和订阅消息都具有高吞吐量,即使存储了许多TB的消息,它也保存稳定的性能。

kafka 非常快,并保证零停机和零数据丢失。

指标 ---kafka通常用于操作监控数据,这涉及聚合来自分布式应用程序的统计信息,以产生操作数据的集中馈送。

日志聚合解决方案 ---kafka 可用于跨组织从多个服务收集日志,并使它们以标准格式提供给多个服务器。

流处理---流行的框架(如Storm 和Spark Streaming)从主题中读取数据,对其进行处理,并将处理后的数据写入新主题,供用户和哟、应用程序使用。kafka的强耐久性在流处理的上下文中也非常有用。

需要Kafka

kafka是一个统一的平台,用于处理所有实时数据Feed。Kafka支持低延迟消息传递,并在出现机器故障时提供对容错的保证。它具有处理大量不同消费者的能力。kafka非常快,执行2百万写/秒。kafka将所有数据保存到磁盘,这实质上意味着所有写入都会进入操作系统(RAM)页面缓存,这使得将数据从页面缓存传输到网络套接字非常有效。

Apache kafka---基础

在深入学习Kafka之前,您必须了解主题,经纪人,生产者和消费者等主要术语。 下图说明了主要术语,表格详细描述了图表组件

                    

组件和说明

1. topic (主题) 属于特定类别的消息流称为主题。数据存储在主题中。主题被拆分成分区,对于每个主题,kafka保存一个分区的迷你妈妈,每个这样的分区包含不同变有序序列的消息。分区被实现为具有相等大小的一组分段文件。

2.partition(分区) 主题可能有许多分区,因此他可以处理任意数量的数据。

3. Partition offset(分区偏移) 每个分区消息具有称为offset的唯一序列标识。

4. Replicas of partition(分区备份) 副本只是一个分区的备份。副本从不读取或写入数据。他们用于防止数据丢失。

5. Brokers(经纪人)  代理是负责维护发布数据的简单系统。每个代理可以代理每个主题具有零个或多个分区。假设,如果在一个主题和N个代理中有N个分区,每个代理将有一个分区。

(分区少,代理多)假设在一个主题中有N个分区并且多于N个代理(n+m),则第一个N代理将有一个分区。

*(分区少,代理多)假设在一个主题中有N个分区并且多于N个代理(n+m),则第一个N代理将具有一个分区,并且下一个M代理将不具有用于该特定主题的任何分区。

(分区多,代理少)假设在一个主题中有N个分区并且小于N个代理(n-m),每个代理将在他们之间具有一个或多个分区共享。由于带六之间的负载分布不相等,不推荐使用此方案。

6. kafka Cluster(kafka集群)

kafka 有多个代理被称为kafka集群。可以扩展kafka集群,无需停机。这些集群用于管理消息数据的持久性和复制。

7.Producer(生产者)

生产者是发送给一个或多个kafka主题的消息的发布者。生产者向kafka经纪人发送数据。每当生产者将信息发布给代理时,代理只需要将消息附加到最后一个段文件。实际上,该消息将附加到分区。生产者还可以向他们选择的分区发送消息。

8.Consumers(消费者)

ConSumers从经纪人处读取数据。消费者订阅一个或多个主题,并通过从代理中提取数据来使用已发布的消息。

9. Leader(领导者)

Leader是负责给定分区的所有读取和写入的节点。每个分区都有一个服务器充当Leader.

10. Follower (追随者)

跟随领导者指令的节点被称为Follower。如果领导失败,一个追随者将自动成为新的领导者。跟随者作为正常消费者,拉取消息并更新其自己的数据存储。

猜你喜欢

转载自blog.csdn.net/abcdefghwelcome/article/details/85106098