全部產品
Search
文件中心

ApsaraMQ for Kafka:使用限制

更新時間:Dec 21, 2024

雲訊息佇列 Kafka 版對某些具體指標進行了約束和規範,您在使用雲訊息佇列 Kafka 版時注意不要超過相應的限制值,以免程式出現異常。

重要

若由於您的執行個體配置超出下列限制導致的任何不穩定情況,不在SLA承諾和賠償範圍內。

使用限制

雲訊息佇列 Kafka 版的限制項和限制值,請參見下表。

限制項

限制值

說明

限制Topic總數(分區總數)

支援

雲訊息佇列 Kafka 版的儲存和協調機制是以分區為粒度的,Topic總數(分區總數)太多,會導致儲存片段化,叢集效能和穩定性下降。

Topic減少對應分區

不支援

這是Apache Kafka自身設計所限制的。

暴露ZooKeeper

不支援

在使用設計層面,Apache Kafka自0.9.0之後已經屏蔽掉ZooKeeper,即用戶端使用無需訪問ZooKeeper。雲訊息佇列 Kafka 版的ZooKeeper是部分共用的,出於安全考慮,不予暴露。您也無需感知到ZooKeeper。

登入部署雲訊息佇列 Kafka 版的機器

不支援

無。

版本

支援2.2.x版本~3.3.x版本

  • 非Serverless執行個體支援2.2.x~2.6.x版本。

  • Serverless執行個體支援3.3.x版本。

如需升級版本,請參見升級執行個體版本

分區數量和Topic數量的對應關係

1∶1

可使用的Topic數量與總分區數強相關。例如,您購買了分區數為50、流量規格為alikafka.hw.2xlarge、規格內贈送分區數為1000的執行個體,那麼該執行個體總分區數=購買分區數+規格內贈送分區數=50+1000=1050,可用Topic數量為1050。

說明

僅非Serverless執行個體適用。

變更執行個體的地區

不支援

執行個體購買部署之後,其地區與實體資源緊密結合,無法變更。如需變更執行個體的地區,請釋放執行個體,並重新購買。

變更執行個體網路屬性

支援

網路屬性可以根據需要變更。具體操作,請參見升級執行個體配置

訊息大小

10 MB

訊息大小不得超過10 MB,否則訊息會發送失敗。

監控警示

支援

資料延時1分鐘。

存取點

購買規格

  • 標準版:支援預設存取點、SSL存取點。

  • 專業版:支援預設存取點、SSL存取點、SASL存取點。

  • Serverless執行個體:支援預設存取點、SSL存取點、SASL存取點。

雲端儲存單分區

宕機和升級時可能導致不可用

建議建立的分區數大於1,如果強依賴單分區,可以使用Local儲存。

說明
  • 僅非Serverless執行個體存在此限制,Serverless執行個體的雲端儲存單分區具有高可用性。

  • 僅專業版執行個體支援在建立Topic時將儲存引擎類型選擇為Local儲存,標準版暫不支援。

說明

雲訊息佇列 Kafka 版非Serverless執行個體不再支援按照Topic規格購買執行個體,若您的已有執行個體是按照Topic規格購買的,那麼Topic數量與分區數量的對應關係為1∶16,專業版執行個體Topic數量=購買Topic數量×2。

配額限制

下表列舉了雲訊息佇列 Kafka 版使用限制項,超出下列使用限制可能會產生穩定性問題。其他限制中列舉了部分可能對服務端造成不良影響的使用情境,需要謹慎使用避免造成服務端過載引發穩定性問題。

除非另有說明,限制都是針對每個叢集的。如需更大的配額,請提交工單諮詢。

限制項

限制條件

說明

串連數(單節點)

  • 起步串連數為1000(業務實際流量規格為20 MB/s)。

  • 業務實際流量規格每增加100 MB/s,串連數增加1000(上限為 10000)。

