kafka 消息队列初识

添加消息的依赖

<dependency>

<groupId>org.springframework.kafka</groupId>

<artifactId>spring-kafka</artifactId>

</dependency>

<dependency>

<groupId>io.projectreactor.kafka</groupId>

<artifactId>reactor-kafka</artifactId>

<version>1.1.0.RELEASE</version>

</dependency>

信息队列通信的模式---信息中间件

1》点对点模式

   点对点模式通常是基于拉取或者轮询的消息传送模式,(pull)主动的

特点:发送到队列的消息被一个且只有一个消费者进行处理。生产者将消息放入消息队列后,由消费者主动的去拉去消息进行消费。

优点:消费者拉取消息的频率可以由自己控制,消费者端需要额外的线程去监控消息是否消费。

2》发布订阅模式

发布订阅模式是一个基于消息送的消息传送模式,该模式可以由多种不同的订阅者,(push)被动接受

特点:生产者将消息放入消息队列后,队列会将消息推送给订阅过该类消息的消费者,消息队列无法感知消费者消费的速度,消息的处理速度不同,会出现自己的浪费问题

Kafka 消息:

概念:高吞吐量的分布式发布订阅消息系统,

特点:处理消费者规模的网站中的所有动作流数据,具有高性能,持久化,多副本备份,横向扩展能力,,,等


Producer :生产者,消息的入口,

kafka cluster (kafka 群):

Broker:kafka的实例,每个服务器上有一个或多个kafka 实例,多个broker 在kafka集群中是不重复存在的,会被定义不同不得编号并使用。

Topic:消息的主题,对消息进行分类,kafka数据保存在Topic中,而且,Broker 可以创建多个Topic

Partition:Topic的分区。其作用:处理负载,提高kafka 的吞吐量,同一个Topic 的不同分区数据不重复。Partition相当于一个个的文件夹。

Replication:分区有多个副本,其作用是为了做备胎。当主分区(Leader)c出现故障时,会选择一个备胎(Follower)上位,,成为Leader,在Kafka中默认最大的副本量为10个,且副本的数量不能大于Broker 的数量,follower和Leader 绝对不能在同一个机器中,同一机器对同一分区只能存放一个副本(包括自己)

Message:发送的消息主体

Consumer:消费者,消息的出口,消费方。

Consumer Group:多个消费者组成一个消费组,同一分区的数据,被消费组中一个消费者消费,这样提高了kafka的吞吐量

Zookeeper:kafka集群依赖zookeeper,用来保存集群的元信息,确保系统的可用性。

重点来啦:

工作流程分析:


注意:消息写入leader后,follower 是主动的去 leader进行同步操作的,Producer采用push的方式将数据发布到broker 中,并对每条消息追加到分区中,依次顺序写入磁盘中,以此保证统一分区内的数据是有序的,


如上图:数据在不同的分区中,可能会问没为什么要分区,目的又是什么,

分区的主要目的:1》方便扩展,topic和partition是一对多的关系,可以使用扩展机器,轻松扩展数据量。

                           2》提高并发,以partition 为基本的读写单位,多个消费者可以同时消费数据,提高消费的处理效率。

同时也会有疑问:一个topic 有多个partition,producer 如何确认数据发向哪个partition ?

z在此提下kafka的几大原则:

1:partition 在写入的时候可以选择需要写入的partition,有指定,则写入指定的partition。

2:若没有指定,但是呢,设置可数据的key 值,则会根据key值hash 出一个partition,

3:若没有partition ,也没有key ,则会根据轮询选出一个partition 。

保证信息不丢失是一个消息队列中间件的基本保证,但如何确保呢?-----通过ACK应答机制,

在生产者向队列写入数据的时候,可以设置参数来确定是否确认kafka接收到数据,这个参数可以设置的值为0,1,all。

0:producer 往集群发送数据不需要等到集群的返回,不确保消息的发送成功。其安全性最低,但效率最高。

1:producer往集群发送数据只要leader应答就可以发送一条,只确保leader发送成功。

all:producer 往集群发送数据所有的follower 都完成从leader 的同步发送下一条,确保leader 发送成功何所有副本都完成备份,安全性高,但效率最低。

kafka的应用场景:

主要解决应用解耦,一步消息,流量消费等,实现高性能,高可用,可伸缩和最终一致性架构。存储转发

目前使用较多的消息队列,有Active MQ。BabbitMQ,ZeroMQ,kafka ,MetaMQ,rocket MQ

应用场景:

1:网站活动追踪,对消息进行实时处理,实时监测,离线处理数据仓库,或加载到Hadoop上

2:指标 用于监测数据,分布式应用程序生成的统计数据集中聚合

3:日志聚合:使用kafka代替一个日志聚合的解决方案

4:流处理:基于单个topic主题的实时数据流,

5:实践采集:是一种应用程序的设计风格,kafka支持非常大的存储日志数据的场景

6:提交日志:kafka可以作为一种分布式的外部提交日志,日志帮助节点之间复制数据。并作为失败的节点来恢复实践重新同步,kafka的日志压缩功能能制止这个用法。

k

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • 一、Kafka简介 1.1 什么是kafka kafka是一个分布式、高吞吐量、高扩展性的消息队列系统。kafka...
    风筝flying阅读 743评论 0 0
  • 以下是本消息队列系列文章的传送门: (一)消息队列应用场景 (二)消息队列技术选型 (三)kafka 在通过消息队...
    Jerry_Liang阅读 717评论 0 2
  • 1、Kafka是什么 Kafka 最早是由 LinkedIn 公司采用Scala语言开发的一个多分区、多副本且基于...
    冰河winner阅读 590评论 0 4
  • 1、发送模式 KafkaProducer 是线程安全的,可以在多个线程中共享单个 KafkaProducer 实例...
    冰河winner阅读 847评论 0 1
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,474评论 16 22