生产者对topic分区的原因
方便在集群中扩展,一个topic可以由多个partition组成, 每个partition可以通过调整以适应它所在的机器, , 因此整个集群就可以适应任意大小的数据了.
提高读写并行度,在分布式系统中, 同一个topic 的不同partition可以分布在多台主机中, 这就打破了单主机的IO和处理能力限制, 提高了读写的并行度.
便于数据复制备份, 提高数据冗余度和容灾能力
Kafka消费者消费方式(Pull)
kafka 的consumer 采用pull(拉)模式从broker中拉取数据.
push(推) 很难适应消费速率不同的消费者, 因为在这种方式中, 消费发送速率是由broker决定的, 他的目标是尽可能以最快速度传递消息, 但是这样很容造成consumer来不及处理消息, 典型的表现是拒绝服务以及网络阻塞, 而pull模式则可以根据consumer 的消费能力以适当的速率消费信息.
pull(拉) 不足之处是, 如果kafka没有数据, 消费者可能会陷入循环中, 一直返回空数据. 针对这一点, Kafka 的消费者在消费数据时会传入一个时长参数timeout, 如果当前没有数据可供消费, consumer 会等待一段时间之后再返回, 这段时间即为timeout.
kafka 的consumer 采用pull(拉)模式从broker中拉取数据.
uedbet西甲赫塔菲官网
窗口(Window)是处理无界流的关键所在。窗口可以将数据流装入大小有限的“桶”中,再对每个“桶”加以处理。 本文的重心将放在 Flink 如何进行窗口操作以及开发者如何尽可能地利用 Flink 所提供的功能。下面展示了 Flink 窗口在 keyed streams 和 non-keyed streams 上使用的基本结构。 我们可以看到,这两者唯一的区别仅在于:keyed streams 要调用 keyBy(...)
后再调用 window(...)
, 而 non-keyed streams 只用直接调用 windowAll(...)
。留意这个区别,它能帮我们更好地理解后面的内容。