1、kafka是什么?

Kafka是由LinkedIn开发的一个分布式基于公布/订阅的音讯零碎,应用Scala编写,它以可程度扩大和高吞吐率而被宽泛应用。

2、产生背景

Kafka是一个音讯零碎,用作LinkedIn的流动流(Activity Stream)和经营数据处理管道(Pipeline)的根底。流动流数据是简直所有站点在对其网站应用状况做报表时都要用到的数据中最惯例的局部。

流动数据包含页面访问量(Page View)、被查看内容方面的信息以及搜寻状况等内容。这种数据通常的解决形式是先把各种流动以日志的模式写入某种文件,而后周期性地对这些文件进行统计分析。

经营数据指的3是服务器的性能数据(CPU、IO使用率、申请工夫、服务日志等等数据)。经营数据的统计办法品种繁多。

3、根本架构图

4、基本概念解释

1)Broker

Kafka集群蕴含一个或多个服务器,这种服务器被称为broker。broker端不保护数据的生产状态,晋升了性能。间接应用磁盘进行存储,线性读写,速度快:防止了数据在JVM内存和零碎内存之间的复制,缩小耗性能的创建对象和垃圾回收。

2)Producer

负责公布音讯到Kafka broke

3)Consumer

音讯消费者,向Kafka broker读取音讯的客户端,consumer从broker拉取(pull)数据并进行解决。

4)Topic

每条公布到Kafka集群的音讯都有一个类别,这个类别被称为Topic。(物理上不同Topic的音讯离开存储,逻辑上一个Topic的音讯尽管保留于一个或多个broker上但用户只需指定音讯的Topic即可生产或生产数据而不用关怀数据存于何处)

5)Partition

Parition是物理上的概念,每个Topic蕴含一个或多个Partition.

6)Consumer Group

每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)

7)Topic & Partition

Topic在逻辑上能够被认为是一个queue,每条生产都必须指定它的Topic,能够简略了解为必须指明把这条音讯放进哪个queue里。为了使得Kafka的吞吐率能够线性进步,物理上把Topic分成一个或多个Partition,每个Partition在物理上对应一个文件夹,该文件夹下存储这个Partition的所有音讯和索引文件。

若创立topic1和topic2两个topic,且别离有13个和19个分区,则整个集群上会相应会生成共32个文件夹(本文所用集群共8个节点,此处topic1和topic2 replication-factor均为1)。

5、实用场景

1、Messaging

对于一些惯例的音讯零碎,kafka是个不错的抉择;partitons/replication和容错,能够使kafka具备良好的扩展性和性能劣势.不过到目前为止,咱们应该很分明意识到,kafka并没有提供JMS中的"事务性""音讯传输担保(音讯确认机制)""音讯分组"等企业级个性;kafka只能应用作为"惯例"的音讯零碎,在肯定水平上,尚未确保音讯的发送与接管相对牢靠(比方,音讯重发,音讯发送失落等)

2、Website activity tracking

kafka能够作为"网站活性跟踪"的最佳工具;能够将网页/用户操作等信息发送到kafka中.并实时监控,或者离线统计分析等

3、Metrics

Kafka通常被用于可操作的监控数据。这包含从分布式应用程序来的聚合统计用来生产集中的经营数据提要。

4、Log Aggregation

kafka的个性决定它非常适合作为"日志收集核心";application能够将操作日志"批量""异步"的发送到kafka集群中,而不是保留在本地或者DB中;kafka能够批量提交音讯/压缩音讯等,这对producer端而言,简直感觉不到性能的开销.此时consumer端能够使hadoop等其余系统化的存储和剖析零碎。

原文链接:https://blog.csdn.net/code52/...

版权申明:本文为CSDN博主「宝哥-NO1」的原创文章,遵循CC 4.0 BY-SA版权协定,转载请附上原文出处链接及本申明。

近期热文举荐:

1.600+ 道 Java面试题及答案整顿(2021最新版)

2.终于靠开源我的项目弄到 IntelliJ IDEA 激活码了,真香!

3.阿里 Mock 工具正式开源,干掉市面上所有 Mock 工具!

4.Spring Cloud 2020.0.0 正式公布,全新颠覆性版本!

5.《Java开发手册(嵩山版)》最新公布,速速下载!

感觉不错,别忘了顺手点赞+转发哦!