【2019春招准备:105.Kafka】

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33907408/article/details/85202666

1. JMS

Jms(java message service) : java消息服务
两个应用程序之间需要通信,转件的转发系统就是jms,解除2个程序的耦合

有两种通信模式:

1.1 点对点:point-to-point message domain

在这里插入图片描述

1.2 发布/订阅模型 publish-subscribe message domain

不能主动拉取数据,直接发送给订阅的消费者
在这里插入图片描述

1.3 jms编程模型

https://www.cnblogs.com/jaycekon/p/6220200.html
在这里插入图片描述

1.4 常见的类JMS消息服务器

ActiveMQ(apache)
Metamorphosis
RocketMQ
RabbitMQ

2. 消息队列

在日益发展的服务类型中,譬如注册用户这种服务,它可能解耦成好几种独立的服务(账号验证,邮箱验证码,手机短信码等)。它们作为消费者,等待用户输入数据,在前台数据提交之后会经过分解并发送到各个服务所在的url,分发的那个角色就相当于生产者。消费者在获取数据时候有可能一次不能处理完,那么它们各自有一个请求队列,那就是内存缓冲区了。做这项工作的框架叫做消息队列。

在这里插入图片描述
消息生产之后并不关心谁来消费,消费者也不关心消息是谁生产的

3. kafka

不单单是一个消息队列,也是一个分布式流处理平台——from官网doc
A distributed streaming platform
相当快,扩展性强
在这里插入图片描述
类JMS,结合了点对点和发布订阅模式(多对多,消费者可以主动拉取数据)

  • 数据分类 destination topic(每个主题有自己的数据管理进程)
  • 数据在集群cluster上有副本(类似于hdfs)

producer consumer broker(kafka) topic(tag)
每一条记录(record)都由key-value-timestamp构成
对于每一个主题topic,都维护一个单独的日志队列(partition)
在这里插入图片描述

单个节点单个broker

扫描二维码关注公众号,回复: 4703639 查看本文章

【quickstart操作】http://kafka.apache.org/quickstart

KAFKA_HOME/config/server.properties:
broker.id=0 每一个broker的编号不能冲突
listeners=PLAINTEXT://:9092
host.name=ziboris3
(需要修改下)log.dirs=/home/hadoop/ZZBfiles/kafkaFiles/kafka-logs
zookeeper.connect=ziboris3:2181

启动zookeeper的server
启动kafka:bin/kafka-server-start.sh config/server.properties

  • 创建topic(需要指定zookeeper的地址,2181)指定zk
    bin/kafka-topics.sh --create --zookeeper ziboris3:2181 --replication-factor 1 --partitions 1 --topic hello_topic
    ====>Created topic “hello_topic”.
  • 查看zookeeper上面挂了多少个topic:bin/kafka-topics.sh --list --zookeeper ziboris3:2181
    ====>hello_topic
  • 生产发送消息:(控制台producer为例,还有其他producer)(9092是serverv配置的监听的端口)(因为是控制台的,是阻塞式的)指定broker:bin/kafka-console-producer.sh --broker-list ziboris3:9092 --topic hello_topic
  • 消费者消费消息(from beginning每次重新打开consumer都能获取所有执勤啊producer发送的数据)指定zk:bin/kafka-console-consumer.sh --zookeeper ziboris3:2181 --topic hello_topic --from-beginning
  • describe

单个节点多个broker

cp config/server.properties config/server-1.properties(brokerid=1 listener9093 tmp.dirs)
cp config/server.properties config/server-2.properties(brokerid=2 listener9094 tmp.dirs)
cp config/server.properties config/server-3.properties(brokerid=3 listener9095 tmp.dirs)
daemon模式全部启动起来
describe可以查看Isr活的kafka broker

  • 创建话题:bin/kafka-topics.sh --create --zookeeper ziboris3:2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic ====》created topic…
  • 发送消息:bin/kafka-console-producer.sh --broker-list ziboris3:9093,ziboris3:9094,ziboris3:9095 --topic my-replicated-topic
  • 消费消息:bin/kafka-console-consumer.sh --zookeeper ziboris3:2181 --topic my-replicated-topic
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_33907408/article/details/85202666