Kafka使用心得(2)—kafka介绍

Kafka使用心得

1. Kafka简单理解

 kafka是一个可靠的消息中间件,它的直接作用是将生产者和消费者进行解耦。和自己简单实现一个消息队列相比,kafuka具有可靠性、可扩展性、灵活性等优点。

可靠性:kafuka的消息会落盘,因此保证了消息不会被丢弃。

可扩展性:kafuka是一个分布式系统,很容易通过增加机器来进行水平扩展。

灵活性:kafuka的消息可以被多个消费者组进行消费,消息的终点很灵活。

2. Kafka框架

 

从图中能够看出Kafka包含了三个模块:生产者,消费者,存储节点。

2.1 生产者
 生产者就是生产消息的部门,可以按照一定的规则将消息发送到存储节点。这部分接触不过,就不过多讲解。

2.2存储节点

这部分是kafka的核心,kafka的高可用、高性能在这里实现。相关的一些名词有:

topic:消息的类型

partition:消息存储的分区,一个topic可以具有多个partition,一般来说一个partition的数据量不宜过大,一台机器可以处理的过来。

offset:每条消息在partition的位置。offset是partition的属性,每个partition都有自己一套offset。

brokers:kafka的一个实例,其实可以认为是部署kafka的一台机器,但一台机器上也可能有多个broker,每个broker占用该机器的不同端口。

leader:leader是针对partition来说的,每个partition可以有多个备份,每个备份都分布在不同的broker上,其中有一个是leader,对partition中信息的读取是从leader进行读取的,其它broker和leader进行同步。

offset manager:offset的管理者,管理offset,可以通过offset manager对offset进行管理。

2.3消费者

消费者被称为消费组,每一组消费者之间是没有相互关系的。通过引入消费组,kafka支持多个消费组,kafka的数据可以有多个去处。当只有一个消费组的时候是点对点的消息通信,当有多个消费组的时候是广播形式的消息通信。

kafka的消费者在0.9.0版本之前两套API,分别是High Consumer API和Simple Consumer API。在0.9.0以后(包括)新增了Kafka Client接口,New一个Client就可以使用Client里的函数进行消费,非常方便。

(ps:0.8.2已经有了Client,但该Client里的Consumer有问题,不能使用,只有Product能用)。

3. Kafka缺点

Kafka的文档太乱,Kafka目前发展比较快,每个版本都会有非常多的功能发布,非常多的功能调整。因此,导致不同版本的学习成本增加,但幸好新版本会兼容老版本的接口。0.8版本之前,没有Client,只有API接口调用,之后才封装了Client。

猜你喜欢

转载自kaixiansheng.iteye.com/blog/2298845
今日推荐