【Kafka】聊聊如何做Kafka集群部署方案

实际业务问题

在实际的业务中,因业务方要求,每天从三方拉取一定100W用户的三方数据,具体就是 提供uid,然后每天进行离线跑批。前期是部署多个jar实例,然后将名单拆分成多分,然后python脚本读取uid,然后调用java接口。但是因为调用量上不去。

后来就进行优化了一版本,通过将用户写入到kafka中,然后异步消费,同时将分区设置为12个大大提升了性能。

刚开始想一下子直接写入上百万的用户信息,Kafka会不会吃不消,后来发现其实是多虑了。

所以结合一个场景 来聊聊如何做一个集群部署方案。

亿级流量电商 设计

电商系统中,每日首页的点击其实是非常频繁的,如果说针对一个千万级别用户的APP,每日首页可能有上亿的点击。如果一个用户生成10条数据。那就是10亿数据。

根据二八原则,其实流量高峰期,一般都是中午或者指定时间端(假设在12到4点之间)。也就是有8亿数据。
每小时:接近6W条消息。但是为了应对可能出现的峰值,5/6倍左右。
在这里插入图片描述

操作系统

实际的生产一定是使用linux。主要在于IO模型、数据网络传输率、社区支持度。
Linux系统调用select函数属于IO多路复用模型。实现就是epoll,可以获取更高的IO性能。
Kafka需要大量的磁盘读写,可以通过零拷贝。避免从磁盘到用户态,用户态到网络缓冲区的写入。
在这里插入图片描述

磁盘

Kafka是顺序读写文件的,所以采用普通机械硬盘就可以。
磁盘容量,按照上面的一天10亿数据,如果是两个副本,那就是20亿数据。数据默认保留一周的话,那就是140亿。一条消息是1KB。那么就是140 0000 0000 KB / 1024 / 1024 / 1024 = 13TB。如果是三台broker的话,那么一台就需要5TB。
当然我们需要考虑新增消息、消息留存时间、平均消息大小、是否压缩、副本等

带宽

对于Kafka来说,其实带宽比较容易成为瓶颈。需要结合业务峰值,比如针对一般的千兆网卡来说,1S大概在100多MB,那么如果一小时处理1TB的数据,就需要几十台服务处理。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/520269.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于spark分析以springboot为后段vue为前端的大学生就业管理系统

基于spark分析以springboot为后段vue为前端的大学生就业管理系统 大学生就业管理系统是一个针对高校毕业生就业信息管理的有效工具,它能够帮助学校和学生更好地管理就业数据,提供数据驱动的决策支持。本文将介绍如何通过爬虫采集数据,利用Spark进行数据分析处理,再结合Spr…

【cpp】快速排序优化

标题:【cpp】快速排序 水墨不写bug 正文开始: 快速排序的局限性: 虽然快速排序是一种高效的排序算法,但也存在一些局限性: 最坏情况下的时间复杂度:如果选择的基准元素不合适,或者数组中存在大…

【C++】c++11新特性(一)

目录 { }列表初始化 内置类型---对单值变量及数组的初始化 列表初始化时进行的类型转换 自定义类型---对类对象或结构的初始化 initializer_list 1. 定义接受 initializer_list 参数的构造函数 2. 在函数中使用 initializer_list 参数 3. 使用 initializer_list 与 vect…

教你网络安全

如今,组织的信息系统和数据面临着许多威胁。而人们了解网络安全的所有基本要素是应对这些威胁的第一步。 网络安全是确保信息完整性、机密性和可用性(ICA)的做法。它代表了应对硬盘故障、断电事故,以及来自黑客或竞争对手攻击等防御和恢复能力。而后者包…

Android14应用启动流程(源码+Trace)

1.简介 应用启动过程快的都不需要一秒钟,但这整个过程的执行是比较复杂的,无论是对手机厂商、应用开发来说启动速度也是核心用户体验指标之一,本文采用Android14源码与perfetto工具进行解析。 源码参考地址:Search trace分析工…

基于单片机多功能MP3播放器系统设计

**单片机设计介绍,基于单片机多功能MP3播放器系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机多功能MP3播放器系统设计是一个结合了硬件和软件设计的复杂项目。以下是对该系统设计的概要描述&#…

初识二叉树和二叉树的基本操作

目录 一、树 1.什么是树 2. 与树相关的概念 二、二叉树 1.什么是二叉树 2.二叉树特点 3.满二叉树与完全二叉树 4.二叉树性质 相关题目: 5.二叉树的存储 6.二叉树的遍历和基本操作 二叉树的遍历 二叉树的基本操作 一、树 1.什么是树 子树是不相交的;…

