1,kafka是什么
kafka是由Apche软件基金开发的一个开源流处理平台,由Scala和java编写。kafka是一种高吞吐的分布式发布订阅消息系统,他可以处理消费者在网站中的所有动作流数据,这动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。对于像Hadoop一样的日志数据和离线分析系统,但又要求实处理的限制,这是一个可行的解决方案。kafka的目是通过Hadoop的并行加载机制来统一上和离线的消息处理,也是为了通过集群来提供实时的消息。
一个MQ需要哪些部分?生产,消费,消息类别,存储等等。
对于kafka而言,kafka服务就像是一个大的水池,不断的生产,存储、消费着各种类别的消息。那么kafka由何组成呢?
1、 Kafka服务
Topic:主题,Kafka处理的消息的不同分类。
Broker :消息代理,Kafka集群中的一个kafka服务节点称为一个broker ,主要存储消息数据。存在硬盘中。每个topic 都是有分区的。
Partition:Topic物理上的分组,一个topic 在broker 中被分为1个或者多个partition,分区在创建topic 的时候指定。
Message:消息,是通信的基本单位,每个消息都属于一个partition
2、 Kafka服务相关
Producer :消息和数据的生产者,向Kafka的一个topic 发布消息。
Consumer:消息和数据的消费者,定于topic 并处理其发布的消息。
Zookeeper:协调kafka的正常运行。
二、特点
1、高吞吐量:可以满足每秒百万级别消息的生产和消费——生产消费。QPS
2、持久性:有一套完善的消息存储机制,确保数据的高效安全的持久化——中间存储。
3、分布式:基于分布式的扩展和容错机制;Kafka的数据都会复制到几台服务器上。当某一台故障失效时,生产者和消费者转而使用其它的机器——整体健壮性。
三、怎么做
#启动kafka 服务
进入kafka的bin目录
./kafka-server-start.sh …/config/server.properties
#创建主题(4个分区,1个副本)
./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 4 --topic kftest
#查询集群描述
./kafka-topics.sh --describe --zookeeper localhost:2181
#启动消费者bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic kftest
#文件位置
#原理图
• Message消息:是通信的基本单位,每个producer 可以向一个topic(主题)发布一些消息。
•
Kafka中的Message是以topic为基本单位组织的,不同的topic之间是相互独立的。每个topic又可以分成几个不同的partition(
每个topic有几个partition 是在创建topic时指定的) ,每个partition 存储一部分Message。• partition 中的每条Message包含了三个属性:( offset 对应类型:long、 MessageSize
对应类型:int32、 data 是message的具体内容)