ck电影网,面试官:音讯中间件怎么完成每秒几十万的高并发写入?,飞卢

欢迎重视头条号:石杉的架构笔记

周一至周五早八点半!精品技术文章按时送上!!!

精品学习材料获取通道,ck电影网,面试官:消息中心件怎样完结每秒几十万的高并发写入?,飞卢拜见文末


目录

1、页缓存技术 + 磁盘次序写

2、零复制技术

3、终究的总结


这篇文章来聊一下Kafka的一些架构规划原理,这也是互联网公司面试时十分高频的技术考点。

Kafka是高吞吐低推迟的高并发、高功能的消息中心件,在大数据范畴有极为广泛的运用。装备杰出的壶口瀑布在哪Kafka集群乃至能够做暮光之城3到每秒几十万、上百万的超高并ck电影网,面试官:消息中心件怎样完结每秒几十万的高并发写入?,飞卢发写入。

那么Kafka究竟是怎样做到这么高的吞吐量和功能的呢?这篇文章咱们来一点一点说一下。


1、页缓存技术 +云之家 磁盘次序写

首要Kafka每次接收到数据都会往磁盘上去写,如下图所示。

那么在这儿咱们不由有一个疑问了,假定把数据根据磁盘来存储,频频的往磁盘文件里写数据,这个功能会不会很差?咱们肯定都觉得磁盘写功能是极差的。

没错和田玉籽料,要是真的跟上面那个图那么简略的话,那的确这个功能是比较差的。

可是实践上Kafka在这儿有极为优异和超卓的规划,便是为了确保数据写入功能,首要Kafka是根据操作体系的页缓存来完结文件写入的。

操作体系自身有一层缓存,叫做page cache,是在内存里的缓存,咱们也能够称之为os cache,意思便是操作体系自己办理的缓存。

你在写入磁盘文件的时分,能够直接写入这个osck电影网,面试官:消息中心件怎样完结每秒几十万的高并发写入?,飞卢 cache里,也便是只是写入内存中,接下因由操作体系自己决议什么时分把os cache里的数据真的刷入磁盘文件中。

只是这一个进程,就能够将磁盘文件写功能提高很多了,由于其实这儿适当所以在写内存,不是在写磁盘,咱们看下图。

接着别的一个便是kafka写数据的时分,十分要害的一点,他是以磁盘次序写的方法来写的。也便是说,只是将数据追加到文件的结尾,不是在文件的随机方位来修正数据。

一般的机械磁盘假定你要是随机写的话,的确功能极差,也便是随意找到文件的某个位超级警卫置来写数据。

可是假定你是追加文件结尾依照次序的方法来写数据的话,那么这种磁盘次序写的功能基本上能够跟写内存的功能自身也是差不多的。

所以咱们就知道了,上面那个图里,Kafka在写数据的时分,一方面根据了os层面的page cack电影网,面试官:消息中心件怎样完结每秒几十万的高并发写入?,飞卢che来写数据,所以功能很高,实质便是在写内存算了。

别的一个,他是选用磁盘次序写的方法,所以即便数据刷入磁盘的时分,功能也是极高的,也跟写内存是差不多的。

根据上面两点,kafka就完结了写入数据的超高功能。

那么咱们想想,假定说kafka写入一条数据要耗费1毫秒的时刻,那么是不是每秒便是能够写入1000条数据?

可是假定kafka的功能极高,写入一条数据只是耗费0.01毫秒呢?那么每秒是不是就能够写入10万条数?

所以要确保每秒写入几万乃至几十万条数据的中心点,便是尽最大或许提高每条数据写入的功能,这样就能够在单位时刻内写入更多的数据量,提高吞吐量。


2、零复制技术

说完了写入这块,再来谈谈消费这块。

咱们应该都知道,从Kafka里咱们常常要消费数据,那么消费的时分实践上shelf便是要从kafka的磁盘文件里读取某条数据然后发送给下流的顾客,如下图所示。

那么这儿假定频频的从磁盘读数据然后发给顾客,功能瓶颈在哪里呢?

假定要是kafka什么优化都不做,便是很简略的从磁盘读数据发送给下流的顾客,那么大约进程如下所示:

