Apache Kafka学习 (一)
前言:最近公司开始要研究大数据的消息记录,于是开始研究kafka。
市面上kafka的书很少,有的也版本比较落后,于是仗着自己英文还不错,上官网直接学习。 ^_^
1. 开始 - 基本概念
学习一样东西,我们首先要知道它是什么。
那么kafka是什么呢?
照官网的解释:
Apache Kafka™ is a distributed streaming platform.
(Kafka是一个分布式的流式数据平台。)
照着官网的解释,kafka拥有以下3项主要能力:
1) 能够在流记录上进行发布和订阅,类似于消息队列了。
2) 能够容错存储流记录。
3) 能够处理流记录。
那么,接下来又要问了,我们用kafka的好处是什么呢?
主要有以下2点好处:
1) 在系统或者应用之间可以构建可依赖的实时的流数据管道。
2) 可以构建实时的处理流数据的系统。
2. 核心概念
* kafka以集群的方式运行在一台或多态服务器上。
* kafka集群根据topic(主题)对存储的流记录进行分类。
* 每条流记录包含一个键值对和一个时间戳。
3. 核心API
* Producer(生产者) API 允许应用程序发布流记录到一个或多个kafka主题。
* Consumer(消费者) API允许应用程序订阅一个或多个kafka主题,从而对这些主题下的流数据进行处理。
* Streams(流) API则负责高效地处理各个主题下的流记录。
* Connector(连接器) API允许构建可重用的生产者或消费者,并且让他们和现有的系统进行对接。
(举个例子:一个连接到关系型数据库的连接器可以捕捉表格的每次改变)
4. 主题和日志
一个主题可以被多个消费者订阅。
kafka的每个主题是以分区日志的形式维护的。
日志中的每个分区分布在集群中的各个服务器上。
有一台服务器扮演leader(头领)的角色,而其余的服务器则是followers(跟随者)。
5. 生产者(Producer)和消费者(Consumer)
上图是2台服务器的kafka集群带了4个分区(P0 - P3), 2组Consumer订阅Producer发布的主题消息。
6. 安装和启动
1)下载kafka源码
https://www.apache.org/dyn/closer.cgi?path=/kafka/0.10.2.0/kafka_2.11-0.10.2.0.tgz
> tar -xzf kafka_2.11-0.10.2.0.tgz
> cd kafka_2.11-0.10.2.0
2) 启动服务器
由于kafka使用zookeeper来管理集群,所以你先需要启动zookeeper。
如果你没有安装zookeeper,你可以是用户kafka的内置脚本启动一个单节点的zookeeper实例。
2-1) 启动单节点zookeeper实例:
> bin/zookeeper-server-start.sh config/zookeeper.properties
2-2) 启动kafka server:
> bin/kafka-server-start.sh config/server.properties
2-3) 创建topic(主题)
> bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
2-4) 使用list命令查看所有主题
> bin/kafka-topics.sh --list --zookeeper localhost:2181
显示结果: test
7. 发送消息
# 运行生产者脚本,并向刚刚创建的test主题发送一些消息
> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
你可以打一些字,如下:
哈哈哈
嘿嘿,你好啊
8. 接收消息
# 运行消费者脚本,从test主题订阅消息
> bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
收到消息:
哈哈哈
嘿嘿,你好啊
我们以上演示需要开启4个控制台,效果如下:
好了,第一次笔记到此结束,后续会继续阅读学习。 ^_^
Apache Kafka学习 (一)的更多相关文章
- Apache Kafka 学习笔记
1. 介绍Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写.Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据. 这种动 ...
- Apache Kafka学习 (二) - 多代理(broker)集群
1. 配置server.properties > cp config/server.properties config/server-1.properties> cp config/ser ...
- Apache Kafka框架学习
背景介绍 消息队列的比较 kafka框架介绍 术语解释 文件存储 可靠性保证 高吞吐量实现 负载均衡 应用场景 背景介绍: kafka是由Apache软件基金会维护的一个开源流处理平台,由scala和 ...
- 【转】apache kafka技术分享系列(目录索引)
转自: http://blog.csdn.net/lizhitao/article/details/39499283 估计大神会不定期更新,所以还是访问这个链接看最新的目录list比较好 apa ...
- apache kafka技术分享系列(目录索引)--转载
原文地址:http://blog.csdn.net/lizhitao/article/details/39499283 kafka开发与管理: 1)apache kafka消息服务 2)kafak安装 ...
- How To Install Apache Kafka on Ubuntu 14.04
打算学习kafka ,接触一些新的知识.加油!!! 参考:https://www.digitalocean.com/community/tutorials/how-to-install-apache- ...
- Kafka学习-简介
Kafka是由LinkedIn开发的一个分布式的消息系统,使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如Cloudera.Apache Storm.S ...
- kafka学习笔记1:测试环境搭建
最近因为架构中引入了kafka,一些之前在代码中通过RPC调用强耦合但是适合异步处理的内容可以用kafka重构一下. 考虑从头学一下kafka了解其特性和使用场景. 环境选择 首先是测试环境的搭建,平 ...
- kafka学习笔记——基本概念与安装
Kafka是一个开源的,轻量级的.分布式的.具有复制备份.基于zooKeeper协调管理的分布式消息系统. 它具备以下三个特性: 能够发布订阅流数据: 存储流数据时,提供相应的容错机制 当流数据到达时 ...
随机推荐
- .NET Out Of Memory Exception - Used 1.3GB but have 16GB installed
I am getting an Out Of Memory exception in my c# application when the memory usage for the applicati ...
- python测试开发django-11.模型models详解
前言 Django 模型是与数据库相关的,与数据库相关的代码一般写在 models.py 中,Django 支持 sqlite3, MySQL, PostgreSQL等数据库 只需要在settings ...
- MySql错误处理(二) - Condition & Handle
20.2.10. 条件和处理程序 20.2.10.1. DECLARE条件 20.2.10.2. DECLARE处理程序 特定条件需要特定处理.这些条件可以联系到错误,以及子程序中的一般流程控制. 2 ...
- javax.servlet不存在问题的解决
产生这个问题的原因是这个包在WEB服务器里才有,J2SE中没有,应该在J2EE中才有.因此必须告诉编译器这个包的位置. 正确的解决方案如下: 1. 搜索servlet-api.jar. 这个包应该在T ...
- Java并发编程的艺术(六)——线程间的通信
多条线程之间有时需要数据交互,下面介绍五种线程间数据交互的方式,他们的使用场景各有不同. 1. volatile.synchronized关键字 PS:关于volatile的详细介绍请移步至:Java ...
- Java并发编程的艺术(二)——重排序
当我们写一个单线程程序时,总以为计算机会一行行地运行代码,然而事实并非如此. 什么是重排序? 重排序指的是编译器.处理器在不改变程序执行结果的前提下,重新排列指令的执行顺序,以达到最佳的运行效率. 重 ...
- android BitmapDrawable的使用
<span style="font-size:18px;"> //功能:显示缩略图,大小为40*40 //通过openRawResource获取一个inputStrea ...
- Java(C#)基础差异-数组
1.填充数组 Java 数组填充替换方法Arrays.fill() 举例如下: import java.util.Arrays; public class FillDemo { public stat ...
- 如何解决rar文件解压缩失败
附件经常会是一系列的压缩文件,下载是默认文件名是一个随机数字.因而下载完会出现压缩文件解压缩失败解决方法:下载时重命名为带一定顺序的文件名,如文件1,文件2,文件3等 如何解决单个文件解压失败?论坛中 ...
- Guava BiMap AbstractBiMap
BiMap BiMap是一个结构,他定义了一个Map结构,代表这个Map的key和value都具有唯一性, 并且可以生成相互联系的反向视图, 反向视图的数据会随着本体BiMap的变更而变更 /* * ...