问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

大数据时代下Apache Kafka是数据库吗?

发布网友 发布时间:2022-04-26 17:11

我来回答

1个回答

热心网友 时间:2022-04-14 10:20

首先明确说明它不是数据库,它没有schema,也没有表,更没有索引。它仅仅是生产消息流、消费消息流而已。从这个角度来说Kafka的确不像数据库,至少不像我们熟知的关系型数据库。
那么到底什么是数据库呢?或者说什么特性使得一个系统可以被称为数据库?经典的教科书是这么说的:数据库是提供 ACID 特性的,即atomicity、consistency、isolation和rability。好了,现在问题演变成了Apache Kafka支持ACID吗?如果它支持,Kafka又是怎么支持的呢?要回答这些问题,我们依次讨论下ACID。
1、持久性(rability)
我们先从最容易的持久性开始说起,因为持久性最容易理解。在80年代持久性指的是把数据写入到磁带中,这是一种很古老的存储设备,现在应该已经绝迹了。目前实现持久性更常见的做法是将数据写入到物理磁盘上,而这也只能实现单机的持久性。当演进到分布式系统时代后,持久性指的是将数据通过备份机制拷贝到多台机器的磁盘上。很多数据库厂商都有自己的分布式系统解决方案,如GreenPlum和Oracle RAC。它们都提供了这种多机备份的持久性。和它们类似,Apache Kafka天然也是支持这种持久性的,它提供的副本机制在实现原理上几乎和数据库厂商的方案是一样的。
2、原子性(atomicity)
数据库中的原子性和多线程领域内的原子性不是一回事。我们知道在Java中有AtomicInteger这样的类能够提供线程安全的整数操作服务,这里的atomicity关心的是在多个线程并发的情况下如何保证正确性的问题。而在数据库领域,原子性关心的是如何应对错误或异常情况,特别是对于事务的处理。如果服务发生故障,之前提交的事务要保证已经持久化,而当前运行的事务要终止(abort),它执行的所有操作都要回滚,最终的状态就好像该事务从未运行过那样。举个实际的例子,
第三个方法是采用基于日志结构的消息队列来实现,比如使用Kafka来做,如下图所示:
在这个架构中app仅仅是向Kafka写入消息,而下面的数据库、cache和index作为独立的consumer消费这个日志——Kafka分区的顺序性保证了app端更新操作的顺序性。如果某个consumer消费速度慢于其他consumer也没关系,毕竟消息依然在Kafka中保存着。总而言之,有了Kafka所有的异质系统都能以相同的顺序应用app端的更新操作,从而实现了数据的最终一致性。这种方法有个专属的名字,叫capture data change,也称CDC。

3、隔离性(isolation)
在传统的关系型数据库中最强的隔离级别通常是指serializability,国内一般翻译成可串行化或串行化。表达的思想就是连接数据库的每个客户端在执行各自的事务时数据库会给它们一个假象:仿佛每个客户端的事务都顺序执行的,即执行完一个事务之后再开始执行下一个事务。其实数据库端同时会处理多个事务,但serializability保证了它们就像单独执行一样。举个例子,在一个论坛系统中,每个新用户都需要注册一个唯一的用户名。一个简单的app实现逻辑大概是这样的:
4、一致性(consistency)
最后说说一致性。按照Kelppmann大神的原话,这是一个很奇怪的属性:在所有ACID特性中,其他三项特性的确属于数据库层面需要实现或保证的,但只有一致性是由用户来保证的。严格来说,它不属于数据库的特性,而应该属于使用数据库的一种方式。坦率说第一次听到这句话时我本人还是有点震惊的,因为从没有往这个方面考虑过,但仔细想想还真是这么回事。比如刚才的注册用户名的例子中我们要求每个用户名是唯一的。这种一致性约束是由我们用户做出的,而不是数据库本身。数据库本身并不关心或并不知道用户名是否应该是唯一的。针对Kafka而言,这种一致性又意味着什么呢?Kelppmann没有具体展开,但我个人认为他应该指的是linearizability、消息顺序之间的一致性以及分布式事务。幸运的是,Kafka的备份机制实现了linearizability和total order broadcast,而且在Kafka 0.11开始也支持分布式事务了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
什么网址更新火影忍者集数最快 如果你跟男朋友分手了,他的回答是顺其自然这是什么意思,我该怎么办... 一个女人像男人提分手男人说顺其自然是什么意思 上线两年《X-HERO》如何做到登顶多个国家榜首的? 龙武游戏怎么样费钱吗 Q1游戏公司产品 中国现有什么银行 x.最近六个月的通话记录? 爱奇艺会员哪里买便宜 爱奇艺会员免费领取 iphone4 怎样删除原来的旧凯立德地图 有哪些类型大数据库 大数据应用程序最佳选择:是SQL还是NoSQL wps中找不到刚安装的打印机 大量数据用什么数据库? 已安装了打印机,但找不到,怎么办? 大数据用什么数据库 安装驱动后找不到打印机? 农民如何申请低保 农村户口申请低保需要符合哪些条件 申请农村低保必须符合的三个条件是什么? 农民申请个人低保具备哪些条件 有一句歌词唱的阴阳顿挫,忘了你的样子 分开后又怕再也见不到你,直到我真的见不到你了,忘了你的样子,我却仍爱着你大致这样,这句子原话是什么 歌词是 :我却要用我离开你之后的一辈子,忘了你的样子, 是什么歌 有几句歌词叫“多么可笑的是谁,谁能看透我的眼睛,让我不再失眠...我想忘了你的样子”是什么歌? 有一首歌前面是读出来的(很长),后面是唱的,歌词中有一句好像是:我已经快忘记你的样子了……求歌名! 魏晨的《疯人愿》我想要忘了,忘了,忘了,忘了你的样子。后面是什么? 从此以后忘了你的样子,(下一句我记不清了),这是哪首歌的歌词啊??? 我要忘掉你的样子,像鱼忘掉海的味道是什么歌 一个男孩突然发信息说 我都忘了你长什么样了 他为什么突然说这个 他是喜欢我吗 安装打印机时,提示找不到路径,怎么办如题 安装打印机驱动,老是提示找不到打印机,已经打开电源,连接好的,什么原因? 大数据数据库如何选择 常见的基于列存储的大数据数据库有哪些 大数据使用什么数据库 沃尔沃s40收音机怎么设置 沃尔沃s40是后驱车吗??还有它的汽车音响什么牌子啊?? 沃尔沃s40l音响是什么牌子 沃尔沃s40中控音响如何调重低音 沃尔沃s40喇叭经常无缘无故报警 volvo用的什么牌子的音响 07年沃尔沃s40的音响是丹拿的吗 沃尔沃s40左边喇叭怎么没声音 沃尔沃S40是什么音响 沃尔沃s40蜗牛喇叭怎么拆 抖音审核会胖仅好友可见吗 沃尔沃S40 2.0 智雅版 的所有配置 沃尔沃s40汽车音响可以改成别得播放器吗? 我拍的抖音正在审核中别人能刷到吗 沃尔沃S40遥控一锁门防盗喇叭就一直响,四门都关好,不知道咋回事?