设为首页 加入收藏

TOP

分布式消息队列Kafka理论(浅显易懂)
2019-05-15 02:14:54 】 浏览:97
Tags:分布式 消息 队列 Kafka 理论 浅显 易懂
版权声明:原创不易,转载请标明出处谢谢。 https://blog.csdn.net/shaock2018/article/details/90201920

0x00 教程内容

  1. Kafka概述
  2. Kafka的架构
  3. Kafka的容错性测试

0x01 Kafka概述

1. Kafka概述

Apache Kafka is a distributed streaming platform. What exactly does that mean

A streaming platform has three key capabilities:
Publish and subscribe to streams of records, similar to a message queue or enterprise messaging system.
Store streams of records in a fault-tolerant durable way.
Process streams of records as they occur.

来源于官网:http://kafka.apache.org/10/documentation.html#introduction

2. Kafka的作用

a. Kafka类似于消息队列或者企业消息系统
竟然是消息队列,消息系统,那么就会有生产者与消费者。

b. 如何理解生产者、消费者?
小故事:
包子师傅:生产者
你:消费者
包子:数据流,消息

c. 场景分析:
理想情况下,包子师傅生产一个包子,你就吃一个包子。
但现实情况下,生产一个,吃一个,肯定是来不及,往往没有这么完美的。
场景一:吃到某一个的时候,可能就吃不下去了,就相当于我们的消息系统里面的卡顿了,可以理解为我们的机器故障了。此时,师傅还在继续生产包子,那么多余的包子就丢失了。
场景二:生产包子的速度太多,你来不及吃,那么馒头也就丢失了。

问题:如何做到包子不丢失?
解决:拿个篮子来装着,等我们需要吃的时候,再向篮子里面拿即可。

问题:如果篮子满了,那么多余的包子就丢失了
解决:多准备几个篮子来装着

类比概念:我们的Kafka相当于篮子,起到一个缓冲的作用。

d. 三大特点:
1、发布订阅消息系统
2、以容错、持久的方式存储记录流
3、可以以流的方式消费信息

0x02 Kafka的架构

1. Kafka相关概念

a. producer:生产者,包子师傅
b. consumer:消费者,吃包子的你
c. broker:Kafka,篮子
d. topic:主题,即给包子打的标签,用来区分谁吃哪个包子。不是每个包子都可以吃的,我们可以选择性地吃某个人生产的包子。

2. 图解Kafka概念之Topic

在这里插入图片描述
a. Kafka可以作为一个集群运行在一个或多个可跨多个数据中心的服务器上,也就是说,Kafka可以以单机或者集群的方式出现。我们在创建Topic的时候,可以设置分区,比如三台机器设置三个分区,那么每个分区就分别落在三台机器上,分别是Partition 0、1、2,消费者也可以选择特定的分区去消费。
b. 由上图可知,每个分区都是一个有序的记录序列,而且它是不可变的。
在这里插入图片描述
c. 队列中,有一个叫偏移量(offset)的概念,是用来记录我们的消费位置的。消费者可以控制它的位置,所以可以按照自己喜欢的任何顺序消费信息。例如,消费者可以重置为较旧的偏移量以重新处理过去的数据,或者跳到最近的记录并从“现在”开始消费。
d. 这些功能组合意味着Kafka消费者不需要消耗什么性能,对集群或者其他消费者没有多大的影响。
e. 日志中的分区有多种用途。首先,当日志大小超过了单台服务器的限制,Kafka允许日志进行扩展。每个单独的分区都必须受限于主机的文件限制,不过一个主题可能有多个分区,因此可以处理无限量的数据。其次,它们充当了并行性的单位,关于此点,请参考官网。

0x03 Kafka的容错性测试

1. 实践步骤

a. 分别启动三个Kafka,前提是要先部署好Zookeeper集群
b. 创建一个topic,分区为3,副本系数也是3
c. 查看此topic的详细信息,并杀掉其中的主节点,和一台从节点
d. 再查看此topic的详细信息

2. 效果展示

a. 不影响使用,仍然可以发布订阅消息。

0xFF 总结

  1. Kafka的安装与部署Windows版本,请参考教程:Kafka的安装及发布订阅消息系统(windows)
  2. Kafka的安装与部署Linux版本,请参考教程:复制粘贴玩大数据之安装与配置Kafka集群

作者简介:邵奈一
大学大数据讲师、大学市场洞察者、专栏编辑
公众号、微博、CSDN邵奈一

邵奈一的技术博客导航


yabo体育app下载开发网
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇 ? ? ?  .. 下一篇vertica-->kafka-->mongodb..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(217) }