Kafka简介

原理

Kafka简介_第1张图片

Kafka is a distributed, partitioned, replicated commit logservice。它提供了类似于JMS的特性,但是在实现上完全不同,此外它并不是JMS规范的实现。kafka对消息保存时根据Topic进行归类,发送消息者成为Producer,消息接受者成为Consumer,此外kafka集群有多个kafka实例组成,每个实例()成为broker。无论是kafka集群,还是producer和consumer都依赖于zookeeper来保证系统可用性集群保存一些meta信息。

特点

  • 消息持久化:要从大数据中获取真正的价值,那么不能丢失任何信息。Apache Kafka设计上是时间复杂度O(1)的磁盘结构,它提供了常量时间的性能,即使是存储海量的信息(TB级)。
  • 高吞吐:Kafka的设计是工作在标准硬件之上,支持每秒数百万的消息。
  • 分布式:Kafka明确支持在Kafka服务器上的消息分区,以及在消费机器集群上的分发消费,维护每个分区的排序语义。
  • 多客户端支持:Kafka系统支持与来自不同平台(如java、.NET、PHP、Ruby或Python等)的客户端相集成。

使用场景

  • 消息系统
    对于一些常规的消息系统,kafka是个不错的选择;partitons/replication和容错,可以使kafka具有良好的扩展性和性能优势.不过到目前为止,我们应该很清楚认到,kafka并没有提供JMS中的”事务性”、”消息传输担保(消息确认机制)”、”消息分组”等企业级特性;kafka只能使用作为”常规”的消息系统,在一定程度上,尚未确保消息的发送与接收绝对可靠(比如,消息重发,消息发送丢失等)。
  • 网站活性跟踪
    kafka可以作为”网站活性跟踪”的最佳工具;可以将网页/用户操作等信息发送到kafka中,并实时监控或者离线统计分析等。
  • 监控数据收集
    Kafka通常被用于可操作的监控数据。这包括从分布式应用程序来的聚合统计用来生产集中的运营数据提要。
  • 日志收集
    Kafka的特性决定它非常适合作为”日志收集中心”;application可以将操作日志”批量”、”异步”的发送到kafka集群中,而不是保存在本地或者DB中;kafka可以批量提交消息/压缩消息等,这对producer端而言,几乎感觉不到性能的开支。此时consumer端可以使hadoop等其他系统化的存储和分析系统。

kafka官网文档

你可能感兴趣的:(消息中间件,JMS)