温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Kafka的功能有哪些

发布时间:2021-07-10 14:10:26 来源:亿速云 阅读:576 作者:chen 栏目:编程语言

本篇内容主要讲解“Kafka的功能有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Kafka的功能有哪些”吧!

一、kafka的特性

1.高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, consumer group 对partition进行consume操作。

2.可扩展性:kafka集群支持热扩展

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

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

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

二、kafka的场景

 1.消息队列:对于一些常规的消息系统,kafka是个不错的选择;partitons/replication和容错,可以使kafka具有良好的扩展性和性能优势。

2.kafka可以作为"网站活性跟踪"的最佳工具,可以将网页/用户操作等信息发送到kafka中,并实时监控,或者离线统计分析等行为。

3.日志收集: application可以将操作日志"批量""异步"的发送到kafka集群中,而不是保存在本地或者DB中。kafka可以批量提交消息/压缩消息等,这对producer端而言,几乎感觉不到性能的开支,此时consumer端可以使hadoop等其他系统化的存储和分析系统。

三、kafka介绍

kafka的拓扑关系图如下所示:

Kafka的功能有哪些

kafka由producer、broker、comsumer和zookeeper几部分构成,kafka对消息保存时根据Topic进行归类,发送消息者成为Producer,消息接受者成为Cosumer,此外kafka集群有多个kafka实例组成,每个实例(server)称为broker。
无论是kafka集群,还是producer和consumer都依赖于zookeeper来保证系统可用性集群保存一些meta信息。

1.Topic/logs

  一个Topic可以认为是一类消息,每个topic将被分成多个partition(区),每个partition在存储层面是append log文件。任何发布到此partition的消息都会被直接追加到log文件的尾部,每条消息在文件中的位置称为offset(偏移量),offset为一个long型数字,它是唯一标记一条消息,它唯一的标记一条消息。

Kafka的功能有哪些

每一条消息被发送到broker中,会根据partition规则选择被存储到哪一个partition。如果partition规则设置的合理,所有消息可以均匀分布到不同的partition里,这样就实现了水平扩展。(如果一个topic对应一个文件,那这个文件所在的机器I/O将会成为这个topic的性能瓶颈,而partition解决了这个问题)。

备注:可以通过配置文件中的参数来配置partition的数量 num.partitions=3 

2.Producers

    Producer将消息发布到指定的Topic中,同时Producer也能决定将此消息归属于哪个partition,比如基于"round-robin"方式。

3.Consumers

   每个consumer属于一个consumer group,反过来说,每个group中可以有多个consumer。发送到Topic的消息,只会被订阅此Topic的每个group中的一个consumer消费。

    如果所有的consumer都具有相同的group,这种情况和queue模式很像,消息将会在consumers之间负载均衡

    如果所有的consumer都具有不同的group,那这就是"发布-订阅",消息将会广播给所有的消费者。

    在kafka中,一个partition中的消息只会被group中的一个consumer消费。

每个group中consumer消息消费互相独立;我们可以认为一个group是一个"订阅"者,一个Topic中的每个partions,只会被一个"订阅者"中的一个consumer消费,不过一个consumer可以消费多个partitions中的消息。kafka只能保证一个partition中的消息被某个consumer消费时,消息是顺序的。而不同的partition之间的消息的顺序性是保证不了的。

4.zookeeper

      zookeeper保存consumer和producer状态信息,kafka集群几乎不需要维护任何consumer和producer状态信息,这样producer和comsumer的实现就很轻量级,他们可以轻易的离开集群而不会对整个集群产生额外的影响。

zookeeper协调控制的事情:1. 管理broker与consumer的动态加入与离开。(Producer不需要管理,随便一台计算机都可以作为Producer向Kakfa Broker发消息)2. 触发负载均衡,当broker或consumer加入或离开时会触发负载均衡算法,使得一   个consumer group内的多个consumer的消费负载平衡。(因为一个comsumer消费一个或多个partition,一个partition只能被一个consumer消费)3.  维护消费关系及每个partition的消费信息。实现方式:1. 每个broker启动后会在zookeeper上注册一个临时的broker registry,包含broker的ip地址和端口号,所存储的topics和partitions信息。2. 每个consumer启动后会在zookeeper上注册一个临时的consumer registry:包含consumer所属的consumer group以及订阅的topics。3. 每个consumer group关联一个临时的owner registry和一个持久的offset registry。对于被订阅的每个partition包含一个owner registry,内容为订阅这个partition的consumer id;同时包含一个offset registry,内容为上一次订阅的offset。

到此,相信大家对“Kafka的功能有哪些”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI