kafka是不是可靠的?怎么做到kafka可靠,能不能从参数原理进行介绍

kafka是什么?

Kafka是一个分布式、高吞吐,可分区的,可复制的基于日志提交的发布-订阅消息系统.由于支持高 吞吐量,可扩展而被广泛使用。

kafka的定位是什么?

kafka 跟业务相关的指标_bootstrap

消息系统:

存储系统:

流式处理平台:

消息队列有哪些好处?

kafka 跟业务相关的指标_bootstrap_02

为什么选择kafka?

通过kafka可以解决:

  1. 消息的重复消费,处理不同业务,传统消息队列只能对消息消费一次
  2. 消息短暂保存

kafka的特点是什么?

  1. 高吞吐量、低延迟:消费组,多topic,多分区
  2. 可扩展性:分布式的
  3. 持久性、可靠性:可以把数据存储到磁盘,支持数据备份
  4. 容错性:允许集群中节点失败
  5. 高并发:可以支持上万个客户端同时读写

kafka的核心架构

kafka 跟业务相关的指标_kafka 跟业务相关的指标_03

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 跟业务相关的指标_bootstrap_04

kafka 跟业务相关的指标_kafka_05

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。