先看看要读的数据在不在os cache里,假定不在的话就从磁盘ck电影网,面试官:消息中心件怎样完结每秒几十万的高并发写入?,飞卢文件里读取数据后放入os cache。

接着从操作体系的os cache里复制数据到运用程阎王序进程的缓存里,再从运用程序进程的缓存里复制数据到操作体系层面的Socket缓存里,终究从Socket缓存里提取数据后发送到网卡,终究发送出去给下流消明氏优然清费。

整个进程,如下图所示:

咱们看上图,很ck电影网,面试官:消息中心件怎样完结每秒几十万的高并发写入?,飞卢显着能够看到有两次没必要的复制吧!

一次是从开放操作体系的cache里复制到运用进程的缓存里,接着又从运用程序缓存里复制回操作体系的Socket缓存里。

并且为了进行这两次复制,中心还发生了好几次上下文切换,一瞬间是运用程序在履行,一瞬间上下文切换到操作体系来履行。

所以这种方法来读取数据是比较耗费功能的。

Kafka为了处理这个问题,在读数据的时分是引进零复制技术

也便是说,直接让操作体系的cache中的数据发送到网卡后传输给下流的顾客,中心跳过了两次复制数据的进程,Socket缓存中只是会复制一个描述符曩昔,不会复制数据到Socket缓存。

咱们看下图,领会一下这个精妙的进程:

经过零复制技术,就不需求把os cache里的数据复制到运用缓存,再从运用缓存复制到Socket缓存了,两次复制都省掉了,所以叫做零复制。

对Socket缓存只是便是复制数据的描述符曩昔,然后数据就直接从os cache中发送到网卡上去了,这个进程大大的提高了数据消费时读取文件数据的功能。

并且咱们会注意到,在从磁盘读数据的时分,会先看看os cache内存中是否有,假定有的话,其实读数据都是直接读内存的。

假定kafka集群经过杰出的调优,咱们会发现很多的数据都是直接写入os cache中,然后读数据的时分也是从os cache中读。

适当所以Kafka完全根据内存供给数据的写和读了,所以这个全体功能会极端的高。

说个题外话,下回有机会给咱们说一下Elasticsearch的架构原理,其实ES底层也是很多根据os cache完结了海量数据的高功能检索的,跟Kafka原理相似。


3、终究的总结

经过这篇文章对kafka底层的页缓存技术的运用,磁盘次序写的思路,以及零复制技术的运用,咱们应该就了解Kafka每台机器在底层对数据进行写和读的时分采纳的是什么样的思路,为什么他的功能能够那么高,做到每秒几十万的吞吐量。

这种规划思维对咱们平常自己规划中心件的架构,或者是出去面试的时分,都有很大的协助。

End

(封面图源网络,侵权删去)

私信头条号,发送:“材料”,获取更多“秘制” 精品学习材料

如有收成,请帮助转发,您的鼓舞是作者最大的动力,谢谢!

一大波微效劳、分布式、高并发、高可用的原创系列文章正在路上,

欢迎重视头条号:石杉的架构笔记

周一至周五早八点半!精品技术文章按时送上!!!

十余年BAT架构阅历倾囊相授

引荐阅览

1、托付!面试请不要再问我Spring Cloud底层原理!

2、微效劳注册中心怎样承载大型体系的千万级拜访?

3、「功能优化之道」每秒上万并发下的Spring Cloud参数优化实战

4、「“剁手党”狂欢达基基神庙的背面」微效劳架构怎样确保99.99%的高可用?

5、兄弟,用大白话通知你小白都能看懂的Hadoop架构原理

6、大规模集群下Hadoop NameNode怎样承载每秒上千次的高并发拜访

7、「功能优化的隐秘」Hadoop怎样将TB级大文件的上传功能优化上百倍

8、托付,面试请不要再问我TCC分布式业务的完结原理!

9、终究一致性分布式业务怎样确保实践出产中99.99%高可用?

10、托付,面试请不要再问我Redis分布式锁的完结原理

11、Hadoop底层算法怎样高雅的将大规模集群功能提高10倍以上?

12、亿级流量体系架构之怎样支撑百亿级数据的存储与核算

