
# Kafka集群实例
#### Kafka集群实例规格
Kafka集群实例由三个及以上代理组成，兼容开源Kafka 1.1.0、2.7和3.x。
![](https://support.huaweicloud.com/productdesc-kafka/public_sys-resources/note_3.0-zh-cn.png)
关于下表中TPS的说明：
- **TPS（Transaction per second）**：在Kafka场景中，指每秒能写入到Kafka实例的最大消息数量。
- **TPS性能** ：指以1KB大小的消息为例的每秒处理消息条数。如果您想要了解更多关于TPS的性能，请参考[测试Kafka实例TPS](https://support.huaweicloud.com/usermanual-kafka/kafka-ug-0068.html)。
- **测试场景**：连接内网访问明文接入、磁盘类型为超高I/O的实例。
 
 表1Kafka集群实例规格 
| 规格名称                     | 代理个数范围 | 单个代理TPS | 单个代理分区上限 | 单个代理建议消费组数 | 单个代理客户端总连接数上限 | 存储空间范围（GB）   | 单个代理带宽（MB/s） |
|:---|:---|:---|:---|:---|:---|:---|:---|
| kafka.2u4g.cluster.small | 3\~30  | 20000   | 100      | 15         | 2000          | 300\~300000  | 40           |
| kafka.2u4g.cluster       | 3\~30  | 30000   | 250      | 20         | 2000          | 300\~300000  | 100          |
| kafka.4u8g.cluster       | 3\~30  | 100000  | 500      | 100        | 4000          | 300\~600000  | 200          |
| kafka.8u16g.cluster      | 3\~50  | 150000  | 1000     | 150        | 4000          | 300\~1500000 | 375          |
| kafka.12u24g.cluster     | 3\~50  | 200000  | 1500     | 200        | 4000          | 300\~1500000 | 625          |
| kafka.16u32g.cluster     | 3\~50  | 250000  | 2000     | 200        | 4000          | 300\~1500000 | 750          |
   
#### 实例规格和网络带宽说明
Kafka实例的网络带宽主要由以下两个部分组成：
1. 实例Broker对应的网络带宽
2. 实例Broker的磁盘所对应的带宽值（不同类型的磁盘对应的带宽值不同，具体参考：[如何选择磁盘类型](https://support.huaweicloud.com/productdesc-evs/zh-cn_topic_0014580744.html)）
注意事项：
- Kafka默认情况下测试均为尾读场景（即仅消费最新生产的数据），而不是冷读场景（即从头开始消费历史数据的场景）。
- 老规格实例（即实例规格为100MB/s等）的带宽指的是实例所有Broker对应的网络带宽总和
**新规格实例（即实例规格为kafka.2u4g.cluster等）的流量规格测算模型说明如下：**
- 测试模型读写比例为1:1
- 默认Topic的副本数为3
- 实例网络总流量 = 单个代理流量规格 \* 代理数量
- 实例整体流量 = 业务流量 + 代理节点间数据复制流量
参考上述测算模型说明，假如当前规格为kafka.2u4g.cluster，单个代理流量规格为100MB/s，代理数量为3，实例网络总流量、最大读流量和最大写流量分别为多少？
1. 实例网络总流量 = 单个代理流量规格 \* 代理数量 = 100MB/s \* 3 = 300MB/s
2. 最大读流量 = 实例网络总流量 / 默认副本数 = 300MB/s / 3 = 100MB/s
3. 最大写流量 = 实例网络总流量 / 默认副本数 = 300MB/s / 3 = 100MB/s
 
#### 新老规格对应关系
2种Kafka实例规格对比，新老规格的对应关系如[表2]所示。
 表2Kafka实例新老规格对应关系 
| 老规格                || 对应的新规格                                  ||
|:---|---|:---|---|
| 规格类型     | 实例网络总流量  | 规格类型                          | 实例网络总流量  |
| 100MB/s  | 100MB/s  | kafka.2u4g.cluster.small \* 3 | 120MB/s  |
| 300MB/s  | 300MB/s  | kafka.2u4g.cluster \* 3       | 300MB/s  |
| 600MB/s  | 600MB/s  | kafka.4u8g.cluster \* 3       | 600MB/s  |
| 1200MB/s | 1200MB/s | kafka.4u8g.cluster \* 6       | 1250MB/s |
   
新老规格区别如下：
- 老规格使用的非独享资源，在高负载情况下容易出现资源抢占情况。新规格（kafka.2u4g.cluster.small除外）使用的独占资源，性能更优，性价比更高。
- 新规格支持最新的功能，例如：分区平衡、动态开启SSL、重平衡日志可观测等。
- 新规格支持规格灵活变更，例如：Broker规格的扩缩容。
- 新规格的磁盘大小选择更加灵活，磁盘大小不与实例规格进行绑定，仅与Broker数量相关。
- 新规格选择粒度更细，根据Broker规格和数量进行灵活的规格选择，并且最大规格可以达到10000MB/s以上。
- 新规格除了原有的磁盘类型，还支持通用型SSD、极速型SSD等多种磁盘类型，客户选择更加灵活。
 
#### Kafka实例规格参考
- kafka.2u4g.cluster.small，三个代理 Kafka客户端连接数在6000以内，消费组个数在45个以内，业务TPS为60000以内时推荐选用。
  
- kafka.2u4g.cluster，三个代理 Kafka客户端连接数在6000以内，消费组个数在60个以内，业务TPS为90000以内时推荐选用。
  
- kafka.4u8g.cluster，三个代理 Kafka客户端连接数在12000以内，消费组个数在300个以内，业务TPS为300000以内时推荐选用。
  
- kafka.8u16g.cluster，三个代理 Kafka客户端连接数在12000以内，消费组个数在450个以内，业务TPS为450000以内时推荐选用。
  
- kafka.12u24g.cluster，三个代理 Kafka客户端连接数在12000以内，消费组个数在600个以内，业务TPS为600000以内时推荐选用。
  
- kafka.16u32g.cluster，三个代理 Kafka客户端连接数在12000以内，消费组个数在600个以内，业务TPS为750000以内时推荐选用。
  
 
#### Kafka实例的存储空间估算参考
Kafka实例支持多副本存储，存储空间用于存储消息（包括副本中的消息）、日志和元数据。您在创建Kafka实例，选择初始存储空间时，建议根据业务消息体积预估、副本数量以及预留磁盘大小选择合适的存储空间。每个Kafka代理会预留33GB的磁盘空间，用于存储日志和元数据。
例如：业务消息体积预估100GB，副本数为2，Kafka实例的代理数为3，则磁盘容量最少应为100GB\*2+33GB\*3=299GB。
Kafka实例支持对存储进行扩容，根据业务增长，随时扩容，节约成本。
#### Kafka实例Topic数量计算
Kafka实例对Topic分区数之和设置了上限，当达到上限之后，用户无法继续创建Topic。
所以，Topic数量和实例分区数上限、每个Topic的分区数有关，与Topic的副本数无关。其中，每个Topic分区数可在创建Topic时设置，实例分区数上限参考[表1]。
**kafka.2u4g.cluster \* 3 broker实例的分区数上限=代理数量\*单个代理分区上限，即3\*250=750。**
- 如果该实例下每个Topic的分区数都为3，则Topic数量为750/3=250个。
- 如果该实例下每个Topic的分区数都为1，则Topic数量为750/1=750个。
 
