欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

kafka优点

程序员文章站 2022-07-14 07:58:59
...

Kafka是由LinkedIn开发的一个分布式的消息系统,同时支持离线和在线日志处理。

Kafka框架本身使用Scala编写,因其可水平扩展和高吞吐率而被广泛使用。目前,越来越多的开源分布式处理系统如Cloudera、Apache Storm、Spark都支持与Kafka集成。

Kafka的持久化方案是写入磁盘,虽然内存读写速度明显快过磁盘读写速度,但Kafka却通过线性读写的方式实现快速读写。

Kafka保存消息时根据topic进行归类,消息的发布者称为producer,消息的订阅者称为consumer,每个Kafka实例称为broker(中间的存储阵列)。后三者都通过Zookeeper进行协调,也就是

1、启动Zookeeper的server
2、启动Kafka的server
3、Producer生产数据,然后通过Zookeeper找到broker,再将数据发布到broker进行保存
4、Consumer通过Zookeeper找到broker,然后再消费数据

kafka优点

Topic

kafka优点
每个Topic被分成多个partition(区)。每条消息在partition中的位置称为offset(偏移量),类型为long型数字。消息即使被消费了,也不会被立即删除,而是根据broker里的设置,保存一定时间后再清除。比如log文件设置存储两天,那两天后消息不论是否被消费,都会被清除。

Consumer

每个consumer属于一个consumer group。在Kafka中,一个partition的消息只会被group中的一个consumer消费;可以认为一个group就是一个“订阅者”。一个Topic中的每个partition只会被一个“订阅者”中的一个consumer消费。

Kafka优点

  • 解耦和扩展性
    消息队列中间件都有着解耦的功能,解耦也意味着扩展性。将复杂的代码逻辑移至到远端程序上,而源程序本身只需要发送一个消息,通知远端程序消费。两边的程序可以独立扩展、修改,不相互影响。

  • 冗余
    Kafka会将partition中的消息存储一段时间,消息即使被消费了,也不会被立即删除,通过这一方式规避了数据丢失风险。

  • 削峰填谷
    我们不能以一个应用系统峰值流量所需要的资源来部署服务,因为这样的突发流量并不常见,所以这会是巨大的浪费。那么,系统具有”削峰填谷”的能力是至关重要的。使用消息队列将峰值时的流量请求持久化,待稍后流量正常或低谷时再取出消费。

  • 容错性
    当消费者组中的其中一台或几台消费者实例挂掉,它们消费的partition消息会被转移到同组的其它存活着的消费者实例。系统的一部分组件失效时,不会影响到整个系统。

  • 顺序保证
    Kafka保证一个Partition内的消息的有序性。