一Kafka
- 是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统
- 可以当做MQ系统
- 用于web/nginx日志、访问日志,消息服务等等
- 主要应用场景:日志收集系统和消息系统。
- 作为一个集群运行在一个或多个服务器上
- kafka集群存储的消息是以topic(主题)为类别记录的
- 每个消息(也叫记录record)是由一个key,一个value和时间戳构成。
二主要设计目标
- 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能。
- 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输。
- 支持Kafka Server间的消息分区,及分布式消费,同时保证每个partition内的消息顺序传输。
- 同时支持离线数据处理和实时数据处理。
- Scale out:支持在线水平扩展
三术语
Topic
(Topic):Kafka将消息种子(Feed)分门别类,每一类的消息称之为一个主题
Producer
主题生产者(Kafka topic producer):发布消息
Consumer
主题消费者(consumers):订阅消息
Broker
- 已发布的消息保存在一组服务器中,称之为Kafka集群。
- 集群中的每一个服务器都是一个代理(Broker).
- 消费者可以订阅一个或多个主题(topic),并从Broker拉数据,从而消费这些已发布的消息