Kafka
Apache Kafka是一个开源的分部式消息队列(生产者消费者模式),是由scala语言编写的,类似于JMS,是基于JMS标准实现的。
Apache kafka的基本架构
Kafka Cluster:由多个服务器组成。每个服务器单独的名字broker(掮客)。
Kafka broker:kafka集群中包含的服务器。
kafka Producer:消息生产者、发布消息到kafka集群的终端或服务。
kafka consumer:消息消费者、负责消费数据。
kafka Topic:主题,一类消息的名称。
kafka的基本使用
主要用来实现系统与系统之间信息传输,一般有两大角色,一个是生产者,一个是消费者。
实现方式:
(1)采用kafka自带的脚本来操作。
(2)使用相关的语言的API来进行操作。
使用脚本操作kafka
(1)创建一个topic
./kafka-topics.sh --create --zookeeper node01:2181 --replication-factor 1 --partitions 1 --topic user
(2)启动一个生产者
./kafka-console-producer.sh --broker-list node01:9092 --topic user
(3)启动一个消费者
./kafka-console-consumer.sh --bootstrap-server node01:9092 --topic user (获取最新数据)
./kafka-console-consumer.sh --bootstrap-server node01:9092 --from-beginning --topic user
(4)查看有哪些Topic
./kafka-topics.sh --list --zookeeper node01:2181(5)查看某一个具体的Topic的详细信息
./kafka-topics.sh --describe --topic user --zookeeper node01:2181
(6)删除topic
./kafka-topics.sh --delete --topic user --zookeeper node01:2181
分片机制:主要解决单台服务器存储容量有限的问题
副本机制:解决数据存储的高可用问题。
kafka的自动化脚本
startkafka.sh
cat /export/servers/kafka/slave | while read line
do
{
echo $line
ssh &line “source /etc/profile;nohup kafka-server-start.sh /export/servers/kafka/config/server/properties >/dev/null 2>&1 &”
}&
wait
done
stopkafka.sh
cat /export/servers/kafka/slave | while read line
do
{
echo $line
ssh $line "source /etc/profile; jps | grep kafka |cut -c 1-4 |xargs kill -s 9 "
}&
wait
done