大数据-52 Kafka 基础概念和基本架构 核心API介绍 应用场景等

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 大数据-52 Kafka 基础概念和基本架构 核心API介绍 应用场景等

点一下关注吧!!!非常感谢!!持续更新!!!

目前已经更新到了:

Hadoop(已更完)

HDFS(已更完)

MapReduce(已更完)

Hive(已更完)

Flume(已更完)

Sqoop(已更完)

Zookeeper(已更完)

HBase(已更完)

Redis (已更完)

Kafka (正在更新…)

章节内容

上节我们完成了如下的内容:


Redis高可用 CAP-AP

Redis主从模式

Redis一主一从 一主多从

Redis哨兵模式

Redis哨兵模式 docker-compose测试

终于!我们更新完了Redis!现在我们开始更新Kafka。


Kafka介绍

Kafka最初是由Linkedin公司开发,是一个分布式、分区的、多副本、多生产者、多消费者、基于ZK的。

常见用于 Nginx 日志、消息服务。在2010年贡献给了Apache基金会成为顶级开源项目。


Kafka主要设计目标如下:


以时间复杂度为O(1)的方式提供消息持久化的能力,即使TB级数据也能保证常数访问。

高吞吐率,即使在非常廉价的机器上也可以有每秒100K条消息的传输

支持KafkaServer间的消息分区,及分布式消费,同时保证每个Partition内的消息顺序传输。

同时支持离线数据处理和实时数据处理

支持在线水平扩展

生产消费图

消息模式

主流的消息传递有两种方式:点对点和发布订阅,Kafka属于 发布-订阅 模式的一种

对于消息中间件,消息会分为:拉、推。Kafka消息只有拉取,没有推送。(可以用轮询实现推送)


Kafka在一个或多个可以跨域多个数据中心的服务器上作为集群运行

Kafka集群按照主题分类管理,一个主题可以多个分区,一个分区可以有多个副本分区

每个记录由一个键,一个值和一个时间戳组成。

核心API

ProducerAPI:允许应用程序记录流发布到一个或者多个Kafka主题

ConsumerAPI:允许应用程序订阅一个或多个主题并处理并生成记录流

StreamAPI:允许应用程序充当流处理器,使用一个或多个主题的输入流,并生成一个或者多个输出流。从而有效的将输入流转换为输出流。

ConnectorAPI:允许构建和运行将Kafka主题连接到现有应用程序或数据系统的可重用生产者或使用者

Kafka优势

高吞吐:单机每秒处理几十百万的消息量,即使存储了TB消息,也能够稳定运行

高性能:单节点支持上千个客户端,并保证零停机和零数据丢失。

持久化数据存储:将消息持久化,通过数据持久化到磁盘以及replication防止数据丢失。

分布式系统,易于向外扩展。所有Producer和Consumer等都可以有多个,分布式的,无需停机扩展。

Kafka是分布式、分区、复制、容错的

客户端状态维护:消息被处理的状态在Consumer端维护,而不是由Server维护,失败能够自动平衡

支持online和offline场景

支持多种语言

应用场景

日志收集:可以用Kakfa进行日志的收集

消息系统:解耦生产者和消费者

用户活动跟踪:用户行为被记录到Kafka中,消费者取到之后对用户的数据进行分析处理

运营指标:记录运营监控数据、报警和报告

流式处理:比如SparkStream、Storm

基本架构

消息和批次

Kafka的数据单元称为消息,可以把消息看成是数据库里的一个数据行或者一条记录。消息由字节组组成。

消息由键,键也是一个字节数组,当消息以一种可控的方式写入不同的分区时,会用到键。

为了提高效率,消息被分批写入Kafka,批次就是一组消息,这些消息属于同一个主题和分区。

把消息分批次可以减少网络开销,批次越大,单位时间内处理的消息就越多,单个消息传输的时间久越长。

消息模式

消息模式(schema)有很多可用的选项。如 JSON、XML,他们缺乏强类型的处理能力。

Kafka的开发者喜欢使用ApacheAvro,提供了一种紧凑序列格式化,模式和消息体分开。当模式发生变化时,不需要重新生成代码,它还支持强类型和模式进化。

数据格式一致性对Kafka很重要,因为它消除了消息读写操作之间的耦合性。

主题和分区

Kafka的消息通过主题进行分类,主题可比数据库表或者文件系统里的文件夹。主题可以被分为若干区域,一个主题通过分区分布于Kafka集群中,提供了横向扩展的能力。


生产和消费者

生产者创建消息,消费者消费消息。

生产者在默认的情况下会把消息均衡的发布到主题的所有分区上:


直接指定消息的分区

根据消息的key散列取模得出分区

轮询指定分区

消费者通过偏移量来区分已经读过的消息,从而消费消息。

消费者是消费组的一部分,消费组保证每个分区只有一个消费者使用,避免重复消费。

Broker 和 集群

一个独立的Kafka服务器成为Broker,Broker接受来自生产者的消息,为消息设置偏移量,并提交到磁盘进行保存。

Broker为消费者提供服务,对读取分区的请求做出响应,返回已提交到磁盘上的消息。

