设为首页 收藏本站
查看: 1590|回复: 0

[经验分享] Apache Kafka学习 (一)

[复制链接]

尚未签到

发表于 2017-12-24 12:19:32 | 显示全部楼层 |阅读模式
  前言:最近公司开始要研究大数据的消息记录,于是开始研究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允许构建可重用的生产者或消费者,并且让他们和现有的系统进行对接。
  (举个例子:一个连接到关系型数据库的连接器可以捕捉表格的每次改变)
DSC0000.png

  4. 主题和日志
  一个主题可以被多个消费者订阅。
  kafka的每个主题是以分区日志的形式维护的。
  日志中的每个分区分布在集群中的各个服务器上。
  有一台服务器扮演leader(头领)的角色,而其余的服务器则是followers(跟随者)。
  5. 生产者(Producer)和消费者(Consumer)
DSC0001.png

  上图是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个控制台,效果如下:
DSC0002.png

  好了,第一次笔记到此结束,后续会继续阅读学习。 ^_^
  

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-427494-1-1.html 上篇帖子: Apache Kafka 0.11版本新功能简介 下篇帖子: 【译】Apache Flink Kafka consumer
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表