石景山网站制作案例,wordpress文章显示摘要,3点新闻发布,法国vps 安装wordpress一、简介
Kafka是一个分布式的、分区的、多副本的消息发布-订阅系统#xff0c;它提供了类似于JMS的特性#xff0c;但在设计上完全不同#xff0c;它具有消息持久化、高吞吐、分布式、多客户端支持、实时等特性#xff0c;适用于离线和在线的消息消费#xff0c;如常规的…一、简介
Kafka是一个分布式的、分区的、多副本的消息发布-订阅系统它提供了类似于JMS的特性但在设计上完全不同它具有消息持久化、高吞吐、分布式、多客户端支持、实时等特性适用于离线和在线的消息消费如常规的消息收集、网站活性跟踪、聚合统计系统运营数据监控数据、日志收集等大量数据的互联网服务的数据收集场景。
二、Kafka结构
生产者Producer将消息发布到Kafka主题Topic上消费者Consumer订阅这些主题并消费这些消息。在Kafka集群上一个服务器称为一个Broker。对于每一个主题Kafka集群保留一个用于缩放、并行化和容错性的分区Partition。每个分区是一个有序、不可变的消息序列并不断追加到提交日志文件。分区的消息每个也被赋值一个称为偏移顺序Offset的序列化编号。如下图所示 名称说明Broker在Kafka集群上一个服务器称为一个Broker。Topic/主题一个Topic就是一个类别或者一个可订阅的条目名称也即一类消息。一个主题可以有多个分区这些分区可以作为并行的一个单元。Partition/分区是一个有序的、不可变的消息序列这个序列可以被连续地追加—个提交日志。在分区内的每条消息都有一个有序的ID号这个ID号被称为偏移Offset这个偏移量可以唯一确定每条消息在分区内的位置。Producer/生产者向Kafka的主题发布消息。Consumer/消费者向Topic订阅并且接收发布到这些Topic的消息
各模块间关系如下图所示。 消费者使用一个消费者组名称来标记自己主题的每个消息被传递给每个订阅消费者组中的一个消费者。如果所有的消费者实例都属于同样的消费组它们就以传统队列负载均衡方式工作。如上图中Consumer1与Consumer2之间为负载均衡方式Consumer3、Consumer4、Consumer5与Consumer6之间为负载均衡方式。如果消费者实例都属于不同的消费组则消息会被广播给所有消费者。如上图中Topic1中的消息同时会广播到Consumer Group1与Consumer Group2中。
关于Kafka架构和详细原理介绍请参见https://kafka.apache.org/24/documentation.html。
三、Kafka原理
消息可靠性
Kafka Broker收到消息后会持久化到磁盘同时Topic的每个Partition有自己的Replica备份每个Replica分布在不同的Broker节点上以保证当某一节点失效时可以自动故障转移到可用消息节点。
高吞吐量
Kafka通过以下方式提供系统高吞吐量
数据磁盘持久化消息不在内存中cache直接写入到磁盘充分利用磁盘的顺序读写性能。Zero-copy减少IO操作步骤。数据批量发送提高网络利用率。Topic划分为多个Partition提高并发度可以由多个Producer、Consumer数目之间的关系并发来读、写消息。Producer根据用户指定的算法将消息发送到指定的Partition。
消息订阅-通知机制
消费者对感兴趣的主题进行订阅并采取pull的方式消费数据使得消费者可以根据其消费能力自主地控制消息拉取速度同时可以根据自身情况自主选择消费模式例如批量、重复消费从尾端开始消费等另外需要消费者自己负责维护其自身消息的消费记录。
可扩展性
当在Kafka集群中可通过增加Broker节点以提供更大容量时。新增的Broker会向ZooKeeper注册而Producer及Consumer会及时从ZooKeeper感知到这些变化并及时作出调整。
四、Kafka开源特性
可靠性
提供At-Least OnceAt-Most OnceExactly Once消息可靠传递。消息被处理的状态是在Consumer端维护需要结合应用层实现Exactly Once。
高吞吐
同时为发布和订阅提供高吞吐量。
持久化
将消息持久化到磁盘因此可用于批量消费以及实时应用程序。通过将数据持久化到硬盘以及replication防止数据丢失。
分布式
分布式系统易于向外扩展。所有的Producer、Broker和Consumer都支持部署多个形成分布式的集群。无需停机即可扩展系统。
五、Kafka UI
Kafka UI提供Kafka Web服务通过界面展示Kafka集群中Broker、Topic、Partition、Consumer等功能模块的基本信息同时提供Kafka服务常用命令的界面操作入口。该功能作为Kafka Manager替代提供安全的符合安全规范的Kafka Web服务。
通过Kafka UI可以进行以下操作
支持界面检查集群状态主题消费者偏移量分区副本节点支持界面执行集群内分区重新分配支持界面选择配置创建主题支持界面删除主题Kafka服务设置了delete.topic.enable true支持为已有主题增加分区支持更新现有主题的配置可以为分区级别和主题级别度量标准启用JMX查询
六、MirrorMaker
MirrorMaker是一个用于主备集群Kafka服务之间的数据同步工具。该工具从主集群中消费并生产到备集群在备集群上提供一个主集群中Kafka服务的数据副本。
七、与其他大数据组件关系
Kafka作为一个消息发布-订阅系统为整个大数据平台多个子系统之间数据的传递提供了高速数据流转方式。可以实时接受来自外部的消息并提供给在线以及离线业务进行处理。具体的关系如下图所示