ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# 生产集群部署 ## 操作系统 * 不同 OS 差异会给 Kafka 带来影响 * Linux 表现比 Windows / Mac 更好,原因如下 * IO 模型的使用 * i.e. OS 操作 IO 指令的方法 * 主流 IO 模型 * 阻塞式 IO * Java 中 Socket 对象的阻塞模式 * 非阻塞式 IO * Java 中 Socket 对象的非阻塞模式 * IO 多路复用 * Linux 中系统调用 select 函数 * 信号驱动 IO * epoll 属于 IO 多路复用 & 信号驱动 IO 之间 * 异步 IO * Windows 系统提供了一个 IOCP 线程模型 * 后面的模型比前面的要好 * Kafka 客户端底层使用了 Java 的 selector,selector 在 Linux 实现机制是 epoll * 数据网络传输效率 * Kafka 需要在磁盘和网络间进行大量数据传输 * 零拷贝(Zero-copy) * 避免内核态数据拷贝从而实现快速数据传输 * 社区支持度 ## 磁盘 * Append-only 上使用 SSD 相比机械硬盘没有太多优势 * RAID * RAID 的优势 * 提供冗余的磁盘存储空间 * 提供负载均衡 * 对于 Kafka,可以不用 RAID,使用普通磁盘组成存储空间即可 ## 磁盘容量 * 估算消息数量 * 估算消息平均大小 * 计划保留时间 * 额外预留其他数据类型空间(e.g. 索引) 10% * 计算压缩比 * 确定备份数量 ## 带宽 * 带宽资源规划 -> Kafka 服务器的数量规划 * 假设计算 * 带宽 1Gbps,每秒处理 1Gb 数据 * 假设 Kafka 服务器安装在专属机器,没有混搭其他服务 * 假设 Kafka 只用到 70% 带宽资源(实际需要给其他进程预留) * 实际情况,超过 70% 阈值会有网络丢包的可能性 * 根据单机带宽,计算 1h 内处理 1 TB 数据所需要的服务器数量 * 如果消息需要复制,那么需要额外再倍乘服务器数量