kafka简介

2019-01-29  本文已影响0人  圆滚滚_8e70

(1) topic和record简介

每个topic在kafka集群里面都会有一个或多个分区,类似如下:


kafka的topic.png

每个分区他是有序的,不可变的记录组成。详情如下:


record.png

(2)分布式

(3)Geo-Replication(地域复制)

(4)生产者

生产者推送数据到对应的topic中。
生产者负责决定哪个record被分配到topic的哪个分区。通过循环的方式,可以非常简单的实现负载均衡。也可以通过某些语义来进行分类。

(5)消费者

消费者通过一个消费者组(consumer group name)来标记他们自己。每个被发布到topic上的记录,都会被发送给每一个消费者组(consumer group)上的某一个具体的实例(consumer instance);消费者实例可以被分为不同的进程,也可以在不同的机器上。

如上图所示,在kafka集群中有4个分区(P0-P3);有俩个消费者组(Consumer Group A和B),A拥有2个消费者实例(C1和C2),B拥有4个消费者实例(C3-C6);消费者实例之间的负载均衡由kafka协议控制。

(6)kafka能特点

(7)kafka作为一个消息系统

kafka模型的优势在于它不仅可以成规模的处理消息,也可以拥有多个订阅者。在传统消息系统里面无法做到俩方面都支持。
kafka相对有传统消息系统而言,在消息顺序方面更加有保证。

传统消息系统的并发和有序冲突

在传统的消息系统里面,多个消费者消费一个队列的时候,尽管服务端是按照存储顺序从服务端发出的,但是在客户端那边,接收到的消息是异步的。这也意味着在并发场景下,这个顺序被打破了。想要保证顺序的话,就只能有一个消费者,这就咩有所谓的并发了。

kafka是如何解决这个问题的呢?

kafka有个并行性的概念--分区。kafka能够提供顺序保证以及负载均衡。kafka保证了一个消息只会被一个消费者实例消费。

(8)kafka作为一个存储系统

(9)kafka用来流处理

仅仅是读、写和存储流式数据还是不够的,kafka还拥有处理实时数据流的能力。
在kafka里面,流式处理器就是一个从一个topic源源不断的读取流失数据,输出到另一个topic的工具。
kafka提供了强大了流式处理API。这允许应用程序进行简单的数据流聚合和数据流拼接。
主要有以下几种用途:
1.处理无序的数据;
2.因代码变动而需要重新处理的数据;
3.执行状态计算

(10)其他

上一篇 下一篇

猜你喜欢

热点阅读