概述

Apache Kafka是一个分布式发布-订阅消息系统和强大的队列,可以处理大量的数据,将消息从一个端点传递到另一个端点。Kafka适合离线和在线消息消费,Kafka消息保存在磁盘上,并在集群内复制以防止数据丢失。Kafka构建在Zookeeper同步服务之上。它最初由LinkedIn公司开发,之后成为Apache项目的一部分。Kafka的核心功能总结起来就是高性能的消息发送和高性能的消息消费。现在我们首先跑通一个Kafka的简单示例,切身感受一下Kafka消息是什么样子的

Kafka的几个好处:

1.可靠性:Kafka是分布式分区容错的

2.可扩展性:Kafka消息传递系统轻松缩放,无需停机。

3.耐用性:Kafka使用分布式提交日志。这意味着消息会尽可能快的保留在磁盘上,因此它是持久的。

4.性能:Kafka对于发布和订阅消息都具有高吞吐量,即使存储了大量的消息也能保持稳定的性能,Kafka非常快,并保证零停机和零数据丢失。

所以在大型分布式系统中都使用Kafka作为消息系统。

安装

Kafka官网的下载地址是 http://kafka.apache.org/downloads,在下载页面我们可以看到不同版本的Kafka的二进制代码压缩包的下载链接。最新的稳定版本是2.1.0(The current stable version is 2.1.0.)

官网提供两个二进制压缩包以供下载

[We build for multiple versions of Scala. This only matters if you are using Scala and you want a version built for the same Scala version you use. Otherwise any version should work (2.12 is recommended)].

上面两个文件中的2.11/2.12分别表示编译Kafka的Scala语言版本,后面的2.1.0是Kafka的版本。

下载完毕后,将解压后的目录放到你机器上的某个文件夹下即可!

$ wget http://mirrors.shu.edu.cn/apache/kafka/2.1.0/kafka_2.12-2.1.0.tgz
$ tar -zxvf kafka_2.-.tgz
$ cd kafka_2.-
$ ll
total
drwxr-xr-x  root root  Nov  : bin
drwxr-xr-x  root root  Nov  : config
drwxr-xr-x  root root  Jan  : libs
-rw-r--r--  root root  Nov  : LICENSE
-rw-r--r--  root root  Nov  : NOTICE
drwxr-xr-x  root root  Nov  : site-docs

(wget还挺好用,不用下载后再rz上传)

阿里云kafka配置

############ Server Basics ##########

# The id of the broker. This must be set to a unique integer for each broker.
broker.id=
port=
#阿里云内网地址
host.name=
#阿里云外网映射地址
advertised.host.name=

启动服务器

启动 zookeeper

Kafka依赖于Zookeeper,Zookeeper是为Kafka提供协调服务的工具!Kafka内置提供了一个Zookeeper服务器以及一组相关的管理脚本,我们直接使用这个内置的Zookeeper即可。

$ bin/zookeeper-server-start.sh config/zookeeper.properties......INFO binding to port 0.0.0.0/0.0.0.0:2181 (org.apache.zookeeper.server.NIOServerCnxnFactory)

最后的输出信息表明Zookeeper已经成功的在端口2181上启动了,此时不能关闭窗口,不然Zookeeper也会关闭,挺麻烦是不是!

我们可以使用后台启动的方式来启动Zookeeper!

$nohup bin/zookeeper-server-start.sh config/zookeeper.properties >> zk.out 2>&1 &
# 查看输出
$tail -f zk.out
$cat zk.out

唯一不好的地方就在于会额外生成一个zk.out文件!

启动 kafka server

$ bin/kafka-server-start.sh config/server.properties

...
INFO Awaiting socket connections on . (kafka.network.Acceptor)
...
INFO [KafkaServer id=] started (kafka.server.KafkaServer)

最后的输出信息标志着 server 启动成功了,上面那条信息说明 server 的监听端口是 9092,同样,窗口也不能关,不然Kakfa服务器也关闭了。

同样,我们以后台启动的方式来启动Kakfa Server

$nohup bin/kafka-server-start.sh config/server.properties >> kafka.out 2>&1 &

# 查看输出
$tail -f kafka.out
$cat kafka.out
Caused by: java.net.UnknownHostException: iZuf68tztea6l5ccdz7wemZ: iZuf68tztea6l5ccdz7wemZ: Name or service not known

解决方案

vi /etc/hosts
127.0.0.1 izwz920j4zsv1qvh2kt0efz

创建 topic

服务器启动后,我们需要创建一个主题(topic),用于消息的发送与接收。

下面将创建一个名为test-topic的topic,该topic只有一个分区(partition),且该partition也只有一个副本(replication)处理消息。

执行如下命令创建topic

$ bin/kafka-topics.sh  --topic test --partitions  --replication-factor 
# 输出信息
Created topic "test-topic".

这时topic就 创建成功了,接下来我们还使用这个命令来查看这个topic的状态

$ bin/kafka-topics.sh  --topic test-topic
# 输出信息
Topic:test-topic    PartitionCount:    ReplicationFactor:    Configs:
    Topic: test-topic    Partition:     Leader:     Replicas:     Isr: 

发送消息

kafka默认提供了脚本工具可以不断的接受标准输入并将他们发送到kafka的某个topic上面,用户在控制台终端下启动该命令,输入一行文本数据,然后该脚本将该行文本封装成一条kafka消息发送给指定的topic。打开新的终端,执行命令。

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

执行这个命令行之后就等待用户输入

>Hello Kafka
>This is my first Kafka Message  

用户可以不断的输入字符形成消息,每当按下回车键的时候该文本就会被发送。

