1.消息队列

相关概念:消息队列中间件是分布式系统中非常重要的中间件,主要解决 应用耦合异步消息流量削峰 等问题。实现 高性能高可用可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。

使用场景如:

  • 异步处理: 如用户注册后,发送注册邮件,再发送注册短信。
  • 应用解耦: 如用户下单后,订单系统需要通知库存系统。
  • 流量削峰:如秒杀活动,一般会因为流量过大,导致流量暴增。
  • 日志处理:解决大量日志传输问题,日志采集客户端,负责日志采集,写入消息队列。消息队列复制日志后续处理转发。
  • 消息通讯:

目前生产环境使用较多的消息队列有:activeMQ、rabbitMQ、zeroMQ、Kafka、metaMQ、rocketMQ等。

2.了解kafka

kafka是一种高吞吐量的分布式发布订阅消息系统,他可以处理消费者规模较大网站中所有动作流数据。官网地址:http://kafka.apache.org/http://kafka.apache.org/

优势:高吞吐量,非常普通的应将kafka也可以支持每秒数百万的消息。 支持通过kafka服务器和消费机集群来区分消息。支持hadoop并行数据加载。

关键概念:

  • broker: kafka集群中的一台或多台服务器统称broker。
  • Topic:  kafka处理的消息源(feeds of messages)的不同分类。
  • partition:Topic物理机上的分组,一个topic可分为多个partition,每个partition是一个有序的队列。partition中的每条消息都会被分配一个有序的id(offset)。
  • replication-factor:用来设置topic的副本数每个主题可以有多个副本,副本位于集群中不同的broker上,也就是说副本的数量不能超过broker的数量,否则创建主题时会失败。
  • offset:每个partition都由一系列有序的、不可变的消息组成,这些消息被连续的追加到partition中。partition中的每个消息都有一个连续的序列号叫做offset,用于partition唯一标识一条消息。
  • Message :消息,是通信的基本单位。每个producer可以向一个topic(主题)发布一些消息。
  • Producers:消息和数据的生产者,向kafka的一个topic发布消息的过程叫producers。
  • consumers:消息和数据消费者,订阅topic并处理其发布的消息的过程叫做consumers。

3.安装kafka

我们直接去官网下载,解压。

$ wget http://mirrors.shu.edu.cn/apache/kafka/2.0.0/kafka_2.11-2.0.0.tgz
$ tar -zxvf kafka_2.11-2.0.0.tgz

4.配置启动

  a. 启动zookeeper  

#启动zookeeper 指定 zookeeper 配置文件
./bin/zookeeper-server-start.sh ./config/zookeeper.properties 

b. 启动kafka

#打开kafka配置文件,开启监听端口
$ vim server.properties

listeners=PLAINTEXT://localhost:9092

#启动kafka 服务
$ ./bin/kafka-server-start.sh ./config/server.properties

注意 kafka基于zookeeper,必须先启动zookeeper ,再启动kafka

c.启动消费者

$ ./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092  --topic test --from-beginning

d.启动生产者

$ ./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test

整体效果如下图,窗口上是我启动的消费窗口 ,窗口下是我启动的生产者窗口:

Kafka可视化Web界面管理工具CMAK:

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