kafka入门
来源:互联网 发布:武夷山网络花店 编辑:程序博客网 时间:2024/05/18 02:52
kafka入门
本章主要理解kafka一些原理性的东西,如果你想直接操作,安装好kafka后,运行起来,在来看原理,也是可以的,那样你可以更直观的了解kafka。看个人喜好了,本章是整个kafka的核心,无论你是先操作在来看,还是先看在操作,最后都请你多看几遍。
首先来了解一下Kafka所使用的基本术语:
TopicKafka将消息种子(Feed)分门别类, 每一类的消息称之为话题(Topic).
Producer
发布消息的对象称之为话题生产者(Kafka topic producer)
Consumer
订阅消息并处理发布的消息的种子的对象称之为话题消费者(consumers)
Broker
已发布的消息保存在一组服务器中,称之为Kafka集群。集群中的每一个服务器都是一个代理(Broker). 消费者可以订阅一个或多个话题,并从Broker拉数据,从而消费这些已发布的消息。
让我们站的高一点,从高的角度来看,Kafka集群的业务处理就像这样子:
话题和日志 (Topic和Log)
更深入的了解一下Kafka中的Topic. Topic是发布的消息的类别或者种子Feed名。对于每一个Topic, Kafka集群维护这一个分区的log,就像下图中的示例:分布式(Distribution)
Log的分区被分布到集群中的多个服务器上。每个服务器处理它分到的分区。 根据配置每个分区还可以复制到其它服务器作为备份容错。 每个分区有一个leader,零或多个follower。Leader处理此分区的所有的读写请求而follower被动的复制数据。如果leader当机,其它的一个follower会被推举为新的leader。 一台服务器可能同时是一个分区的leader,另一个分区的follower。 这样可以平衡负载,避免所有的请求都只让一台或者某几台服务器处理。生产者(Producers)
生产者往某个Topic上发布消息。生产者也负责选择发布到这此Topic上的哪一个分区。最简单的方式从分区列表中轮流选择。也可以根据某种算法依照权重选择分区。开发者负责如何选择分区的算法。消费者(Consumers)
通常来讲,消息模型可以分为两种, 队列和发布-订阅式。 队列的处理方式是 一组消费者从服务器读取消息,一条消息只有其中的一个消费者来处理。在发布-订阅模型中,消息被广播给所有的消费者,接收到消息的消费者都可以处理此消息。Kafka为这两种模型提供了单一的消费者抽象模型: 消费者组 (consumer group)。 消费者用一个消费者组名标记自己。 一个发布在Topic上消息被分发给此消费者组中的一个消费者。 假如所有的消费者都在一个组中,那么这就变成了queue模型。 假如所有的消费者都在不同的组中,那么就完全变成了发布-订阅模型。 更通用的, 我们可以创建一些消费者组作为逻辑上的订阅者。每个组包含数目不等的消费者, 一个组内多个消费者可以用来扩展性能和容错。正如下图所示:正像传统的消息系统一样,Kafka保证消息的顺序不变。 再详细扯几句。传统的队列模型保持消息,并且保证它们的先后顺序不变。但是, 尽管服务器保证了消息的顺序,消息还是异步的发送给各个消费者,消费者收到消息的先后顺序不能保证了。这也意味着并行消费将不能保证消息的先后顺序。用过传统的消息系统的同学肯定清楚,消息的顺序处理很让人头痛。如果只让一个消费者处理消息,又违背了并行处理的初衷。 在这一点上Kafka做的更好,尽管并没有完全解决上述问题。 Kafka采用了一种分而治之的策略:分区。 因为Topic分区中消息只能由消费者组中的唯一一个消费者处理,所以消息肯定是按照先后顺序进行处理的。但是它也仅仅是保证Topic的一个分区顺序处理,不能保证跨分区的消息先后处理顺序。 所以,如果你想要顺序的处理Topic的所有消息,那就只提供一个分区。
Kafka的保证(Guarantees)
生产者发送到一个特定的Topic的分区上的消息将会按照它们发送的顺序依次加入消费者收到的消息也是此顺序
如果一个Topic配置了复制因子( replication facto)为N, 那么可以允许N-1服务器当掉而不丢失任何已经增加的消息
用例 (Use CASE)
Kafka可以用于:消息系统, 例如ActiveMQ 和 RabbitMQ.
站点的用户活动追踪。 用来记录用户的页面浏览,搜索,点击等。
操作审计。 用户/管理员的网站操作的监控。
日志聚合。收集数据,集中处理。
流处理。
作者:半兽人
链接:http://orchome.com/5
来源:OrcHome
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
1 0
- kafka(1)- kafka入门
- Kafka入门
- Kafka入门
- Kafka入门
- KAFKA入门
- Kafka入门
- Kafka入门
- kafka入门
- kafka入门
- kafka入门
- kafka入门
- kafka入门
- kafka入门
- kafka入门
- Kafka入门
- kafka入门
- kafka入门
- kafka入门
- 关于ajax传值。php直接post接收输出
- ALAsset,ALAssetsLibrary,ALAssetsgroup常见属性及用法
- 树状数组离散化求逆序数
- 6、rqt_console和roslaunch
- Oracle学习四
- kafka入门
- 十大数据挖掘算法及各自优势
- hdu 1394(求逆序数)
- 【day0414 C++】优先级队列 priority_queue的使用
- Tomcat调优总结
- HDU5602 Black Jack DP
- 【操作系统之进程】
- Android实现批量照片上传至服务器,拍照或者从相册选择
- 剑指offer 二进制中1的个数