Kafka简介, Kafka和RabbitMQ区别

kafka基本原理概述——patition与replication分配 - 新际航 - 博客园

Kafka专用术语:

  • Broker:消息中间件处理结点,一个Kafka节点就是一个broker,多个broker可以组成一个Kafka集群。Broker的leader叫Kafka Controller会负责leader选举和zookeeper交互。

  • Topic:topic是一个逻辑上的概念, 指一类消息,Kafka集群能够同时负责多个topic的分发. 一个topic可以有多个分区 partitions. 如果一个Topic配置了复制因子( replication facto)为N, 那么可以最多允许N-1服务器当掉而不丢失任何已经增加的消息

  • Partition:topic 物理磁盘上的分组,一个topic可以分为多个partition,每个partition是一个有序的队列。kafka和单机的消息队列系统的区别就体现在这里, 一个topic的消息可以水平扩展到多个partitions上, 这多个partitions在多台节点上, 充分利用多台节点的IO能力, 而传统的单机的消息队列的瓶颈就在于只有一台服务器, 这台服务器的IO成为消息读写速度的瓶颈. kafka保证在一个partition内的消息有序, FIFO. kafka中的topic为什么要进行分区? - 知乎

  • Partition Replica:每个Partition都有leader和follower。leader负责写入消息,同时负责向消费组传输消息。follower则部分利用fetcher线程从leader同步消息,以防leader挂掉。

  • Segment:partition物理上由多个segment组成。

  • Offset(偏移):每个partition都由一系列有序的、不可变的消息组成,这些消息被连续的追加到partition中。partition中的每个消息都有一个连续的序列号叫做offset,用于partition唯一标识一条消息. Kafka 无法做到一个topic全局有序, 但是能做到一个分区内的消息有序. (kafka分布式的情况下,如何保证消息的顺序? - 知乎). 如果要做到topic内全局有序, 可以考虑使用乐观锁的一些方案, 比如时间戳.

  • ISR:未超时的Partition同步副本的队列,即In-sync Replica。

  • Kafka Controller:kafka broker的leader,负责各个partition的leader选举,保有replica同步的情况数据。

kafka中partition和消费者对应关系 - 简书

Partition & Group

1个partition只能被同组的一个consumer消费,同组的consumer则起到均衡效果。

换而言之,1个partition如果被多个consumer消费,那这几个consumer必定属于不同组。

KafkaController介绍_happy19870612's blog-CSDN博客

Kafka Controller

Kafka集群建立过程分析 - 简书

Kafka 代码详解

kafka调优技巧:

20道经典的Kafka面试题详解 - 简书

  • Producer 端: 增加 batch.size、linger.ms,启用压缩,关闭重试等。(让消息生产者打包批量地发送消息,batch.size即最小batch的大小。linger.ms的时间限制,达到linger.ms后,batch.size没有达到也要发送消息。)
  • Broker 端:    增加 num.replica.fetchers,提升 Follower 同步 TPS,避免 Broker Full GC 等。(fetcher是副本同步线程的名字。)
  • Consumer:   增加 fetch.min.bytes 等。 (消费者批量同步消息的最小字节数。)

Kafka 自2.8版本后不再需要Zookeeper维护一致性:

Kafka 不再需要 ZooKeeper - 性能与架构 - 博客园

以下内容为转者(rav009)原创:

What is the difference between Kafka and RabbitMQ?

Horizontal Scalablity:

Kafka will seperate a topic into several partitions. Each partition will be processed on a certain server. While RabbitMQ has a master queue and mirror queues, the mirror queue will be used only when the master queue failed. So this is a HA. The performance of RabbitMQ is determined by the spec of the server where the master queue locates in.

Routing Rules & Subscription

RabbitMQ supports complicated routing rules to delivery the messages. While kafka uses subscription mechinism.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值