|NO.Z.00045|——————————|BigDataEnd|——|Hadoop&kafka.V30|——|kafka.v30|kafkaAdminclient应用.v01|
一、KafkaAdminClient应用
### --- KafkaAdminClient应用说明
~~~ 除了使用Kafka的bin目录下的脚本工具来管理Kafka,
~~~ 还可以使用管理Kafka的API将某些管理查看的功能集成到系统中。
~~~ 在Kafka0.11.0.0版本之前,可以通过kafka-core包(Kafka的服务端,采用Scala编写)中的
~~~ AdminClient和AdminUtils来实现部分的集群管理操作。
~~~ Kafka0.11.0.0之后,又多了一个AdminClient,
~~~ 在kafka-client包下,一个抽象类,具体的实现是org.apache.kafka.clients.admin.KafkaAdminClient。
### --- 功能与原理介绍
~~~ # Kafka官网:
~~~ The AdminClient API supports managing and inspecting topics, brokers, acls, and other Kafka objects。
### --- KafkaAdminClient包含了一下几种功能(以Kafka1.0.2版本为准):
~~~ # 创建主题:
createTopics(final Collection<NewTopic> newTopics, final CreateTopicsOptions options)
~~~ # 删除主题:
deleteTopics(final Collection<String> topicNames, DeleteTopicsOptions options)
~~~ # 列出所有主题:
listTopics(final ListTopicsOptions options)
~~~ # 查询主题:
describeTopics(final Collection<String> topicNames, DescribeTopicsOptions options)
~~~ # 查询集群信息:
describeCluster(DescribeClusterOptions options)
~~~ # 查询配置信息:
describeConfigs(Collection<ConfigResource> configResources, final DescribeConfigsOptions options)
~~~ # 修改配置信息:
alterConfigs(Map<ConfigResource, Config> configs, final AlterConfigsOptions options)
~~~ # 修改副本的日志目录
alterReplicaLogDirs(Map<TopicPartitionReplica, String> replicaAssignment, final AlterReplicaLogDirsOptions options)
~~~ # 查询节点的日志目录信息:
describeLogDirs(Collection<Integer> brokers, DescribeLogDirsOptions options)
~~~ # 查询副本的日志目录信息:
describeReplicaLogDirs(Collection<TopicPartitionReplica> replicas, DescribeReplicaLogDirsOptions options)
~~~ # 增加分区:
createPartitions(Map<String, NewPartitions> newPartitions, final CreatePartitionsOptions options)
二、其内部原理是使用Kafka自定义的一套二进制协议来实现,详细可以参见Kafka协议。用到的参数:
属性 | 说明 | 重要性 |
bootstrap.servers | 向Kafka集群建立初始连接用到的host/port列表。 客户端会使用这里列出的所有服务器进行集群其他服务器的发现, 而不管是否指定了哪个服务器用作引导。 这个列表仅影响用来发现集群所有服务器的初始主机。 字符串形式:host1:port1,host2:port2,...由于这组服务器仅用于建立初始链接, 然后发现集群中的所有服务器,因此没有必要将集群中的所有地址写在这里。 一般最好两台,以防其中一台宕掉。 |
high |
client.id | 生产者发送请求的时候传递给broker的id字符串。 用于在broker的请求日志中追踪什么应用发送了什么消息。 一般该id是跟业务有关的字符串。 |
medium |
connections.max.idle.ms | 当连接空闲时间达到这个值,就关闭连接。 long型数据,默认:300000 |
medium |
receive.buffer.bytes | TCP接收缓存(SO_RCVBUF),如果设置为-1,则使用操作系统默认的值。 int类型值,默认65536,可选值:[-1,...] |
medium |
request.timeout.ms | 客户端等待服务端响应的最大时间。 如果该时间超时,则客户端要么重新发起请求,要么如果重试耗尽,请求失败。 int类型值,默认:120000 |
medium |
security.protocol | 跟broker通信的协议: PLAINTEXT, SSL,SASL_PLAINTEXT, SASL_SSL.string类型值, 默认:PLAINTEXT |
medium |
send.buffer.bytes | 用于TCP发送数据时使用的缓冲大小(SO_SNDBUF), -1表示使用OS默认的缓冲区大小。 int类型值,默认值:131072 |
medium |
reconnect.backoff.max.ms | 对于每个连续的连接失败,每台主机的退避将成倍增加,直至达到此最大值。 在计算退避增量之后,添加20%的随机抖动以避免连接风暴。 long型值,默认1000,可选值:[0,...] |
low |
reconnect.backoff.ms | 重新连接主机的等待时间。避免了重连的密集循环。 该等待时间应用于该客户端到broker的所有连接。 long型值,默认:50 |
low |
retries | The maximum number of times to retry a call before failing it.重试的次数, 达到此值,失败。int类型值,默认5。 |
low |
retry.backoff.ms | 在发生失败的时候如果需要重试则该配置表示客户端等待多长时间再发起重试。 该时间的存在避免了密集循环。 long型值,默认值:100。 |
low |
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
分类:
bdv013-kafka
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通