# 生产集群部署
## 操作系统
* 不同 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 数据所需要的服务器数量
* 如果消息需要复制,那么需要额外再倍乘服务器数量
- 概览
- 入门
- 1. 消息引擎系统
- 2. Kafka 术语
- 3. 分布式流处理平台
- 4. Kafka “发行版”
- 5. Kafka 版本号
- 基本使用
- 6. 生产集群部署
- 7. 集群参数配置
- 客户端实践与原理
- 9. Consumer 分区机制
- 10. Consumer 压缩算法
- 11. 无消息丢失配置
- 12. 客户端高级功能
- 13. Producer 管理 TCP
- 14. 幂等生产者和事务生产者
- 15. 消费者组
- 16. 位移主题
- 17. 消费者组重平衡(TODO)
- 18. 位移提交
- 19. CommitFailedException
- 20. 多线程开发者实例
- 21. Consumer 管理 TCP
- 22. 消费者组消费进度监控
- Kafka 内核
- 23. 副本机制
- 24. 请求处理
- 25. Rebalance 全流程
- 26. Kafka 控制器
- 27. 高水位和 Leader Epoch
- 管理与监控
- 28. Topic 管理
- 29. Kafka 动态配置
- 30. 重设消费者组位移
- 31. 工具脚本
- 32. KafkaAdminClient
- 33. 认证机制
- 34. 云下授权
- 35. 跨集群备份 MirrorMaker
- 36. 监控 Kafka
- 37. Kafka 监控框架
- 38. 调优 Kafka
- 39. 实时日志流处理平台
- 流处理
- 40. Kafka Streams
- 41. Kafka Streams DSL
- 42. Kafka Streams 金融
- Q&A