配额
从0.9开始,Kafka集群能够对生产和消费设置配额。为每个客户端分组设置配额阈值(基于字节比率)。
Kafka集群有能力对请求进行配额来控制客户端使用的broker资源。可以为共享配额的每个客户组执行两种类型的客户配额:
- 通过配额定义网络带宽的字节率阈值(从0.9版本开始)
- 请求率配额将CPU的利用率阈值定义为网络和I/O线程的百分比(自0.11版本起)
为什么需要配额?
生产者和消费者的可能生产/消费非常大量的数据,从而垄断了broker的资源,引起网络饱和,配额可防止这个问题。在大型多节点集群中更加重要。其中有一小部分不良行为的用户将被降权。事实上,当kafka作为服务运行时,可以根据约定好的协议执行API限制。
客户端集群
在安全的集群中,Kafka客户端通过已认证的用户的principal来标识的。在一个无需认证客户端的集群中,用户principal是一个未认证的分组。用户的principal是通过broker(使用可配置的PrincipalBuilder)。Client-id是客户端应用程序使用具有意义名称的客户端的逻辑分组。元组(user,client-id)定义了共享用户principal和client-id的客户端安全逻辑分组。
配额可以应用到(user,client-id),用户或clinet-id组中。为了一个给定的连接,应用与连接匹配的最具体的配额。所有的配额分组的连接
共享配置的分组配额。例如,如果(user=“test-user”,client-id="test-client")生产配额是10MB/sec&#x