kafka简介

来源:互联网 发布:台灯牌子 知乎 编辑:程序博客网 时间:2024/04/20 10:01

kafka简介

本文翻译参考原文为:http://kafka.apache.org/intro

简介
kafka 是一个分布式流平台。那到底意味着什么?
流平台有三个主要能力:
1、它能让你订阅和发布数据流,在这个方面上看它与消息队列和企业消息系统有相似之处。
2、它能以容错的方式存储数据流。
3、它能及时的处理数据流。

kafka 擅长什么?
它有两种广泛的应用:
1、在系统和应用程序间构建可靠的、实时的流数据管道。
2、构建实时的流应用程序传递数据流或者对数据流做出反应。

为了深入的理解kafka如何做到这些事情,让我们继续向下看。
首先是一些概念:
kafka以集群的方式运行在多台服务器上。
kafka集群存储到仓库中的流记录叫做topic。
每条记录由key,value和timestamp组成。

kafka有四个核心api
生产者api:它让应用程序发布流记录到一个或者多个kafka topic。
消费者api:它让应用程序订阅一个或者多个kafka topic 并且处理由生产者发布给他们的流记录。
流api:它能让应用程序扮演一个流处理者,消费一个来自一个或者多个topic的流,并且产生一个流到一个或者多个topic。高效的把输入流传输到输出流。
连接api:它能够创建和运行可重用的生产者和消费者,这些生产者和消费者能够把kafka的topic连接到已经存在的应用程序或者数据系统中。例如,一个关系数据库的kafka连接能够捕获一张表的每次变化。

在kafka中,客户端和服务端的连接是简单、高效、语言无关的TCP协议。这个协议是版本化的,并且是向后兼容的。我们提供了一个kafka的java客户端,但是客户端也可以是各种语言的。

Topic和log
让我们首先看一下kafka的核心数据提供者——topic
topic是一个类别或者供料部门,能够对外发布信息。kafka中的topic经常是多个订阅者的,也就是说,一个topic能够有0、1、2或者更多的消费者。这些消费者订阅数据并且向数据中继续写入。
对于每一个topic,kafka集群会保存一个分区日志,如下图。

每一个分区都是有序的不可改变的记录序列,这个序列会被持续的追加到日志中。在分区中的记录会被分配一个序列id号,这个序列号也叫做偏移量,能够唯一的定义分区中每条记录的位置。

kafka集群会通过一个可以配置的保留时间,保留所有发布的记录,无论这些记录是否被消费。例如,如果保留策略设置成两天,那么在记录发布的两天内,这条记录能够被消费,但是,两天后,就会为了释放空间被删除。
kafka的对于关心的数据的性能是常数级的,所以很长时间的排序也不是什么问题。


























0 0
原创粉丝点击