一、概念
Kafka是由Apache软件基金会开发的一个开源的分布式流处理平台,由LinkedIn公司开发,使用 Scala和Java编写。Kafka是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),它可以处理消费者在网站中的所有动作流数据。
-
Kafka在一个或多个可以跨越多个数据中心的服务器上作为集群运行。
-
Kafka集群将记录流存储在称为topic的类别中。
-
每个记录由一个键,一个值和一个时间戳组成。
2、流平台具有三个关键功能:
-
发布和订阅记录流,类似于消息队列或企业消息传递系统。
-
以容错的持久方式存储记录流。
-
处理记录流。
3、解决什么问题
Kafka主要设计目标如下:
-
以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能。
-
高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输。
-
支持Kafka Server间的消息分区,及分布式消费,同时保证每个partition内的消息顺序传输。
-
同时支持离线数据处理和实时数据处理。
-
Scale out:支持在线水平扩展
Kafka通常用于两大类应用程序:
-
建立实时流数据管道,以可靠地在系统或应用程序之间获取数据
-
构建实时流应用程序以转换或响应数据流
4、在Kafka中,客户端和服务器之间的通信是通过简单,高性能,与语言无关的TCP协议完成的。该协议已版本化,并与旧版本保持向后兼容性。提供了Java客户端,但是客户端支持多种语言。
二、安装部署kafka
下载地址:http://mirrors.hust.edu.cn/apache/kafka/2.0.0/kafka_2.11-2.0.0.tgz
kafka最为重要三个配置依次为:broker.id、log.dir、zookeeper.connect,kafka server端config/server.properties参数
vim config/server.properties
·公布访问地址和端口
advertised.listeners=PLAINTEXT://192.168.3.100:9092
配置zookeeper
默认localhost:2181,如果是其他的zookeeper改为相应地址
zookeeper.connect=localhost:2181
启动kafka
[root@node1 bin]# ./kafka-server-start.sh ../config/server.properties
注:此方法为前台启动,若需要后台启动,则在上面命令的最后加上 &
检测是否启动 netstat -tunlp | egrep "(2181|9092)"
测试发送信息和消费消息
创建主题
[root@node1 bin]# ./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
启动生产者
[root@node1 bin]#./kafka-console-producer.sh --broker-list localhost:9092 --topic test
启动消费者
[root@node1 bin]#./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
生产者发布消息
[root@node1 bin]# ./kafka-console-producer.sh --broker-list localhost:9092 --topic test
>is successfully
>good night
>
消费者接收到消息
[root@node1 bin]# ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
hallo
;
你好
is successfully
good night
注:消费者中会出现一些历史消息
由于启动添加了--from-beginning参数,所以会把过往消息也显示,省略该参数,即可不显示历史消息就!