你好,Kafka

Kafka是一个分布式流媒体平台,具有高吞吐量和低延迟。它使用提交日志数据结构,支持水平扩展和容错。Kafka的核心包括分布式、水平可扩展性、容错性,以及流处理能力,如KSQL。通过ZooKeeper协调,Kafka保证数据的可靠性和处理流程的有序性。流处理允许无状态和有状态处理,实现事件溯源和流-表二义性。Kafka广泛应用于事件驱动架构,是许多公司的核心组件。
摘要由CSDN通过智能技术生成

大家好,我是 kafka, 可能很多人都听说过我,知道我是 2011 年出生在 LinkedIn 的, 从那会儿到现在我的功能越发强大了。作为一个优秀而又完整的平台,你可以在我上面冗余地存储巨大的数据量,我有一个具有高吞吐量 (数百万 / 秒) 的消息总线,你可以在这上面对经过我的数据进行实时流处理。
如果你认为我就只有上面的这些特点的话,那么你真的是太肤浅了。

上面虽然说的很好,但是并未触及到我的核心,这里我给你几个关键字:分布式,水平可扩展,容错,提交日志。

上面这些抽象的词语,我会一一解释它们的含义,并告诉你们我是如何工作的。

内心独白: 本来我是想要以第一人称来写这篇文章的,但是我发现我只能写出上面的了,再多的我就憋不出来了,于是我决定不要为难自己,还是用用第三人称写吧 (写作的功底仍然需要锻炼)

分布式

分布式系统由多个运行的计算机系统组成,所有这些计算机在一个集群中一起工作,对终端用户来讲只是一个单一节点。
分布式系统

kafka也是分布式的,因为它在不同的节点(又被称为broker)上存储,接受以及发送消息,这样做的好处是具有很高的可扩展性和容错性。

水平可扩展性

在这之前,先看看什么是垂直可扩展,比如你有一个传统的数据库服务器,它开始过度负载,解决这个问题的办法就是给服务器加配置(cpu,内存,SSD),这就叫做垂直扩展。但是这种方式存在两个巨大的劣势

  1. 硬件存在限制,不可能无限的添加机器配置
  2. 它需要停机时间,通常这是很多公司无法容忍的

水平可扩展就是通过添加更多的机器来解决同样的问题,添加新机器不需要停机,而且集群中也不会对机器的数量有任何的限制。问题在于并非所有系统都支持水平可伸缩性,因为它们不是设计用于集群中(集群中工作更加复杂)。

容错性

非分布式系统中容易最致命的问题就是单点失败,如果你唯一的服务器挂掉了,那么我相信你会很崩溃。

而分布式系统的设计方式就是可以以配置的方式来容许失败。在5个节点的kafka集群中,你仍然可以继续工作即使其中两个节点挂掉了。
需要注意的是,容错与性能直接相关,你的系统容错程度越高,性能就越差。

提交日志(commit log)

提交日志(也被称为预写日志或者事物日志)是仅支持附加的持久有序数据结构,你无法修改或者删除记录,它从左往右读并且保证日志的顺序。
commit log
是不是觉得kafka的数据结构如此简单?

是的,从很多方面来讲,这个数据结构就是kafka的核心。这个数据结构的记录是有序的,而有序的数据可以确保我们的处理流程。这两个在分布式系统中都是及其重要的问题。

kafka实际上将所有消息存储到磁盘并在数据结构中对它们进行排序,以便利用顺序磁盘读取

  1. 读取和写入都是常量时间O(1)(当确定了record id),与磁盘上其他结构的O(log N)操作相比是一个巨大的优势,因为每个磁盘搜索都很耗时。
  2. 读取和写入不会相互影响
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值