消息队列有了解过么?
答:Kafka是一个消息队列,可以实现发布订阅模式,在异步通信或者生产者和消费者之间需要解耦的场景经常使用,可以对数据流进行处理等。
Kafka为什么这么快?
Kafka的特性?
Kafka中的核心概念?
- 生产者(Producer):生产消息,并且按照一定的规则(分区分配规则)推送到Topic分区中
- 消费者(Consumer):从Topic中拉去消息并进行消费,消费者自行维护消费消息的位置(offset)
- 主题(Topic):存储消息的逻辑概念,是一个消息集合,Kafka根据topic对消息进行归类,发布到Kafka集群的每个消息都需要指定一个topic
- 分区(Partition):每个Topic可以划分为多个分区,每个消息在分区中都会有唯一编号的offset,Kafka通过offset保证消息在分区中的顺序,同一Topic的不同分区可以分配在不同的broker上。
- 副本(replica):Kafka对消息进行冗余备份,每个分区有多个副本,每个副本中包含的消息是一样的,每个副本都会选举出一个leader副本,其余为Follower副本,Follower副本仅仅是将数据从leader副本拉到本地,然后同步到自己的Log中。
- 消费者组(Consumer Group):每个Consumer都属于一个Consumer Group,每个消息只能被consumer group中的一个Consumer消费,但可以被多个consumer group消费。
- broker:一个单独的Server就是一个broker,主要用来接收生产者发送过来的消息,分配offset,并且保存到磁盘中。
- Cluster&Controller
简单介绍下Kafka的副本机制?
在分布式的存储中,进行冗余备份是一种常见的设计,主要的设计方案有同步复制和异步复制。
同步复制:当所有的follower副本都将消息复制完成,这条消息才会被认为是提交完成,一旦有一个follower副本出现故障,就会导致消息无法提交,极大地影响了系统的性能。
异步复制:当leader副本接收到生产者发送的消息后就认为当前消息提交成功,follower副本异步的从leader副本同步消息,但是不可以保证同步速度,当leader副本突然宕机的时候,可能follower副本的消息落后太多,导致消息的丢失。
kafka引入了ISR集合:ISR集合表示“当前”,“可用”且消息量与leader相差不多的副本集合,需要满足如下条件:
优点:
Kafka消息传输的三大语义:
- At most once:最多一次,消息可能会丢失,但是绝对不会重复传输。
- At least once:最少一次,消息绝不会丢失,但有可能会重复
- Exactly once:恰好一次,每条消息可宁会被传输一次而且仅传输一次。
Kafka中关于可靠性的配置:
答:kafka中有一些关于可靠性配置的参数,
request.required.acks:当producer向leadrt发送数据时,可以通过request.required.acks参数来设置数据可靠性的级别:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。