Kafka的那些事

1、什么是Kafka?

官方定义:Apache Kafka is an open-source distributed event streaming platform(Kafka是一个开源的分布式流计算平台)
自定义:Kafka是一个分布式、分区的、多副本的、多生产者、多订阅者、基于zookeeper协调的分布式日志系统和消息系统。

2、运用场景

主要是日志搜集系统和消息系统

3、消息系统

消息传递模式:点对点模式 和 发布-订阅模式
在这里插入图片描述
即:生产者发送一条消息到queue,只有一个消费者能收到。
在这里插入图片描述
当发布一个消息,所有订阅这个topic的服务都能得到这个消息,所以从1到N个订阅者都能得到同一个消息的拷贝

Kafka:
在这里插入图片描述 消费端为拉模型,消费状态和订阅关系由客户端端负责维护,消息消费 完后不会立即删除,会保留历史消息。因此支持多订阅时,消息只会存储一 份就可以了。

4、Kafka-扮演角色

4.1 消息系统

Kafka和传统的消息系统(消息中间件)都具备系统解耦、冗余存储、流量削峰、缓冲、异步通信、扩展性、可恢复性等功能;另外,Kafka还实现了消息顺序性保障,回溯消费的功能。

4.2 存储系统

Kafka把消息持久化到磁盘,相比于其他基于内存存储的系统而言,有效地降低了数据丢失的风险。也正是得益于Kafka的消息持久化功能和多副本机制,我们可以把Kafka作为长期的数据存储系统来使用,只需要把对应的数据保留策略设置为”永久”或启用主题的日志压缩功能。

4.3 流式处理平台

Kafka不仅为流式处理框架提供了可靠的数据来源,还提供了一个完整的流式处理类库,如:窗口、连接、变换、聚合等各类操作。

5、Kafka-高吞吐低延迟

Kafka的数据虽然是写入磁盘,但写入速度是很快的,因为每次都是写入操作系统的页缓存(page cache),然后由操作系统自行决定什么时候把页缓存中的数据写入磁盘上。

5.1 操作系统缓存

页缓存是内存分配的,Kafka不直接参与物理的I/O操作,而是交由操作系统来完成。

5.2 顺序读

Kafka采用追加(append)方式,避免了磁盘的随机读写操作(类比redis的aof持久化)。

5.3 零拷贝

使用sendfile为代表的零拷贝技术加强网络间的数据传输效率;数据直接在内核空间完成输入和输出,不需要拷贝到用户空间再写出去;kafka数据写入磁盘前,数据先写到进程的内存空间。

内核空间和用户空间:
那么为什么从内核空间转向用户空间这段过程会慢呢?首先我们需了解的是什么是内核空间和用户空间。在常用的操作系统中为了保护系统中的核心资源,于是将系统设计为四个区域,越往里权限越大,所以Ring0被称之为内核空间,用来访问一些关键性的资源。Ring3被称之为用户空间。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值