計算公式:C = min(10000, 1000 + (F // 100) * 1000)

F是流量(以MB/s為單位),C是所需的串連數量。//表示整數除法,即向下取整。

單台Broker的TCP串連數。

如需更大串連數,提交工單申請。

Serverless執行個體預留髮送規格 =業務實際發送流量規格*3

公網(SSL)串連數(單節點)

  • 起步串連數為200(業務實際流量規格為20 MB/s)。

  • 業務實際流量規格每增加100 MB/s,串連數增加100(上限為1000)。

計算公式:C = min(1000, 200 + (F // 100) * 100)

F是流量(以MB/s為單位),C是所需的串連數量。//表示整數除法,即向下取整。

單台Broker的公網(SSL)TCP串連數。

如需更大串連數上限,提交工單申請。

建立串連頻率(單節點)

  • Serverless執行個體:150次/秒

  • 按小時後付費和訂用帳戶執行個體:50次/秒

每秒用戶端與服務端嘗試建立串連次數(包含因鑒權失敗等原因導致的失敗串連)。

公網(SSL)建立串連頻率(單節點)

10次/秒

每秒用戶端與服務端嘗試建立公網(SSL)串連次數(包含因鑒權失敗等原因導致的失敗串連)。

batch size

batch size TP50=4 KB以下定義為片段化發送

發送用戶端攢批後PRODUCE請求中攜帶的訊息batch大小。推薦使用2.4以上的用戶端版本,提升batch攢批能力,請參見提升發送效能(減少片段化發送請求)

發送request頻率(叢集)

  • 起步10000 request/s(業務實際流量規格為20 MB/s)。

  • 業務實際流量規格20 MB/s以上每增加20 MB/s,增加5000 request/s。

計算公式:R = 10000 + (F // 20) * 5000

F是實際流量(以MB/s為單位),R是所需的發送request頻率。//表示整數除法,即向下取整。

用戶端發送PRODUCE的請求數量。

如需更大請求數上限,提交工單申請。

消費request頻率(叢集)

  • 起步5000 request/s(業務實際流量規格為20 MB/s)。

  • 業務實際流量規格20 MB/s以上每增加20 MB/s,增加2500 request/s。

計算公式:R = 5000 + (F // 20) * 2500

F是實際流量(以MB/s為單位),R是所需的消費request頻率。//表示整數除法,即向下取整。

用戶端消費FETCH的請求數量。

如需更大請求數上限,提交工單申請。

提交消費位點頻率(單節點)

  • 起步100 request/s(業務實際流量規格為20 MB/s)。

  • 業務實際發送流量規格20 MB/s以上每增加100 MB/s,增加100 request/s。

  • 上限1000 request/s

計算公式:R = min(1000, 100 + (F // 100) * 100)

F是實際流量(MB/s),R是請求(requests/s),//表示整數除法。

用戶端發送 OFFSET_COMMIT 的請求數量。

如需更大請求數,提交工單申請。

中繼資料request頻率(叢集)

  • 起步100 request/s(業務實際流量規格為20 MB/s)。

  • 業務實際流量規格20 MB/s以上每增加100 MB/s,增加100 request/s。

  • 上限1000 request/s

計算公式:R = min(1000, 100 + (F // 100) * 100)

F是實際流量(以MB/s為單位),R是請求速率(requests/s),//表示整數除法。

服務端收到的用戶端中繼資料request,例如METADATA,INIT_PRODUCER_ID,CREATE_ACL,JOIN_GROUP 等。

警告

如果請求過於頻繁,會影響叢集穩定性。

最大分區數(叢集)

Serverless執行個體:

  • 預留生產規格1 GB/s以下3000分區副本數

  • 預留生產規格1 GB/s以上每增加100 MB/s增加300分區副本數

  • 上限15000分區副本數

按小時後付費和訂用帳戶執行個體分區數計算方式相同。具體詳情,請參見計費項目

分區數包括使用者建立的不同類型Topic的分區。

如需更大分區上限數,提交工單申請。

建立/刪除分區頻率(叢集)

900分區(每10秒)

包含控制台,OpenAPI、Kafka Admin等所有分區操作。

consumer group數量(叢集)

2000/叢集

Topic和Group的訂閱比建議 1:1,不超過 3:1。

使用者使用的Group數量。

如需更大Group上限數,提交工單申請。

警告

過多的消費者組可能導致服務端協調負載增加、中繼資料管理複雜性提高,從而影響效能和故障恢復。

訊息格式版本

訊息格式版本需大於V1

推薦使用2.4以上的用戶端版本。

警告

使用較低版本的Kafka訊息格式可能導致服務端CPU上升、吞吐效能下降及相容性和安全性等問題。

其他限制

  • 開啟某些壓縮演算法可能會影響服務端效能,進一步影響延遲和吞吐。

  • 大量高頻率初始化事務Producer Id可能造成記憶體溢出導致服務端過載,影響穩定性。因此我們將核心參數transactional.id.expiration.ms調整為15 min,如有特殊需求,請提交工單諮詢。

  • 無效訊息體時間戳記攔截,當message.timestamp.type= CreateTime時,Broker收到訊息時的時間戳記與訊息中指定的時間戳記之間的最大差值超過配置的參數值message.timestamp.difference.max.ms,會拒絕寫入這條訊息。此配置用於防止時間戳記的誤設定,如果時間戳記設定太小,LogSegment會立刻被刪除,如果設定太大,LogSegment將無法被刪除。

  • 為了防止Compact Topic異常寫入,導致叢集儲存寫滿而宕機。Compact Topic分區預設儲存上限為5 GB,如有特殊需求,請提交工單諮詢。

  • 如果執行個體CPU使用率超過85%,則可能對執行個體叢集的穩定性產生影響,如宕機、發送消費長尾延遲抖動等異常問題。

  • Kafka的效能由叢集提供支援,如果使用者的發送行為或者分區分配存在傾斜等問題,則難以充分發揮叢集的最大能力。

  • 開源事務訊息存在大量已知且尚未修複的問題,建議謹慎使用,例如KAFKA-12671。更多問題,請參見KAFKA ISSUES