本篇内容主要讲解“Kafka的功能有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Kafka的功能有哪些”吧!
创新互联公司从2013年成立,是专业互联网技术服务公司,拥有项目成都网站制作、成都做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元定日做网站,已为上家服务,为定日各地企业和个人服务,联系电话:18980820575
一、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的拓扑关系图如下所示:
一个Topic可以认为是一类消息,每个topic将被分成多个partition(区),每个partition在存储层面是append log文件。任何发布到此partition的消息都会被直接追加到log文件的尾部,每条消息在文件中的位置称为offset(偏移量),offset为一个long型数字,它是唯一标记一条消息,它唯一的标记一条消息。
每一条消息被发送到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的功能有哪些”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!