kafka分析

本文深入探讨Kafka,一个分布式消息系统,以其高性能、持久化能力和消息顺序保证著称。介绍了Kafka的基本概念,如broker、topic、partition、producer和consumer,以及其架构中的push/pull模式、partition数据结构、replication和leader选举。文章还讨论了Kafka在解耦、冗余、流量削峰和异步处理等方面的角色,并概述了安装和测试过程。
摘要由CSDN通过智能技术生成

kafka分析

kafka简介

Kafka是由LinkedIn开发的一个分布式的、基于发布/订阅消息系统,使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用。
Kafka设计初衷:处理日志。
活动流数据是几乎所有站点在对其网站使用情况做报表时都要用到的数据中最常规的部分。活动数据包括页面访问量(Page View)、被查看内容方面的信息以及搜索情况等内容。这种数据通常的处理方式是先把各种活动以日志的形式写入某种文件,然后周期性地对这些文件进行统计分析。运营数据指的是服务器的性能数据(CPU、IO使用率、请求时间、服务日志等等数据)。运营数据的统计方法种类繁多。近年来,活动和运营数据处理已经成为了网站软件产品特性中一个至关重要的组成部分,这就需要一套稍微更加复杂的基础设施对其提供支持。
Kafka主要特点:
1、以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间复杂度的访问性能。
2、高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条以上消息的传输。
3、支持Kafka Server间的消息分区,及分布式消费,同时保证每个Partition内的消息顺序传输。
4、同时支持离线数据处理和实时数据处理。
5、Scale out:支持在线水平扩展。

官网介绍关键字:消息系统、发布订阅、实时、分布式、极快。
官网描述

消息队列的作用

1、解耦
这里写图片描述
不同系统之间并不直接调用,耦合度降低了。
2、冗余
消息队列通常会采用”插入-获取-删除”范式,在把一个消息从队列中删除之前,需要你的处理系统明确的指出该消息已经被处理完毕,从而确保你的数据被安全的保存直到你使用完毕。
当处理数据的过程中发生失败时,数据不会丢失,规避了数据丢失的风险。
3、流量削峰
这里写图片描述
在访问量剧增的情况下,应用仍然需要继续发挥作用,但是这样的突发流量并不常见;如果为以能处理这类峰值访问为标准来投入资源随时待命无疑是巨大的浪费。使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。
4、异步处理
这里写图片描述
在某些场景中,使用异步处理可以提高用户体验。

专业名词

Broker
Kafka集群包含一个或多个服务器,这种服务器被称为broker
Topic
每条发布到Kafka集群的消息都有一个类别,这个类别被称为topic。(物理上不同topic的消息分开存储,逻辑上一个topic的消息虽然保存于一个或多个broker上但用户只需指定消息的topic即可生产或消费数据而不必关心数据存于何处)
Partition
parition是物理上的概念,每个topic包含一个或多个partition,创建topic时可指定parition数量。每个partition对应于一个文件夹,该文件夹下存储该partition的数据和索引文件
Producer
负责发布消息到Kafka broker
Consumer</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值