kafka→分布式消息队列

一、 kafka 简介 

1.消息队列 

  • Message Queue 消息传送系统提供传送服务。消息传送依赖于大量支持 组件,这些组件负责处理连接服务、消息的路由和传送、持久性、安全 性以及日志记录。消息服务器可以使用一个或多个代理实例
  • 可以将短时间高并发产生的事务消息存储在消息队列中,从而削平高峰 期的并发事务,改善网站系统的性能
  • 合理地使用消息队列,可以有效地抵御促销活动刚开始就开始大量涌入 的订单对系统造成的冲击
  • 排序保证:即,满足队列的 FIFO,先入先出策略
  • 异步通信:很多场景下,不会立即处理消息,可以在 MQ 中存储 message, 并在某一时刻再进行处理 

2. 消息队列分类 

  • 点对点:消息生产者生产消息发送到 queue 中,然后消息消费者从 queue 中取出并且消费消息。消息被消费以后,queue 中不再有存储,所以消 息消费者不可能消费到已经被消费的消息。Queue 支持存在多个消费者, 但是对一个消息而言,只会有一个消费者可以消费
  • 发布/订阅:消息生产者(发布)将消息发布到 topic 中,同时有多个消 息消费者(订阅)消费该消息。和点对点方式不同,发布到 topic 的消 息会被所有订阅者消费 

3. kafka 是什么? 

  • 最初由 LinkedIn 公司开发,使用 Scala 语言编写,之后成为 Apache 项目的一部分。
  • 是一个分布式的,可划分的,多订阅者,冗余备份的持久性的服务。
  • 同时为发布和订阅提供高吞吐量。每秒可以生产约 25 万消息(50 MB), 每秒处理 55 万消息(110 MB)。 

4. kafka 的优点? 

  • 降低系统组网复杂度。
  • 降低编程复杂度,各个子系统不再是相互协商接口,各个子系统类似插
  • 口插在插座上,Kafka 承担高速数据总线的作用。
  • 分布式系统,易于向外扩展。所有的 producer、broker 和 consumer 都 会有多个,均为分布式的。无需停机即可扩展机器。 可进行持久化操作。将消息持久化到磁盘,可以防止数据丢失。 

5. kafka 核心概念 

  • 消息的发布(publish)称做 producer
  • 消息的订阅(subscribe)称做 consumer
  • 中间的存储阵列称做 broker
  • 多个 broker 协同合作,producer、consumer 和 broker 三者之间通过 zookeeper 来协调请求和转发
  • 主题(Topic)
  1. 由用户定义并配置在 Kafka 服务器
  2. 用于建立生产者和消息者之间的订阅关系
  3. 生产者发送消息到指定的 Topic 下,消息者从这个 Topic 下消费消 息
  • 消息分区(Partition)
  1. 一个 Topic 下面会分为很多分区
  • 消费者分组(Group)
  1. 用于归组同类消费者
  • 偏移量(Offset) 

6. kafka 的应用场景 

  • 处理活跃的流式数据
  • 同时处理在线应用(消息)和离线应用(数据文件,日志)
  • 系统中的数据流转
  • 要结合 zookeeper 使用 

 kafka→分布式消息队列_第1张图片

kafka→分布式消息队列_第2张图片

7. 其他消息队列介绍 

  • RabbitMQ:支持的协议多,非常重量级消息队列,对路由(Routing),负 载均衡(Load balance)或者数据持久化都有很好的支持。
  • ZeroMQ:号称最快的消息队列系统,尤其针对大吞吐量的需求场景,擅 长的高级/复杂的队列,但是技术也复杂,并且只提供非持久性的队列。
  • ActiveMQ:Apache 下的一个子项,类似 ZeroMQ,能够以代理人和点对点 的技术实现队列。
  • Redis:是一个 key-Value 的 NOSql 数据库,但也支持 MQ 功能,数据量 较小,性能优于 RabbitMQ,数据超过 10K 就慢的无法忍受。 

8. kafka 版本下载 

  • http://kafka.apache.org/downloads
  • 下载最新版本稳定版的安装包,如下图所示。 

kafka→分布式消息队列_第3张图片


二、 kafka 搭建

1.准备工作

前提:zk集群正常启动,有JDK环境

2.安装

(1)上传并解压tar包到 /usr/lcaol

(2)创建要用的目录

kafka→分布式消息队列_第4张图片

(3)修改配置文件

kafka→分布式消息队列_第5张图片

kafka→分布式消息队列_第6张图片

 

 

 

(4)将配置好的kafka传到其他节点

 

(5)修改node02和node03节点的kafka的配置

kafka→分布式消息队列_第7张图片

kafka→分布式消息队列_第8张图片

 

 

(6)node01的bin目录下,运行启动

(7)后台运行kafka,1>/dev/null 2>&1 &是将命令产生的输入和错误,都输入到空设备,什么都不输出

(8)窗口占用,crtl+C停止服务,后台运行,bin目录下执行文件停止

(9)创建一个名为test的topic

(10)查看topic

(11)列出所有的topic

(12)在node01模拟生产者,测试生产消息

(13)在node02模拟消费者,测试消费

(14)node01生产者中输入信息,node02消费者中能收到信息,进行消费

 

kafka→分布式消息队列_第9张图片

kafka→分布式消息队列_第10张图片


三.核心概念

Producer:消息发布 publish消息

Consumer:消息的订阅,subsribe

Broker:中间的存储阵列

多个broker协同合作,Producer去生产数据,Consumer去消费数据,broker充当一个桥梁的作用,三者之间必须通过zookeeper来协调请求和转发

你可能感兴趣的:(区块链)