Kafka(分布式消息队列)的基本认识

作用(用于消息中间件)

1.可以作为缓冲(流量消减)--防止高并发

2.分布式

3.解耦合

分片机制

简要介绍:

1.Kafka可以将主题划分为多个分区(Partition)

2.主要解决了单台服务器存储容量有限的问题

3.将消息均匀的分布到不同的分区中,这样实现了负载均衡.(提高读写效率)

生产者和消费者对分区的操作:

1.生产者和消费者可以多线程地并行操作,每一个线程处理的是一个分区的数据,所以分区实际上是调优Kafka并行度的最小单元.

2.生产者可以多线程同时向不同分区发送消息

3.消费者:同一个消费组内,一个分区可以被一个组中某一个成员消费,如果消费组中有多于分区数量的消费者,那么一定会有消费者无法消费数据。

4.一个topic分区越多,理论上整个集群所能达到的吞吐量就越大。但每个分区都有自己的资源占用开销,分区多了,副本也多了,资源占用同样也多了.

注意:kafka中的topic在消费时,整体上是无序的,而每个分区的内部消费是有顺序的,如果想要全局有序,可以设置一个分区,但是这样的话丢失了很多的性能。

如何合理的设置分区数:

一个topic分区的个数不是随意来来设置的,需要有些衡量的指标,可以使用如下方法进行测试:

(1)、创建只有一个分区数的topic

(2)、然后测试这个topic的producer和consumer吞吐量

(3)、假设它们的值分别为Tp和Tc,单位可以是MB/s 

(4)、然后假设总的目标吞吐量是Tt,那么分区数= Tt / max(Tp, Tc)

注意:

Tp表示producer的吞吐量。测试producer通常是很容易的,因为它的逻辑非常简单,就是直接发送消息到Kafka就好了。Tp=10m/s

Tc表示consumer的吞吐量。测试Tc通常与应用的关系更大,因为Tc的值取决于你拿到消息之后执行什么操作,因此Tc的测试通常也要麻烦一些。Tc=5m/s总的目标吞吐量是Tt,可以理解为说业务数据每秒实际产生的数据量100M

副本机制:

副本备份机制解决了数据存储的高可用问题

容错原则例子:

假设有三个分片, 三个副本, 共计9个节点

​ 在三台服务器上 各放置一个分片的副本

​ 第二个副本放置在和这台服务器同机架上

​ 第三个副本放置在不同的机架的服务器上

消息不丢失机制:

生产者端消息不丢失:

1) 消息生产分为同步模式和异步模式

2)  消息确认分为三个状态

​ a) 参数0:生产者只负责发送数据

​ b) 参数1:某个partition的leader收到数据给出响应

​ c) 参数-1:某个partition的所有副本都收到数据后给出响应

3)  在同步模式下

​ a) 生产者等待10S,如果broker没有给出ack响应,就认为失败。

​ b) 生产者重试3次,如果还没有响应,就报错。

4)  在异步模式下

​ a) 先将数据保存在生产者端的buffer中。Buffer大小是2万条。

​ b) 满足数据阈值或者数量阈值其中的一个条件就可以发送数据。

​ c) 发送一批数据的大小是500条。

注意:异步模式下,如果broker迟迟不给ack,而buffer又满了。开发者可以设置是否直接清空buffer中的数据。

broker端消息不丢失:

1.broker端的消息不丢失,其实就是用partition副本机制来保证。

2.Producer ack -1(all). 能够保证所有的副本都同步好了数据。其中一台机器挂了,并不影响数据的完整性。

消费端消息不丢失:

通过offset commit 来保证数据的不丢失,kafka自己记录了每次消费的offset数值,下次继续消费的时候,会接着上次的offset进行消费。

生产者数据分发策略:

1.用户指定partition

2. 当用户指定key,使用hash算法。如果key一直不变,同一个key算出来的hash值是个固定值。如果是固定值,这种hash取模就没有意义。

3.当用户既没有指定partition也没有key,使用轮询的方式发送数据

消息的发布方式:

点对点的发布方式:只要保证所有接收这个topic的消费者都在同一组中

发布订阅方式:只要保证所有接收这个topic的消费者不属于同一组

面对数据量大,消费者消费慢的解决思路:

1.将同组中的消费者数量提高到这个topic分片的数量

2.若消费能力不足,可以将topic的分片数量扩大

3.通过硬件提高消防者处理能力

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

推荐阅读更多精彩内容