文章目录


一、简介


​https://kafka.apache.org/intro​


(1)问题


1. 什么是 ​​Kafka​​?

Apache Kafka® is a distributed streaming platform.

​Kafka​​是一个分布式流处理平台。

  1. 可当作消息引擎系统(Message System)

引擎:具备某种传输和处理的能力

其实不管是消息引擎还是流式处理平台,​​Kafka​​的处理流程从未发生质的变化:

如图:

【Kafka】之 简介(一)_解耦

  1. 可作为 存储系统

写入到 ​​kafka​​​中的数据是落地到了磁盘上,并且有冗余备份,​​kafka​​​允许​​producer​​​等待确认,通过配置,可实现直到所有的​​replication​​完成复制才算写入成功,这样可保证数据的可用性。


2. ​​Kafka​​核心功能是什么?

  1. 高性能的消息发送
  2. 高性能的消息消费


3. ​​Kafka​​有什么用?

  1. 解耦

生产者与消费者解耦

  1. 冗余

具有持久化能力,可规避消息处理前丢失的风险

  1. 扩展

消息系统是统一的数据接口,各系统可独立扩展

  1. 峰值处理能力

支持峰值流量,业务系统可根据处理能力从消息系统中获取并处理对应量的请求

  1. 可恢复性

系统中部分组件失效并不会影响整个系统,它恢复后仍然可以从消息系统中获取并处理数据

  1. 异步通信

在不需要立即处理请求的场景下,可以将请求放入消息系统,合适的时候再处理


4. ​​Kafka​​有什么特性?

​Kafka​​设计之初旨在提供3个方面的功能特性:

  • 为生产者和消费者提供一套简单 API
  • 降低网络传输和磁盘存储开销
  • 具有高伸缩性架构

A streaming platform has three key capabilities:

  • Publish and subscribe to streams of records, similar to a message queue or enterprise messaging system.
  • Store streams of records in a fault-tolerant durable way.
  • Process streams of records as they occur.

流处理系统有这三种能力:

  • 发布和订阅流式信息,近似于消息队列或企业消息传递系统
  • 在容错环境下存储流式信息
  • 处理流式信息


5. 适用场景?

  1. 消息传输
    解耦和生产者和消费者、缓存消息等。
    代替传统的消息总线(message bus)或消息代理(message broker)
  2. 网站行为日志追踪
    ​​​Kafka​​​经常被用来记录​​web​​​用户或者​​app​​用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后订阅者通过订阅这些topic来做实时的监控分析,或者装载到hadoop、数据仓库中做离线分析和挖掘。
  3. 审计数据收集
    便捷地对多路消息进行实时收集,同时持久化。
    满足对关键的操作和运维进行监控和审计。
  4. 日志收集
    一个公司可以用​​​Kafka​​​可以收集各种服务的 log,通过​​kafka​​​以统一接口服务的方式开放给各种 ​​consumer​​​,例如​​Hadoop​​​、​​HBase​​​、​​Solr​​​等。
    同时保持了低延时的特点。
  5. Event Sourcing(事件源)
    ​​​Event Sourcing​​实际上是领域驱动设计(DDD)的名称,使用事件序列来表示状态变更。
  6. 流式处理
    比如​​​spark streaming​​​和 ​​storm​