消息队列:RabbitMQ和Kafka

消息队列

2种模式

  1. 点对点:consumer主动对queue监控,检查是否收到消息
  2. 订阅模式:Queue主动推送,consumer收到消息后决定是否去Queue里pull(类似微信公众号的文章推送)

优点:

  1. 解耦(通过中间件通信)
  2. 冗余:可做缓存
  3. 扩展性
  4. 顺序保证
  5. 异步通信:consumer即使down掉,消息还是保存在Queue,等consumer恢复会自动处理消息

RabbitMQ


关于Broker里的Exchange不可以直接将消息发给Queue,必须由他进行过滤,
Exchange 的四种模式:

 1. direct 模式 : 直接将消息转发到消息的 routing key 所指定的消息队列中,match不到直接丢弃
 2. fanout 模式:常用的发布/订阅模式,类似公众号推送文章,每个queue都可以处理
 3. topic模式:把收到的消息转发到所有关心 routing-key 的 queue 上,可以模糊匹配,匹配不到直接丢弃
 4. header模式:他根据消息 header 中的 “x-match” 属性匹配已经绑定的消息队列

Queue与consumer:
push模式:消费者定期主动去Queue监控是否由message
消费完之后,Queue中不存储任何消息    

Kafka

定义:分布式的消息队列

集群:每个集群都是kafka实例,每个实例叫broker,依赖于zookeeper,多个集群直接可做备份,consumer 消费的是leader topic,数据保存在topic里

配置文件位置:/etc/config/server.properties

  1. 修改broker.id
  2. 指定收到数据的位置(在指定位置可以找到创建的topic,在topic里看到000000123.index索引文件和00000123.logshou到的数据)
  3. 修改集群zookeeper

consumer依赖zookeeper保存meta数据

2个consumer可以同时消费同一个topic里的消息,zookeeper里保存consumer消费进度

  • 启动:

在bin目录下可以看到

命令:bin/kafka-server-start.sh -daemon config/server.properties

-daemon:守护进程,可以在后台运行,如果不加-daemon看到的是阻塞进程,关闭connection后Kafka停止运行

  • 停止

命令:bin/kafka-server-stop.sh 后面不需要加配置文件,加了也可以

  • 查看

查看是Kafka否运行命令:jps 

topic

查看topics命令:bin/kafka-topics.sh --zookeeper 10.1.1.1:2181 --list

创建topic命令:bin/kafka-topics.sh --create  --zookeeper 10.1.1.1:2181 --topic one --partition 2 --replication-factor 2(副本数)

PS : 此时,如果有3个集群,会在一个broker里存在一个one-0,第二个broker里存在one-1,第三个里one-1和one-0,整个集群2个one-0和one-1, 副本数不可以超过集群数

删除topic命令:bin/kafka-topics.sh --delete --zookeeper 10.1.1.1:2181 --topic one

log位置:server.log

producer

绑定topic命令:bin/kafka-console-producer.sh --broker-list 10.1.1.1:9092 --topic one

> 在此处输入要放入topic里的message

consumer

绑定topic命令:bin/kafka-console-consumer.sh --zookeeper 10.1.1.1:9092 --topic one

PS:当消息被consumer消费后在log中会生成诸多类似consumer-offset-01的偏移量log文件,若多个consumer同时消费一个topic,是按轮询偏移量的方式消费,由zookeeper进行管理

zookeeper

作用:维护一个集群,防止单机故障,同步消息,集群种的leader是由zookeeper决定,/data/version-2中存储的是zookeeper的数据

 

Kafka API

异步:2个线程,一个主线程,一个send线程

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值