Kafka学习(一)

Kafka学习笔记:
消息队列:
MQ分类:点对点(p2p) 、发布订阅(pub/Sub)
Kafa的概述:
Kafka是分布式的发布订阅消息系统。使用Scala语言编写的
特点:
高吞吐量:百万级的:生产和消费能力
持久性:中间存储比较持久
分布式:整体的健壮性
Kafka:主题、生产者、消费者
Broker:KafKa集群中的一个节点主要存储消息数据
Partition:Topic物理机上的分区,一个topic在broker分为1个或多个partition
无zookeeper无kafka

Kafak的使用:
安装:
去官网下载:Kafka安装包:
使用linux 安装kafka. 略
安装之后首先启动zookeeper.
/bin/zookeeper-server-start.sh /config/aookeeper.properties >> opt/logs/zookeeper-server-start.log
后台启动:
./bin/kafka-server-start.sh ./config/server.properties >>/Users/huyong/App/logs/kafka_run.log 2>&1&
可以使用jps(Java提供的查看java进程的工具查看当前环境中Java的进程的运行)
9230
9492
kafka默认保存数据是7天
product.properties:
1.自定义:partition
Producer也可以根据用户设置的算法来根据消息的key来计算输入那个partition:partitioner.class
2.异步或者同步发送:
配置项:producer.type
3.批量发送可以很有效的提高发送效率。
kafka producer 的异步发送模式运行进行批量发送,先将消息缓存到内存中,然后一次请求批量发送出去
具体配置queue.buffering.max.ms. queue.buffering.max.message默认值为5000和10000
consumner.propeties:
1.一个partition只能被各个消费者中组中的一个消费者消费者消费
2.同一个组内消费者消费的信息不同,不同组中的消费相同
3.一个partition能被多个消费者组消费
4.一个消费者可以消费多个partition
5.在多线程的情况下,一个线程相当于一个消费者
Kafka的操作:
Kafka的单位:message
创建:topic,在创建topic的时候需要指定这个topic下有多少个partition
Kafka的备份是一个partition为单位进行操作的,一个partition的副本数,一定是小于等于broker
对topic进行增删改查的操作:
增加:./bin/kafka-topics.sh --create --topic hello --zookeeper 127.0.0.1:2181 --partitions 2 --replication-factor 1
创建一个topic 名称为hello 连接的zookeeper为本地的2181端口。 这个topic中包含2个partition. 并且有2个副本
这里如果副本数大于broker 将会报这个错:
org.apache.kafka.common.errors.InvalidReplicationFactorException: Replication factor: 2 larger than available brokers: 1
命令行中出现:Created topic “hello”.表示创建成功

	查询:查看有多少个topic         ./bin/kafka-topics.sh --list --zookeeper 127.0.0.1:2181
		查看某一个固定的topic     ./kafka-topics.sh --describe --zookeeper 127.0.0.1:2181 --topic hello
		Topic:hello	PartitionCount:2	ReplicationFactor:1	Configs:
				Topic: hello	Partition: 0	Leader: 0	  Replicas: 0	   Isr: 0
				Topic: hello	Partition: 1	Leader: 0	  Replicas: 0	   Isr: 0
			执行以上命令会出现这些信息:
				含义就是。topic 名为hello 的有2个partition。1个副本 没有配置信息
				Leader 是partition 的Leader。他的取值是broker 的id,谁是领导者就使用谁,另一个只作为备份使用
				Replicas :是partition 的总的副本broker ID的集合。例如:Replicas 0,1,2,3
				Isr:是partition 的可用的副本brokerid的集合。
	修改:
		修改只能修改是partition 的数量(只能增加)和一些配置文件
		./kafka-topics.sh --alter --zookeeper 127.0.0.1:2181 --topic hello --partitions 1 
		如果修改的时候将partitions 改小。会报如下错误:
		WARNING: If partitions are increased for a topic that has a key, the partition logic or ordering of the messages will be affected
			Error while executing topic command : The number of partitions for a topic can only be  increased.Topic hello currently has 2 partitions, 1 would not be an increase.
			ERROR org.apache.kafka.common.errors.InvalidPartitionsException: The number of partitions for a topic can only be increased. Topic hello currently has 2 partitions, 1 would not be an increase.
		因此partition的数量只能往大改

huyongdeMacBook-Pro:bin huyong$ ./kafka-topics.sh --alter --zookeeper 127.0.0.1:2181 --topic hello --partitions 3
WARNING: If partitions are increased for a topic that has a key, the partition logic or ordering of the messages will be affected
Adding partitions succeeded!
huyongdeMacBook-Pro:bin huyong$ ./kafka-topics.sh --describe --zookeeper 127.0.0.1:2181 --topic hello
Topic:hello PartitionCount:3 ReplicationFactor:1 Configs:
Topic: hello Partition: 0 Leader: 0 Replicas: 0 Isr: 0
Topic: hello Partition: 1 Leader: 0 Replicas: 0 Isr: 0
Topic: hello Partition: 2 Leader: 0 Replicas: 0 Isr: 0

	删除:

huyongdeMacBook-Pro:bin huyong$ ./kafka-topics.sh --delete --zookeeper 127.0.0.1:2181 --topic world
Topic world is marked for deletion.
Note: This will have no impact if delete.topic.enable is not set to true.
这里的删除不是真正的删除 知识标记为删除,
真正的删除:
将配置文件中的server.properties 中添加delete.topic.enable=true。然后执行删除命令 就会真正的删除
服务重启
ctrl+R 输入关键字 查找历史的脚步,如果不符合继续ctrl+R

生产消费者测试 :使用控制台进行交互
	./bin/kafka-console-producer.sh  --topic hello --broker-list 127.0.0.1:9092
消费者:
	— ./bin/kafka-console-consumer.sh --topic hello --zookeeper 127.0.0.1:2181(老版本的这个)
	./kafka-console-consumer.sh --topic hello --bootstrap-server 127.0.0.1:9092   —from-beginning 新版本的这个
消费者默认不是从头消费,而是从当前时间开始消费,如果想要从头开始消费 就需要设置参数:--from-beginning
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值