热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

kafka03kafka详解

kafka通过zk选举leader以及在消费组变化时进行负载均衡生产者使用push(推)模式将消息发布到broker消费者用pill(拉)模式从broker订阅发布消息主题(top

kafka03 kafka详解

  • kafka通过zk选举leader以及在消费组变化时进行负载均衡
  • 生产者使用push(推)模式将消息发布到broker
  • 消费者用pill(拉)模式从broker订阅发布消息

kafka03 kafka详解

主题( topic):

  • 消息在进入 kafka集群的时候,是以主題进行数据归納【一条消息必须属于某一个主题】。
  • 在 kafka集群中,可以有无数的主题
  • 从生产者的角度来说,他所操作的单元,一般情况下是以主题为单位
  • 从消者的角度来说,也所操作的单元,一般情况也是以主题为单位。
  • 生产者、消费者可以以主題更细单位来操作ー->(分区) 也是消息的分类。
  • 从 kafka的角度来说,没有限制生产者也没有限制消费者。
  • 生产者与消费者在处理数据的时候,必须要知道要操作的主題是哪一个
创建属于我们自己的主题
  • 一个 broker服务下,是否可以创建多个分区?
    可以, broker数与分区数没有关系。

  • 一个 broker服务下,是否可以创建多个复本因子?
    不可以。但报错

  • replication factor: 3 larger thanavailable brokers: 创建主题时,复本因为应该小于等于可用的broker数。

    katka-topics. sh --create --topic mytopic5 --zookeeper localhost: 2181 --partitions 3–replication-factor 1–config max message bytes=64000 --config flush messages=1

查看当前有哪些主题
kafka-topics. sh --describe--zookeeper localhost: 2181

结果

Topic: mytopic5 Partitioncount: 3 Replicationfactor: 1 Configs: max message bytes 64000, flush messages.1
Topic: mytopic5 Partition: 0 Leader: 0 Replicas: 0 Isr: 0
Topic: mytopic5 Partition: 1 Leader: 0 Replicas: 0 Isr: 0
Topic: mytopics Partition: 2 Leader: 0 Replicas: 0 Isr: 0

在 kafka中每一个分区会有一个编号:从0开始

  • leader: broker.id=0,因为在 kafka中如果有多个复本的话,就会存在leader与 follower的关系。表示当前这个复本为leader所在的 broker是哪一个。
  • Replicas:所有的复本列表0,1,2
  • Isr:可用列表数0,2

命令

可以只看主题名称: kafka- topics.sh-1st-- zookeeper localhost:2181
修改

kafka-topics. sh --zookeeper localhost: 2181--alter--topic mytopic5--partitions 40

修改增加配置参数
kafka-topics. sh - -zookeeper localhost: 2181–alter–topic mytopic4 --config flush messages=l
刚除配置参数

kafka-topics. sh --zookeeper localhost: 2181--alter --topic mytopic4 --delete-contig flush.messages

刚除

cafka-topics. sh --zookeeper localhost: 2181 --delete --topic mytopic4
Topic mytopic4 is marked for deletion

当执行删除命令之后, topic不是物理別除,而是一个标记删刚除的操作。只有重启kafka才会删除
mytopic4 -marked for deletion
标记删除之后的主题是否还可以继续
可以,不会影响

分区

上面图示
分区中的数据都有相应的编号,偏移量offset

  • 记录当前有多少记录数
  • 消费者知道自己消费到什么地方
  • 消费者可以自定义选择消费某一条消息(手动消费可以多次消费,自动消费不可以)

副本

kafka03 kafka详解

分区下的副本因子

创建副本因子的时候,副本困子数应该小于等于可用的 broker数。
副本因为操作的单位是分区为单位
当有多个副本数时, kafka并不是将多个副本同时对外提供读取和写入!
作用是让 kafka读取和写入数据时的高可
副本因子数是包含本身1同一个副本因子不能放在同一个 Broker中。
在有多个副本的情況下, kafka会为同一个分区下的分区,设定角色关系:一个1 eader和N个fo11ower
leader负责与外面(生产者、消贾者)的角色,进行读写处理。
如果某一个分区有三个副本因子。就算其中一个挂掉,那么只会在剩下的两个中,选择一个1 eader
但不会在其它的 broker中,另启一个副本【因为在另一台启动的话,存在数据传递。只要在主机之间有数据传递,就会长时间占用网络IO。但是 kafka是一个高吞吐量的消息系统,这种情況不允许发生】所在不会在另一个 broker中启动。
如果所有的副本都挂了!生产者如果生产的数据是指定分区的话,将写入不成功。
ISR:当前可用副本。
ack机制:确认机制

zookeeper

kafka03 kafka详解


推荐阅读
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • linux进阶50——无锁CAS
    1.概念比较并交换(compareandswap,CAS),是原⼦操作的⼀种,可⽤于在多线程编程中实现不被打断的数据交换操作࿰ ... [详细]
  • 负载均衡_Nginx反向代理动静分离负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第二部分
    nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解 ... [详细]
  • 目录1、将mysql数据导出到SQL文件中(数据库存在的情况)2、将现有的sql文件数据导入到数据库中(前提数据库存在) 3、利用Navicat导出SQL文件和导入SQL文件1)从 ... [详细]
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了Java集合库的使用方法,包括如何方便地重复使用集合以及下溯造型的应用。通过使用集合库,可以方便地取用各种集合,并将其插入到自己的程序中。为了使集合能够重复使用,Java提供了一种通用类型,即Object类型。通过添加指向集合的对象句柄,可以实现对集合的重复使用。然而,由于集合只能容纳Object类型,当向集合中添加对象句柄时,会丢失其身份或标识信息。为了恢复其本来面貌,可以使用下溯造型。本文还介绍了Java 1.2集合库的特点和优势。 ... [详细]
  • 在IDEA中运行CAS服务器的配置方法
    本文介绍了在IDEA中运行CAS服务器的配置方法,包括下载CAS模板Overlay Template、解压并添加项目、配置tomcat、运行CAS服务器等步骤。通过本文的指导,读者可以轻松在IDEA中进行CAS服务器的运行和配置。 ... [详细]
  • 浅析Mysql数据回滚错误的解决方法_PHP教程:MYSQL的事务处理主要有两种方法。1、用begin,rollback,commit来实现begin开始一个事务rollback事 ... [详细]
author-avatar
mobiledu2502912017
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有