如何保证消息发布的可靠性?
- 如果acks=0,生产者在成功写入消息之前是不会等待任何的来自服务器的响应。可靠性最低、性能最优。
- 如果acks=1,只要集群的首领节点收到消息,生产者就会收到来自服务器成功的响应。
- 如果acks=all / -1,只有在集群所有的跟随副本都接收到消息后,生产者才会受到一个来自服务器的成功响应。可靠性最高,性能最差。
如何保证消息的顺序?
- Kafka 每个 Partition 都是相互独立的,Kafka 只能保证单个 Partition 下的有序。
- 局部有序:当我们所需要的有序其实是针对单个用户的有序,而不要求全局有序。我们可以以用户的 ID 作为 key , 确保单个用户一定会被分配到某个固定的 Partition 上(可能会引起数据倾斜问题),这样我们就能够实现单个用户维度的有序了。
- 如果一定要全局的有序,所有消息都使用同一个 key ,这样他们一定会被分配到同一个 Partition 上,这种做法适用于临时性且数据量不大的小需求,消息量大了会有性能压力。
如何选择 Partiton 的数量?
- 在创建 Topic 的时候可以指定 Partiton 数量,也可以在创建完后手动修改。但 Partiton 数量只能增加不能减少。中途增加 Partiton 会导致各个 Partiton 之间数据量的不平等。
- Partition 的数量直接决定了该 Topic 的并发处理能力。但也并不是越多越好。Partition 的数量对消息延迟性会产生影响。
- 一般建议选择 Broker Num * Consumer Num ,这样平均每个 Consumer 会同时读取 Broker 数目个 Partition , 这些 Partition 压力可以平摊到每台 Broker 上。
如何选择磁盘空间?
Kafka支持多副本存储,副本数量为3。存储空间包含所有副本存储空间总和,因此,您在创建Kafka实例,选择初始存储空间时,建议根据业务消息体积预估以及副本数量选择合适的存储空间。
例如:业务消息体积预估100GB,则磁盘容量最少应为100GB*3+ 预留磁盘大小100GB。
如何选择实例带宽?
Kafka实例的网络带宽指单向(读或写)最大带宽。一般建议选择带宽时建议预留30%,确保您的应用运行更稳定。
- 100MB/s,业务流量为70M以内时推荐选用。
- 300MB/s,业务流量为210M以内时推荐选用。
Kafka支持磁盘加密吗?
分布式消息服务Kafka不支持磁盘加密。
Kafka扩容会影响业务吗?
Kafka的扩容过程可能会对业务产生一定的影响,具体取决于您的扩容策略和实施方式。以下是一些可能的影响:
- 重分区和重新分配:当您需要扩容Kafka集群时,可能需要进行重分区和重新分配。这涉及到数据的重新分布和重新平衡,可能会导致一段时间内的性能下降和延迟增加。在重分区和重新分配期间,Kafka会重新分配副本、重新分区数据,并且可能需要重新加载和重新平衡消费者群组。
- 网络和磁盘负载增加:扩容Kafka集群意味着增加了更多的节点和副本,这可能会增加网络和磁盘的负载。数据的复制和同步可能会导致网络带宽的消耗,而新增的节点和副本可能会增加磁盘的写入和读取负载。
扩容过程中涉及数据迁移吗?
扩容过程不涉及数据迁移。
选择和配置安全组
安全组是一种网络安全配置,用于控制云计算平台中虚拟机实例的网络访问。它是一种虚拟防火墙,可以定义入站和出站的网络流量规则,以保护虚拟机实例的安全。Kafka在购买实例页面用户可选择安全组。
是否支持跨Region访问?
可购买弹性IP,通过公网IP绑定功能实现外网访问,也可通过购买云间高速产品服务进行访问。
Kafka实例是否支持不同的子网?
支持。相同VPC内可以跨子网段访问。同一个VPC内的子网默认可以进行通信。
Kafka实例的内网连接地址可以修改吗?
不支持修改,也不支持指定IP地址。
开启公网访问后,在哪查看公网IP地址?
Kafka管理控制台。在实例列表页在操作列,目标实例行点击“设置公网ip”,查看具体地址。
Kafka支持服务端认证客户端吗?
分布式消息服务Kafka不支持服务端认证客户端。
不同实例中,使用的SSL证书是否一样?
在Kafka中,每个实例使用的SSL证书通常是不同的。SSL证书是用于加密和验证Kafka实例之间的通信的一种安全机制。每个Kafka实例都需要有自己的证书来确保通信的安全性和身份验证。
SSL证书包括公钥和私钥。公钥用于加密通信,私钥用于解密通信。为了确保安全性,私钥应该是保密的,并且只有Kafka实例才能访问。
在Kafka集群中,每个实例都应该有自己的证书和私钥对。这样可以确保每个实例都有独立的加密和身份验证机制。如果多个实例共享相同的证书和私钥,那么一个实例的私钥可能会被其他实例访问,从而降低了通信的安全性。
因此,为了确保每个Kafka实例之间的通信安全,建议为每个实例生成独立的SSL证书和私钥。这样可以确保每个实例都有独立的加密和身份验证机制,提高整个Kafka集群的安全性。