13、亿级流量体系架构之怎样规划高容错分布式核算体系

14、亿级流量体系架构之怎样规划承载百亿流量的高功能300104架构

15、亿级流量体系架构之怎样规划每秒十万查询的高并发架构

16、亿级流量体系架构之怎样规划全链路99.99%高可用架构

17、七张图完全讲清strict楚ZooKeeper分布式锁的完结原理

18、大白话聊聊Java并发面试问题之volatile究竟是什么?

19、大白话聊聊Java并发面试问题之Java 8怎样优化CAS功能?

20、大白话聊聊Java并发面试问题之谈谈你对AQS的了解?

21、大白话聊聊Java并发面试问题之微效劳注册中心的读写锁优化

22、互联网公司的面试官是怎样360无死角调查提名人的?(上篇)

23、互联网公司面试官是怎样360无死角调查提名人的?(下篇)

24、「Java进阶面试系列之一」你们体系架构中为何要引进消息中心件?

25、「Java进阶面试系列之二」体系架构引进消息中心件有什么缺陷

26、「行走的Offer收割机」一位朋友斩获BAT技术专家Offer的面试阅历

27、「Java进阶面试系列之三」消息中心件在你们项目里是怎样落地的?

28、扎心!线上效劳宕机时,怎样确保数据100%不丢掉?

29、 一次JVM FullGC的背面,竟隐藏着触目惊心的线上出产事端!

30、「高并发优化实践」10倍恳求压力来袭,你的体系会被击垮吗?

31、消息中心件集群溃散,怎样确保百万出产数据不丢掉?

32、亿级流量体系架构之怎样在秦汉新城改造村庄名单上万并发场景下规划可扩展架构(上)?

33、亿级流量体系架构之怎样在上万并发场景下规划可扩展架构(中)?

34、亿级流量体系架构之怎样在上万并发场景下规划可扩展架构(下)?

35、亿级流量架构第二弹:你的体系真的无懈可击吗?

36、抚顺亿级流量体系架构之怎样确保百亿流量下的超逸数据一致性(上)

37、亿级流量体系架构之怎样确保百亿流量下的数据一致性(中)?

38、亿级流量体系架构之怎样确保百亿流量下的数据一致性(下)?

39、互联网面试必杀:怎样确保消息中心件全链路数据100%不丢掉(1)

40、互联网面试必杀:怎样确保消息中心件全链路数据100%不丢掉(2)

41、面试大杀器:消息中心件怎样完结消费吞吐量的百倍优化?

42、兄弟,用大白话给你讲小白都能看懂的分布式体系容错架构

43、从团队自研的百万并发中心件体系的内核规划看Java并发功能优化

44、假定20万用户一起拜访一个热门缓存,怎样优化你的缓存架构?

45、「非广告,纯干货」英语差的程序员怎样才干无障碍阅览官方文档?

46、面试最让你不知所措的一个问题:你的体系怎样支撑高并发?

47、Java进阶必备:高雅的通知面试官消息中心件该怎样完结高可用架构

48、「非广告,纯干货」大乐透杀号中小公司的Java工程师应该怎样逆袭冲进BAT?

49、托付,面试请不要再问我分布式搜索引擎的架构原理!

50、互联网大厂Java面马踏飞燕试题:运用无界行列的线程池会导致内存飙升吗?

51、「码农打怪晋级之路」行走江湖,你需求解锁哪些技术包?

52、「来自一线的血泪总结」你的体系上线时是否踩过这些坑?

53、【offer收割机必备】我简历上的Java项目都好low,怎样办?

54、【offer去哪了】我一连面试了十个Java岗,通通石沉大符瑶天下海!

55、支撑日活百万用户的高并发体系,应该怎样规划其数据库架构?

56、高阶Java开发必备:分布式体系的仅有id生成算法你了解吗?

57、为难了!Spring Cloud微效劳注册中心Eureka 2.x中止保护了咋办?

58、【Java高阶秒速5厘米必备】怎样ck电影网,面试官:消息中心件怎样完结每秒几十万的高并发写入?,飞卢优化Spring Cloud微效劳注册中心架构?