然后就可以 ctrl+c 退出了。

消费消息

kafka提供了一对应的脚本用于消费某些topic下的消息并打印到标准输出。这对于我们测试调试消息消费就很方便了。打开新的终端。

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

执行之后我们看到了上一步中发送的两条消息

Hello Kafka
This is my first Kafka Message

参考:

http://www.54tianzhisheng.cn/2018/01/05/SpringBoot-Kafka/

Apache Kafka 快速入门的更多相关文章

  1. docker安装kafka快速入门

    docker安装kafka快速入门 1.安装zookeeper docker search zookeeperdocker pull zookeeperdocker run -d -v /home/s ...

  2. kafka快速入门(官方文档)

    第1步:下载代码 下载 1.0.0版本并解压缩. > tar -xzf kafka_2.11-1.0.0.tgz > cd kafka_2.11-1.0.0 第2步:启动服务器 Kafka ...

  3. Apache Kafka开发入门指南(1)

    Apache Kafka可以帮助你解决在发布/订阅架构中遇到消费数百万消息的问题.如今,商业应用.社交应用以及其它类型的应用产生的实时信息在不断增长,这些信息需要以简单的方式快速.可靠地路由到各种类型 ...

  4. Apache Shiro 快速入门教程,shiro 基础教程

    第一部分 什么是Apache Shiro     1.什么是 apache shiro :   Apache Shiro是一个功能强大且易于使用的Java安全框架,提供了认证,授权,加密,和会话管理 ...

  5. Shiro学习总结(2)——Apache Shiro快速入门教程

    第一部分 什么是Apache Shiro 1.什么是 apache shiro : Apache Shiro是一个功能强大且易于使用的Java安全框架,提供了认证,授权,加密,和会话管理 如同 spr ...

  6. Apache Kafka开发入门指南(2)

    Apache Kafka目标是统一离线和在线处理,与Flume和Scribe相比较,Kafka在处理活动流数据方面更具优势.但是从架构的视野来看,Kafka与传统的消息系统(例如ActiveMQ或Ra ...

  7. kafka快速入门

    一.kafka简介 kafka,ActiveMQ,RabbitMQ是当今最流行的分布式消息中间件,其中kafka在性能及吞吐量方面是三者中的佼佼者,不过最近查阅官网时,官方与它的定义为一个分布式流媒体 ...

  8. Kafka 快速入门

    Kafka Kafka 核心概念 什么是 Kafka Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写.该项目的目标是为处理实时数据提供一个统一.高吞吐.低延迟 ...

  9. kafka快速入门到精通

    目录 1. 消息队列两种模式 1.1 消息队列作用 1.2 点对点模式(一对一,消费者主动拉取数据,消息收到后消息删除) 1.3 发布/订阅模式(一对多,消费数据之后不会删除消息) 1.4 kafka ...

随机推荐

  1. Python学习(四) —— 编码

    一.枚举 enumerate,for i in enumerate(可迭代对象),返回元组,内容是(序列号,可迭代的每一个元素)        for i,j in enumerate(可迭代对象,开 ...

  2. AtCoder Regular Contest 094 (ARC094) CDE题解

    原文链接http://www.cnblogs.com/zhouzhendong/p/8735114.html $AtCoder\ Regular\ Contest\ 094(ARC094)\ CDE$ ...

  3. JVM笔记(虚拟机各内存的介绍)

    JVM笔记 java代码执行分为两部分:javac编译     java执行 代码并不是由上往下执行的,会经过编译期重排序进行优化,存在依赖关系的代码不会被重排序,保证了代码最终执行结果的正确性! j ...

  4. day31 网络编程,多进程多线程

    今天的内容需要好好整理,概念性的东西比较多,都是需要理解的,这些是基层的理解,后期的很多知识都是要建立在今天的概念基础上的,以下两点是核心内容,必须要理解,自己把自己理解的注释加在里面: 进程就是程序 ...

  5. waf python build 工具使用流程

    waf python build 工具使用流程 waf 的 build 理念 build 了之后,可以跟踪到 ${SRC} 和 ${TGT} 有关联的文件,只有 ${SRC} 被修改过,在下次buil ...

  6. Java BigDecimal详解,提供了丰富的四舍五入规则

    java.math.BigDecimal类提供用于算术,刻度操作,舍入,比较,哈希算法和格式转换操作. toString()方法提供BigDecimal的规范表示.它使用户可以完全控制舍入行为. 提供 ...

  7. hdu 1043 Eight (八数码问题)【BFS】+【康拓展开】

    <题目链接> 题目大意:给出一个3×3的矩阵(包含1-8数字和一个字母x),经过一些移动格子上的数后得到连续的1-8,最后一格是x,要求最小移动步数. 解题分析:本题用BFS来寻找路径,为 ...

  8. Spring Boot 项目实战(六)集成 Apollo

    一.前言 上篇介绍了 Spring Boot 集成 Dubbo,使我们的系统打下了分布式的基础.随着程序功能的日益复杂,程序的配置日益增多:各种功能开关.参数配置.服务器地址等:对程序配置的期望值也越 ...

  9. 上海市2019年公务员录用考试第一轮首批面试名单(B类)

    上海市2019年公务员录用考试第一轮首批面试名单(B类) 2019-03-12 设置字体:大 中 小 职位序号 注册编号 职位序号 注册编号 职位序号 注册编号 职位序号 注册编号 1910565 5 ...

  10. C#相关FTP操作

    C# 相关 FTP(File Transfer Protocol) 操作 1.获取文件目录 UsePassive:需要设置为false. 使用被动模式,因为客户端防火墙的存在,所以为了确保数据可以正常 ...