单个Broker可以轻松处理数千个分区以及每秒百万的消息量。

每一个集群都有一个Broker是集群控制器(自动从集群的活跃成员中选举出来)

控制器负责管理工作:


将分区分配给Broker

监控Broker

集群中一个分区属于一个Broker,该Broker称为分区首领。


一个分区可以分配给多个Broker,此时会发生分区复制。

分区的复制提高了消息冗余、高可用。

副本分区不负责处理消息的读写。



目录
相关文章
|
17天前
|
缓存 负载均衡 JavaScript
探索微服务架构下的API网关模式
【10月更文挑战第37天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务的航向。它不仅是客户端请求的集散地,更是后端微服务的守门人。本文将深入探讨API网关的设计哲学、核心功能以及它在微服务生态中扮演的角色,同时通过实际代码示例,揭示如何实现一个高效、可靠的API网关。
|
19天前
|
大数据
【赵渝强老师】大数据主从架构的单点故障
大数据体系架构中,核心组件采用主从架构,存在单点故障问题。为提高系统可用性,需实现高可用(HA)架构,通常借助ZooKeeper来实现。ZooKeeper提供配置维护、分布式同步等功能,确保集群稳定运行。下图展示了基于ZooKeeper的HDFS HA架构。
|
2月前
|
SQL 存储 分布式计算
ODPS技术架构深度剖析与实战指南——从零开始掌握阿里巴巴大数据处理平台的核心要义与应用技巧
【10月更文挑战第9天】ODPS是阿里巴巴推出的大数据处理平台,支持海量数据的存储与计算,适用于数据仓库、数据挖掘等场景。其核心组件涵盖数据存储、计算引擎、任务调度、资源管理和用户界面,确保数据处理的稳定、安全与高效。通过创建项目、上传数据、编写SQL或MapReduce程序,用户可轻松完成复杂的数据处理任务。示例展示了如何使用ODPS SQL查询每个用户的最早登录时间。
101 1
|
15天前
|
消息中间件 缓存 架构师
关于 Kafka 高性能架构,这篇说得最全面,建议收藏!
Kafka 是一个高吞吐量、高性能的消息中间件,关于 Kafka 高性能背后的实现,是大厂面试高频问题。本篇全面详解 Kafka 高性能背后的实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
关于 Kafka 高性能架构,这篇说得最全面,建议收藏!
|
19天前
|
SQL 数据采集 分布式计算
【赵渝强老师】基于大数据组件的平台架构
本文介绍了大数据平台的总体架构及各层的功能。大数据平台架构分为五层:数据源层、数据采集层、大数据平台层、数据仓库层和应用层。其中,大数据平台层为核心,负责数据的存储和计算,支持离线和实时数据处理。数据仓库层则基于大数据平台构建数据模型,应用层则利用这些模型实现具体的应用场景。文中还提供了Lambda和Kappa架构的视频讲解。
【赵渝强老师】基于大数据组件的平台架构
|
23天前
|
监控 安全 应用服务中间件
微服务架构下的API网关设计策略与实践####
本文深入探讨了在微服务架构下,API网关作为系统统一入口点的设计策略、实现细节及其在实际应用中的最佳实践。不同于传统的摘要概述,本部分将直接以一段精简的代码示例作为引子,展示一个基于NGINX的简单API网关配置片段,随后引出文章的核心内容,旨在通过具体实例激发读者兴趣,快速理解API网关在微服务架构中的关键作用及实现方式。 ```nginx server { listen 80; server_name api.example.com; location / { proxy_pass http://backend_service:5000;
|
25天前
|
缓存 监控 API
探索微服务架构中的API网关模式
随着微服务架构的兴起,API网关成为管理和服务间交互的关键组件。本文通过在线零售公司的案例,探讨了API网关在路由管理、认证授权、限流缓存、日志监控和协议转换等方面的优势,并详细介绍了使用Kong实现API网关的具体步骤。
45 3
|
25天前
|
存储 缓存 监控
探索微服务架构中的API网关模式
探索微服务架构中的API网关模式
47 2
|
19天前
|
消息中间件 存储 负载均衡
【赵渝强老师】Kafka的体系架构
Kafka消息系统是一个分布式系统,包含生产者、消费者、Broker和ZooKeeper。生产者将消息发送到Broker,消费者从Broker中拉取消息并处理。主题按分区存储,每个分区有唯一的偏移量地址,确保消息顺序。Kafka支持负载均衡和容错。视频讲解和术语表进一步帮助理解。
|
2月前
|
缓存 监控 API
微服务架构下RESTful风格api实践中,我为何抛弃了路由参数 - 用简单设计来提速
本文探讨了 RESTful API 设计中的两种路径方案:动态路径和固定路径。动态路径通过路径参数实现资源的 CRUD 操作,而固定路径则通过查询参数和不同的 HTTP 方法实现相同功能。固定路径设计提高了安全性、路由匹配速度和 API 的可维护性,但也可能增加 URL 长度并降低表达灵活性。通过对比测试,固定路径在性能上表现更优,适合微服务架构下的 API 设计。