【2019春招准备:105.Kafka】
1. JMS
有两种通信模式:
1.1 点对点:point-to-point message domain
1.2 发布/订阅模型 publish-subscribe message domain
不能主动拉取数据,直接发送给订阅的消费者
1.3 jms编程模型
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
【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