管理进化

kafka原理


Kafka由 linked-in 开源,kafka即是解决如何处理当今社会各种应用系统诸如商业、社交、搜索、浏览等像信息工厂一样不断的生产出各种信息这类问题的一个框架,它实现了生产者和消费者之间的无缝连接。

一、 Kafka的特性

①   高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒

②   可扩展性:kafka集群支持热扩展

③   持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失

④   容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)

高并发:支持数千个客户端同时读写

二、 Kafka一些重要设计思想

①   Consumergroup:各个consumer可以组成一个组,每个消息只能被组中的一个consumer消费,如果一个消息可以被多个consumer消费的话,那么这些consumer必须在不同的组。

②   Consumergroup:各个consumer可以组成一个组,每个消息只能被组中的一个consumer消费,如果一个消息可以被多个consumer消费的话,那么这些consumer必须在不同的组。

③   Consumergroup:各个consumer可以组成一个组,每个消息只能被组中的一个consumer消费,如果一个消息可以被多个consumer消费的话,那么这些consumer必须在不同的组。

④   Consumergroup:各个consumer可以组成一个组,每个消息只能被组中的一个consumer消费,如果一个消息可以被多个consumer消费的话,那么这些consumer必须在不同的组。

三、 Kafka的好处

①   消费者可以根据需求,灵活指定offset消费。

②   保证了消息不变性,为并发消费提供了线程安全的保证。每个consumer都保留自己的offset,互相之间不干扰,不存在线程安全问题。

③   消息访问的并行高效性。每个topic中的消息被组织成多个partition,partition均匀分配到集群server中。生产、消费消息的时候,会被路由到指定partition,减少竞争,增加了程序的并行能力。

④   增加消息系统的可伸缩性。每个topic中保留的消息可能非常庞大,通过partition将消息切分成多个子消息,并通过负责均衡策略将partition分配到不同server。这样当机器负载满的时候,通过扩容可以将消息重新均匀分配。

⑤   保证消息可靠性。消息消费完成之后不会删除,可以通过重置offset重新消费,保证了消息不会丢失。

⑥   灵活的持久化策略。可以通过指定时间段(如最近一天)来保存消息,节省broker存储空间。

智齿客服