消息系统

一、分类

  1. Peer to Peer:点对点模式。消息只能被一个消费者消费,消费者之间是竞争关系
  2. Publish-Subscribe:发布订阅模式。消息不会被某个消费者取走,而是被所有的消费者共享

二、作用

  1. 解耦。避免了消费者和生产者之间的耦合
  2. 消峰限流。能够有效的降低消费者的负载量
  3. 持久化存储

简介

一、概述

  1. Kafka是发布订阅模式的消息队列
  2. Kafka是由LinkedIn(领英)公司开发后来贡献给了Apache的消息队列
  3. Kafka的特征:
    a. 发布和订阅消息流
    b. 在存储消息流的时候要提供容错机制
    c. 当数据流出现的时候能够及时处理
  4. Kafka的应用场景:
    a. 能够在系统或者应用之间构建可靠的数据传输的实时流管道
    b. 能够构建一个转化或者应对数据流的实时流应用
  5. Kafka是利用了Scala语言构建的,Scala天然支持并发和吞吐,保证Kafka的并发量和吞吐量是比较高的,实际过程中,Kafka的吞吐量是在60~80M/s - Kafka底层采用了零拷贝的技术

二、基本概念

  1. broker:
    a. 就表示Kafka中的节点
    b. 每一个broker都需要给一个编号,这个编号只要不相同的就可以
  2. topic:
    a. 作用是用于对数据进行分类的
    b. 在Kafka中,每一条数据都要发送到一个指定主题中
    c. 每一个主题对应一个到多个partition
  3. partition:
    a. 每一个partition对应一个目录
    b. 如果有多个Kafka节点,分区会平均分到每一个节点上

特点

  1. 高吞吐率:在廉价的商用机器上单机可支持100W条/秒消息
  2. 消息持久化:所有的消息都会存储在磁盘上,不会产生消息的丢失
  3. 支持完全分布式
  4. 同时满足适应在线流处理和离线批处理

三、指令

指令 解释
sh kafka-server-start.sh …/config/server.properties 开启Kafka
sh kafka-topics.sh --create --zookeeper hadoop01:2181 --replication-factor 1 --partitions 1 --topic video 创建主题

命令 作用
sh kafka-topics.sh --create --zookeeper hbase01:2181 --replication-factor 1 --partitions 1 --topic englishbook 创建主题
在创建的时候,副本数量要小于等于节点数量
sh kafka-topics.sh --list --zookeeper hbase01:2181 查看所有的topic
sh kafka-console-producer.sh --broker-list hbase01:9092 --topic englishbook 启动生产者
sh kafka-console-consumer.sh --zookeeper hbase01:2181 --topic englishbook --from-beginning 启动消费者
sh kafka-topics.sh --delete --zookeeper hbase01:2181 --topic englishbook 删除topic
sh kafka-topics.sh --describe --zookeeper hbase01:2181 --topic englishbook 描述topic的信息

kafka基本配置

  1. 下载Kafka的安装包
  2. 解压安装包
    tar -xvf kafka_2.10-0.10.0.1.tgz
  3. 进入安装目录
    cd kafka_2.10-0.10.0.1
  4. 进入config目录下
    cd cofig
  5. 编辑server.properties
    vim server.properties
    修改

这个值要求唯一

  1. broker.id=0

指定日志文件的位置

  1. log.dirs=/home/software/kafka_2.10-0.10.0.1/logs

指定Zookeeper的连接地址

  1. 启动Zookeeper
  2. 进入Kafka的bin目录下来启动Kafka
    sh kafka-server-start.sh …/config/server.properties