[转帖]Kafka 核心技术与实战学习笔记(六)kafka线上集群部署方案
一.操作系统-Linux
- Kafka是JVM系的大数据框架
- kafka由Scala语言和Java语言编写而成,编译之后的源代码就是普通的".class"文件
使用Linux
- kafka客户端底层使用Java的selector,selector在Linux上的实现机制是epoll,由于在windows上实现是select,因此部署在Linux上有优势,可以获得更高效的I/O性能。
- 在Linux部署kafka能够享受到零拷贝技术所带来的 快速数据传输特性。
二.磁盘-普通机械磁盘
- kafka大量使用磁盘,但是使用磁盘是顺序读写操作,一定程序规避机械磁盘的随机读写操作慢。
- 机械磁盘物美价廉,易损坏等可靠性缺陷,由kafka在软件层面提供机制保证。
三.磁盘容量
需求:
kafka需要将消息保存在底层磁盘上,这些消息默认保存一段时间然后自动被删除。
问题:
- 假设公司业务每天需要发送一亿条消息,每条消息保存两份以上防止数据丢失,
- 另外消息默认保存两周时间。假设消息的平均大小是1kB,那么你能计算出kafka集群要预留多少磁盘空间吗?
计算:
- 每天一亿条1kB大小的消息,且保存两份留存两周
- 计算一天的空间大小:1亿*1KB*2=200GB
- 一般情况下Kafka集群除了消息数据还有其他类型的数据,比如索引数据,我们需要预留出百分之10的磁盘空间,因此总的存储容量就是220GB
- 保存两周,那就是220GB*14,大约为3TB左右
- kafka支持的压缩比是0.75,那么最后规划需要的空间是0.75*3-2.25TB
规划磁盘容量考虑以下几个元素:
- 新增消息数
- 消息 留存时间
- 消息平均大小
- 备份数
- 是否启用压缩
四.带宽
- 与其说是带宽资源规划, 其实是规划所需kafka服务器的数量。
需求:
- 公司的机场环境是千兆网络即1Gbps,现在有业务,业务目标是1小时处理1TB业务数据,那么需要多少台服务器完成业务:
计算:
- 带宽是1Gbps,即每秒处理1Gb的数据,假设每台kafka服务器都是安装在专属的机器上,通常环境还是有其他服务,通常kafka只能用到百分70的带宽资源。
- 实际使用经验,超过70%的阈值就有网络丢包可能性,故70%的设定是一个比较合理的值,也就是单台kafka服务器可能使用700mMb带宽资源。
- 这只是它能使用的最大带宽资源,你不能让kafka服务器常规性使用这么多资源。通常额外预留2/3的资源,即单台服务器使用带宽700Mb/3=240Mbps。
- 计算1小时处理1TB数据所需服务器数量。2336/240=10台,额外复制两份,需要30台。
| 因素 | 考量点 | 建议 |
| 操作系统 | 操作系统I/O模型 | Linux |
| 磁盘 | 磁盘I/O性能 | 机械磁盘 |
| 磁盘容量 | 消息数,留存时间预估 | 建议预留百分之20-30的磁盘资源 |
| 带宽 | 实际带宽资源预估 | 对于千兆网络按700Mps计算 |
[转帖]Kafka 核心技术与实战学习笔记(六)kafka线上集群部署方案的更多相关文章
- 基于Centos7xELK+Kafka集群部署方案
本次集群部署使用ELK版本统一为6.8.10,kafka为2.12-2.51 均可在官网下载 elasticsearch下载地址:https://www.elastic.co/cn/downloads ...
- Elasticsearch核心技术与实战-学习笔记
学习资源: Elasticsearch中文社区日报https://elasticsearch.cn/article/ Elasticsearch 官网 https://www.elastic.co/ ...
- 官网英文版学习——RabbitMQ学习笔记(十)RabbitMQ集群
在第二节我们进行了RabbitMQ的安装,现在我们就RabbitMQ进行集群的搭建进行学习,参考官网地址是:http://www.rabbitmq.com/clustering.html 首先我们来看 ...
- Nginx学习笔记(反向代理&搭建集群)
一.前言 1.1 大型互联网架构演变历程 1.1.1 淘宝技术 淘宝的核心技术(国内乃至国际的 Top,这还是2011年的数据) 拥有全国最大的分布式 Hadoop 集群(云梯,2000左右节点,24 ...
- Linux实战教学笔记33:lvs+keepalived集群架构服务
一,LVS功能详解 1.1 LVS(Linux Virtual Server)介绍 LVS是Linux Virtual Server 的简写(也叫做IPVS),意即Linux虚拟服务器,是一个虚拟的服 ...
- Redis学习笔记(十八) 集群(下)
复制和故障转移 Redis集群中的节点分为主节点(master)和从节点(slave),其中主节点用于处理槽,而从节点则用于复制某个主节点,并在被复制 的主节点下线时,代替下线主节点继续处理命令请求. ...
- python学习笔记六 初识面向对象上(基础篇)
python面向对象 面向对象编程(Object-Oriented Programming )介绍 对于编程语言的初学者来讲,OOP不是一个很容易理解的编程方式,虽然大家都知道OOP的三大特性 ...
- Hadoop学习笔记(4)hadoop集群模式安装
具体的过程参见伪分布模式的安装,集群模式的安装和伪分布模式的安装基本一样,只有细微的差别,写在下面: 修改masers和slavers文件: 在hadoop/conf文件夹中的配置文件中有两个文件ma ...
- 学习笔记(5)——实验室集群LVS监控Web界面配置
症状:通过虚拟IP能访问到监控页面:http://192.168.253.110/ipvsadm.php,但是却无法读出LVS任务分发及集群负载信息. 打开ipvsadm.php页面,源码如下: &l ...
- 学习笔记(4)——实验室集群管理结点IP配置
经过验证,集群管理结点mgt的IP配置应为如下所示: [root@mgt zmq]# ifconfig//外部网卡 eth0 Link encap:Ethernet HWaddr 5C:F3:FC:E ...
随机推荐
- 2021-01-25:redis中,哨兵如何选举?
福哥答案2021-01-25: 答案1: redis-sentinel故障转移的流程: 1.当多个sentinel发现并确认了master有问题. 2.接着会选举出一个sentinel作为领导. 3. ...
- 【华为云技术分享】DLI跨源|当DLI遇见MongoDB
导语: MongoDB作为灵活高效易扩展的no-schema数据库,越来越受到互联网公司.游戏行业等开发者的青睐,但是MongoDB有着独特的语言接口,并不能很好满足数据分析师构建数据治理应用的需求, ...
- 实时入库不用愁,HStore帮分忧
本文分享自华为云社区<直播回顾 | 实时入库不用愁,HStore帮分忧>,作者:汀丶. 海量数据时代,如何实现数据实时入库与实时查询?GaussDB(DWS) HStore表为数据高效存储 ...
- 读书笔记丨远程服务调用和RESTful,如何分析和抉择?
摘要:相信未来REST规范将会变得更加流行和普及. 本文分享自华为云社区<云原生时代,远程服务调用和RESTful,如何分析和抉择?>,作者:breakDawn . 随着云原生的概念越来越 ...
- 一文掌握GaussDB(DWS) SQL进阶技能:全文检索
摘要:本文简要介绍了GaussDB(DWS)全文检索的原理和使用方法. 全文检索(Text search)顾名思义,就是在给定的文档中查找指定模式(pattern)的过程.GaussDB(DWS)支持 ...
- 华为云PB级数据库GaussDB(for Redis)揭秘第十期:GaussDB(for Redis)迁移系列(上)
摘要:本期将详细介绍社区版Redis.kvrocks和Pika到GaussDB(for Redis)的迁移 本文分享自华为云社区<华为云PB级数据库GaussDB(for Redis)揭秘第十期 ...
- 设备如何使用go sdk轻松连接华为云IoT平台?
摘要:本文介绍使用huaweicloud-iot-device-sdk-go 连接华为云IoT平台,实现简单的华为云文档介绍的四个功能:设备连接鉴权.设备命令.设备消息和设备属性. 本文分享自华为云社 ...
- SpringBoot Docker 发布
本文是手动模式,可以移步 Intellij IDEA 集成 Docker 发布 使用 Intellij 集成Docker 发布,比较方便 pom 文件 <groupId>com.vipso ...
- API 设计最佳实践(简版)
Restful API 本文简称API,是一个种面向资源的架构.在Restful中一个API对应一个资源,资源可以是文本,图片,视频等.API特征有如下: 每一个URI代表一种资源 客户端和服务器之间 ...
- 【JAVA基础】MySQL配置
mySQL配置 数据库连接 初始化配置 --创建用户 并授权 create user 'injasup'@'%' identified by 'supplier@2023#!'; GRANT SELE ...