Github 2024-04-06Rust开源项目日报Top10

根据Github Trendings的统计,今日(2024-04-06统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10HTML项目1Dart项目1RustDesk: 用Rust编写的开源远程桌面软件 创建周期:1218 天开发语言:Rust, Dart协议类型:GNU Affero General …

docker + miniconda + python 环境安装与迁移(详细版)

本文主要列出从安装dockerpython环境到迁移环境的整体步骤。windows与linux之间进行测试。 简化版可以参考:docker miniconda python 环境安装与迁移(简化版)-CSDN博客 目录 一、docker 安装和测试 二、docker中拉取miniconda&#xff…

C语言--指针终章

目录 1. sizeof和strlen的对⽐ 1.1 sizeof 1.2 strlen 1.3 sizeof 和 strlen的对⽐ 2. 数组和指针的理解——题目理解 2.1.sizeof 代码1: 代码2: 代码3: 代码4: 代码5(二维数组): 2.2…

【蓝桥杯-单链表-网络寻路】

蓝桥杯-单链表-网络寻路 单链表基本操作操作一:向链表头插入一个数操作二:在第 k个插入的数后插入一个数操作三:删除第 k个插入的数后面的一个数; P8605 [蓝桥杯 2013 国 AC] 网络寻路 单链表基本操作 初始化有关操作 // head 表示头结点的…

Debian12 使用 nginx 与 php8.2 使用 Nextcloud

最近将小服务器升级了下系统,使用了 debian12 的版本,正好试试 nginx 和 php-fpm 这种方式运行 Nextcloud 这个私有云的配置。 一、基本系统及应用安装 系统:debian12 x86_64 位版本最小安装,安装后可根据自己需求安装一些工具&…

如何优化TCP?TCP的可靠传输机制是什么?

在网络世界中,传输层协议扮演着至关重要的角色,特别是TCP协议,以其可靠的数据传输特性而广受青睐。然而,随着网络的发展和数据量的激增,传统的TCP协议在效率方面遭遇了挑战。小编将深入分析TCP的可靠性传输机制&#x…

【C++初阶】 vector 在OJ中的使用

前言: 🎯个人博客:Dream_Chaser 🎈博客专栏:C 📚本篇内容:只出现一次的数字 和 杨辉三角 OJ 目录 一、只出现一次的数字 题目描述: 二、杨辉三角OJ 题目描述: 一、只…

vue快速入门(七)内联语句

注释很详细&#xff0c;直接上代码 上一篇 新增内容 button点击事件绑定内联语句写法与要求 源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-wid…

phpstorm设置头部注释和自定义注释内容

先说设置位置&#xff1a; PhpStorm中文件、类、函数等注释的设置在&#xff1a;setting-》Editor-》FIle and Code Template-》Includes-》PHP Function Doc Comment下设置即可&#xff0c;其中方法的默认是这样的&#xff1a; /** ${PARAM_DOC} #if (${TYPE_HINT} ! "…

【第九篇】使用BurpSuite进行编码与解码

Burp存在一个功能&#xff0c;可以识别包含不透明数据&#xff08;例如会话令牌&#xff09;的消息。 如图&#xff1a;如果 Burp 识别所选内容的编码格式&#xff0c;它会自动解码数据。解码后的文本显示在 Inspector面板中。 在编码工具模块中&#xff0c;可对数据进行重复解…

C. MEX Game 1

本题如果我们去模拟这个算法的话会很麻烦&#xff0c;也会TLE&#xff0c;首先我们想 1&#xff0c;对于alice来说&#xff0c;先取小的&#xff0c;对于bob来说先删除alic想取的下一个小的 2&#xff0c;那如果这个数多于两个&#xff0c;那也就是说&#xff0c;alice肯定能…

电工技术学习笔记——正弦交流电路

一、正弦交流电路 1. 正弦量的向量表示法 向量表示方法&#xff1a;正弦交流电路中&#xff0c;相量表示法是一种常用的方法&#xff0c;用于描述电压、电流及其相位关系。相量表示法将正弦交流信号表示为复数&#xff0c;通过复数的运算来描述电路中各种参数的相互关系 …

C/C++预处理过程

目录 前言&#xff1a; 1. 预定义符号 2. #define定义常量 3. #define定义宏 4. 带有副作用的宏参数 5. 宏替换的规则 6. 宏和函数的对比 7. #和## 8. 命名约定 9. #undef 10. 命令行定义 11. 条件编译 12. 头文件的包含 13. 其他预处理指令 总结&#x…