Apache Kafka简介

分布式流式平台的三大特征:
  • 流式记录的发布订阅

  • 采用容错持久的方式存储流式消息

  • 流式记录实时处理

kafka通常用于处理两大类应用:
  • 在异构系统和应用之间构建实时流式数据处理管道
  • 数据的传输和响应的实时流式应用
kafka的基础概念
  • kafka以集群方式启动,运行在一台或多台的服务器上,可跨数据中心
  • kafka在存储数据流的时通过一个叫“topic”的进行分类
  • 每条数据记录由一个key、value和时间戳组成

kafka使用tcp协议在多个客户端与服务器之间的通信,该协议的特点是简单、高性能和语言无关性

保证
  • 同一个消息生产者到特定的topic,消息是有序的
  • 消息者实例按照存储在日志的顺序消费到消息
  • 在不丢失消息的情况下,能容忍n-1台服务器宕机

kakfa同时作为消息系统、存储系统和流式系统

消息系统

kafka的流式概念与传统企业消息系统的有什么不同的呢?
传统的消息中间件有两种模式:队列模式和发布订阅模式。在队列模式中,消费者实例池将会从服务器中读取消息,每个消息也会被消费到池中的一个实例。发布订阅模式则会将消息广播到所有的消费者中去。这两种模式都有优缺点。队列模式的优点是允许将消息分发给多个消费者实例,这能够拓展消息的处理能力。但队列模式没有多订阅者,一旦消息被消费了就不复存在了。发布订阅模式可以将你的消息广播个多个消费者,但这样却没有扩展信息处理的能力。

kafka的消费组概念中,队列模式中可以给给消息分发给同个消费组中的实例成员间分工处理,发布订阅模式可以将消息广播多个消费组中。kafka的消费组可以同时兼容这两种模式,不用像传统的方式要二选一。

kafka比传统的消息系统有更严格的顺序保证。传统的消息系统的在服务器上保证了消息的顺序,如果有多个消费者从队列中获取消息,服务器将会按服务器的顺序分发给各个消费者。但是尽管服务器发送时是有序的,但是消息是异步给到消费者的,加上网络原因,可能到达消费者的顺序就不是原来的。也就是以为在有序的消息将在并行处理的时候可能会乱序,比如电商的中消息“下单”,“结算”,“评价”是不允许乱序处理的,在这种情况下,传统的模式使用“exclusive consumer”,即独立单个消费者去消费消息,也意味着低效,不能并行处理。kafka的处理方式,是通过一个在topic中,称为分片partition的概念来并行处理。kafka能提供顺序保证和在消费者池中进行负载均衡。一个partition只能给同个消费组中的一个消费组消费,这样就能保证该partition中的消息只有一个消费者实例消费。假设有很多个partition,这将会均衡的将消费分配给多个消费者实例。但注意一个消费组中的消费者个数不能多过partition,因为多了也不能处理该topic的消息了。
在这里插入图片描述

存储系统

将发布和消费进行解耦的消息中间件都会有效扮演一个存储系统。数据将会进行刷盘来进行容错。kafka可以让生产者等待消息写入的应答,这样能保证消息完全被复制和持久化后才算完成。持久化的数据结构具有很强的拓展性,不管你的消息是多小或者多大。客户端可以自己控制他们的读取位置,所以你可以认为kafka就是一个特殊目的的分布式文件系统,拥有高性能、低延迟的日志存储、复制容灾和传播特性。

流式处理

只是读取、写入和存储流式数据是不够的,目的是能够实时流式处理。kafka的流式处理器可以是任何持续从输入topic中进行加工后生产到输出topic。例如,在一个销售的应用中,销售情况和出货量作为输入流,输出流为计算后的排序和价格调整。比如应用于处理无序数据,在代码更改时重新处理输入,执行有状态计算

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值