kafka 消息队列
kafka是使用Java和Scala编写的一个快速可扩展的高吞吐量的分布式消息队列系统。 kafka将数据持久化存储到磁盘上,自带分区和副本机制,因而具有较好的持久化保证。 但是kafka的消息消费没有确认机制,可能因为consumer崩溃导致消息没有完成处理。因此不建议将kafka用于一致性较高的业务场景,kafka经常被用做日志收集和数据仓库之间的缓存。 比如将网站的浏览日志缓存到kafka,然后从kafka中取出批量写入ElasticSearch, Hive或者HBase等数据仓库中。这样做可以极大的减轻离线分析系统的负载。 架构简介 kafka架构中有下列角色参与: broker: kafka 集群中的服务器实例称为broker producer: 向broker发送消息的客户端 consumer: 向从borker中读取消息的客户端 zookeeper: 存储集群状态的注册中心,不处理具体消息。在负载均衡和集群扩展等功能中有重要作用。 接下来介绍kafka的逻辑模型: message: 消息是kafka通信的基本单元 topic: topic 在逻辑结构上类似于队列, 每条消息都属于一个 topic。 consumer group: 每个group中可以包含若干 consumer 实例,每个topic可以被多个consumer group 订阅。 消费者组拥有唯一的