kafka是不是可靠的?怎么做到kafka可靠,能不能从参数原理进行介绍
kafka是什么?
Kafka是一个分布式、高吞吐,可分区的,可复制的基于日志提交的发布-订阅消息系统.由于支持高 吞吐量,可扩展而被广泛使用。
kafka的定位是什么?
消息系统:
存储系统:
流式处理平台:
消息队列有哪些好处?
为什么选择kafka?
通过kafka可以解决:
- 消息的重复消费,处理不同业务,传统消息队列只能对消息消费一次
- 消息短暂保存
kafka的特点是什么?
- 高吞吐量、低延迟:消费组,多topic,多分区
- 可扩展性:分布式的
- 持久性、可靠性:可以把数据存储到磁盘,支持数据备份
- 容错性:允许集群中节点失败
- 高并发:可以支持上万个客户端同时读写
kafka的核心架构
1.分区:
如果没有设置的话,默认一个主题就是一个分区,一般我们创建主题的时候就可以指定分区的个数。在磁盘上体现为一个目录。
2.Topic(主题):
单个主题可能分布在多个机器上。
3.ISR:
ISR(in sync replica).同步副本集合,
我们在集群上有多个副本,有的副本是100%数据,而有的副本可能不是完全同步,我们把完全同步的数据副本放置在一个ISR列表中,用于做leader的备选.
4.replica(副本):
副本的角色有leader和follower.
P0这个分区有:a,b,c三个副本
如果A副本是:leader partion
那么b,c就是:follower
5.broker
broker就是kafka的服务器的统称,而borker里面是有一个主节点的主节点名称叫做:controller.
6.zookeeper
新的topic,新的broker,新的分区,都是注册在zk的临时目录。主broker会监听zk的目录,一旦新增或减少,都会感知到。 不一定是所有的broker都感知到,有一部分coordinator broker感知到变化,然后在通知其他的broker.
7.kafka和zookeeper如何配合工作
所有的broker在启动的时候都会往zookeeper进行注册,目的就是选举出一个controller
leader是如何选举出来的?
leader是从ISR列表中的顺序选出,谁位于ISR列表的第一个,谁就是leader
kafka的源码编译过程(后面几个系列我们要做源码的讲解,这个属于准备工作)
kafka的源码编译
注意事项:
idea下面:需要改下kafka的启动参数,增加config/server.properties。
kafka常用命令
1.启动zookeeper 服务:
执行命令:zookeeper-server-start /usr/local/etc/kafka/zookeeper.properties &
2.启动Kafka服务:
执行命令:kafka-server-start /usr/local/etc/kafka/server.properties &
3.创建topic命令:
kafka-topics --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic hello
4.查看已有主题:
kafka-topics --list --bootstrap-server localhost:9092
5.创建生产者(输入内容生产消息由消费者获取)
执行命令(新开终端):kafka-console-producer --topic hello --broker-list localhost:9092
6.创建消费者(读取生产者生产的消息内容)
执行命令(新开终端):kafka-console-consumer --bootstrap-server localhost:9092 -topic hello。