上海网页设计公司山东济南兴田德润简介,优化网站加载速度,昆明市哪里有网站建设,深圳做网站推广的公司kafka是什么#xff1f;
Kafka最初采用Scala语言开发的一个多分区、多副本并且基于ZooKeeper协调的分布式消息系统。目前Kafka已经定位为一个分布式流式处理平台#xff0c;它的特性有高吞吐、可持久化、可水平扩展、支持流处理。 Apache Kafka是一个分布式的发布-订阅消息系…kafka是什么
Kafka最初采用Scala语言开发的一个多分区、多副本并且基于ZooKeeper协调的分布式消息系统。目前Kafka已经定位为一个分布式流式处理平台它的特性有高吞吐、可持久化、可水平扩展、支持流处理。 Apache Kafka是一个分布式的发布-订阅消息系统能够支撑海量数据的数据传递。在离线和实时的消 息处理业务系统中Kafka都有广泛的应用。Kafka将消息持久化到磁盘中并对消息创建了备份保证了数据的安全。Kafka在保证了较高的处理速度的同时又能保证数据处理的低延迟和数据的零丢失。
kafka的特点
高吞吐量、低延迟。每个主题可以分为多个分区消费组对分区进行消费操作。 高扩展性kafka集群支持热扩展。 持久性、可靠性消息被持久化到本地磁盘并且支持数据备份防止数据丢失。 容错性允许集群中节点失败若副本数量为n则允许n- 1个节点失败 高并发支持数千个客户端同时读写
kafka的技术优点
可伸缩性kafka在运行期间可以轻松地添加和删除代理而不会宕机。可以扩展主题的分区。由于分区无法扩展到多个代理所以容量受磁盘空间限制。能够增加分区和代理的数量意味着单个主题可以存储的数量是无限制的。主题和分区可以跨代理吗 容错性和可靠性kafka的设计方式使某个代理的故障能够被集群找那个的其他代理检测到。由于每个主题都可以在多个代理上复制所以集群可以在不中断服务的情况下从此类故障中恢复并继续运行。 吞吐量能够以超快的速度有效的存储和检索数据。
kafka内的术语
Producer
生产者将消息发布到Kafka的主题topic中。broker接收到生产者发送的消息后broker将该消息追加到当前用于追加数据的segment文件中。生产者发送的消息存储到一个partition 中生产者也可以指定数据存储的partition。
Consumer
消费者可以从broker中读取数据。消费者可以消费多个topic中的数据。
Topic
使用一个类别属性来划分数据的所属类划分数据的这个类称为topic。如果把Kafka看做为一个数据库topic可以理解为数据库中的一张表topic的名字即为表名。
Partition
topic中的数据分割为一个或多个partition。每个topic至少有一个partition。每个partition中的数据使用多个segment文件存储。partition中的数据是有序的partition间的数据丢失了数据的顺序。在需要严格保证消息消费顺序的场景下需要将partition数目设为1。
Partition offset
每条消息都有一个当前Partition下唯一的64字节的offset它指明了这条消息的起始位置。
Replicas of partition
副本是一个分区的备份。副本不会被消费者消费副本只用于防止数据丢失即消费者不从为follower的partition中消费数据而是从为leader的partition中读取数据。副本之间是一主多从的关系。
Broker
Kafka 集群包含一个或多个服务器服务器节点称为broker。broker存储topic的数据。如果某topic有N个partition集群有N个broker那么每个broker存储该topic的一个partition。设置brocker的数量大于分区的数量。
Leader
一个分区有多个副本有且仅有一个副本是leader其他是follower
Follower
Follower跟随Leader所有写请求都通过Leader路由数据变更会广播给所有FollowerFollower与Leader保持数据同步。如果Leader失效则从Follower中选举出一个新的Leader。当Follower与Leader挂掉、卡住或者同步太慢leader会把这个follower从“in sync replicas”ISR列表中删除重新创建一个Follower。
Zookeeper
Zookeeper负责维护和协调broker。当Kafka系统中新增了broker或者某个broker发生故障失效时由ZooKeeper通知生产者和消费者。生产者和消费者依据Zookeeper的broker状态信息与broker协调数据的发布和订阅任务。
AR(Assigned Replicas)
分区中所有的副本统称为AR。
ISR(In-Sync Replicas)
所有与Leader部分保持一定程度的副包括Leader副本在内本组成ISR
OSR(Out-of-Sync-Replicas)
与Leader副本同步滞后过多的副本。
HW(High Watermark)
高水位标识了一个特定的offset消费者只能拉取到这个offset之前的消息。
LEO(Log End Offset)
即日志末端位移(log end offset)记录了该副本底层日志(log)中下一条消息的位移值。注意是下一条消息也就是说如果LEO10那么表示该副本保存了10条消息位移值范围是[0, 9]。
kafka的安装步骤
前提条件jdk、zookeeper、kafka 安装jdk 1、所有文件放入/opt/java,然后tar -zxvf命令解压 2、配置环境变量/etc/profile文件
export JAVA_HOME/opt/java/jdk-12.0.1
export JRE_HOME$JAVA_HOME/jre
export CLASSPATH.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH.:$JAVA_HOME/bin:$JRE_HOME/bin:$KE_HOME/bin:${MAVEN_HOME}/bin:$PATH3、测试jdk是否安装成功java -version命令查看 安装zookeeper: 1.conf目录下修改配置文件,配置文件默认名zoo_sample.cfg cp命令复制配置文件命名为zoo.cfg, 修改数据目录和日志目录 /opt/java/zookeeper-3.4.14 /opt/java/zookeeper-3.4.14 2.启动zookeeper [rootlocalhost zookeeper-3.4.14]# bin/zkServer.sh start 安装kafka 1、修改配置文件service.properties 修改日志/opt/java/kafka_2.12-2.2.1/log 2、启动kafkabin/kafka-server-start.sh config/server.properties 启动kafka后台运行bin/kafka-server-start.sh -daemon config/server.properties listenersPLAINTEXT://:9092去掉注释 log.dirs/opt/java/kafka_2.12-2.2.1/log新建日志目录并设置日志地址 zookeeper.connectlocalhost:2181打开zookeeper连接