简介:Kafka是一种高吞吐量的分布式发布订阅消息系统,可以提供消息的持久化,即使数以TB的消息存储也能够保持长时间的稳定性能。同时Kafka也支持Hadoop并行数据加载。该项目的目标是为处理实时数据提供一个统一,高通量,低等待的平台。



 



kafka中几个基本的术语:



  • Topic(主题)---Kafka按照分类对信息源进行维护。实际应用中一个业务一个topic
  • Producer(生产者)---把发送消息到topic中的进程叫做生产者
  • Consumer(消费者)---把从topic中订阅消息的进程叫做消费者
  • Broker(Kafka服务)---Kafka集群中的每个服务叫做broker




kafka 消息未消费到_json

 




服务端和客户端的通信是常见的TCP协议。



    kafka是一个基于分布式的消息发布-订阅系统,它被设计成快速,可扩展的,持久的。与其他消息发布-订阅类似。Kafka在主题中保存消息的信息。生产者向主题写入数据,消费者从主题读取数据。由于Kafka的特性是支持分布式的,同时也是基于分布式的,所以主题也是可以在多个节点上被分区和覆盖的。



    信息是一个字节数组,可以在这些字节数组中存储任何对象,支持的数据格式包括string,JSON,Avro。Kafka通过给每个消息绑定一个键值的方式来保证生产者可以把所有的消息发送到指定位置。属于某一个消费者群组的消费者订阅了一个主题,通过该订阅,消费者可以跨节点的接收所有与该主题相关的消息,每一个消息只会发送给群组的每一个消费者,所有拥有相同键值消息都会被确保发给这一个消费者。



    Kafka设计中将每一个主题分区当做一个具有顺序排列的日志。同处于一个分区中的消息都被设置了一个唯一的偏移量。Kafka只会保持跟踪未读消息一旦消息被置为已读,Kafka就不回去管理它。Kafka的生产者负责在消息队列中对生产出来的消息保证一定时间的占有,消费者负责追踪每一个主题(可以理解为一个日志通道)的消息并及时获取他们。基于这样的设计,Kafka可以在消息队列中保存大量的开销很小的数据,并且支持大量的消费者订阅。



 



<<分布式系统常用技术及案例分析>>