kafka

理解

1. 消息中间件、消息队列

实时一般都需要消息中间件

{1} 为什么需要消息中间件,消息中间件在架构中的位置及作用?

产生数据的终端很多,比如pc、手机、智能设备。这些先到日志采集服务器,再到kafka,再到实时计算框架。那为啥不把日志直接push到实时计算框架呢?那会有问题:
比如flink挂了,数据没有记录偏移量,那知道重启期间的数据就丢失了。
比如分布式消费时,没有组的概念,则多个消费者消费同一个topic的数据,会产生消费重叠
所以消息队列的作用:

  1. 流量削峰
  2. 解耦
  3. 异步
  4. 消息通讯:发布订阅模式
  5. 日志处理
    1. 接入数据
    2. 将数据快速、安全、临时存储,保证数据可靠性
      比如kafka默认存7天
    3. 将数据推送给下游

2. kafka特点:

  1. 高吞吐:读写速度快
  2. 高并发
    1. 分布式消费,有消费者组的概念
  3. 高可用:某些节点宕机,服务仍可用
    1. 多副本
    2. 可管理偏移量
  4. 可扩展:不停服情况下扩展

3. 对比

  • hdfs
    hdfs吞吐低,不适合做消息中间件
    hdfs用来做离线存储
  • RocketMQ
  • MateQ

你可能感兴趣的:(kafka)