Custom MSK Express 代理程式組態 (讀取/寫入存取) - Amazon Managed Streaming for Apache Kafka

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Custom MSK Express 代理程式組態 (讀取/寫入存取)

您可以使用 Amazon MSK的更新組態功能或使用 Apache Kafka 的 來更新讀取/寫入代理程式組態 AlterConfig API。Apache Kafka 代理程式組態為靜態或動態。靜態組態需要代理程式重新啟動,才能套用組態,而動態組態則不需要代理程式重新啟動。如需組態屬性和更新模式的詳細資訊,請參閱更新代理程式組態

MSK Express 代理程式上的靜態組態

您可以使用 Amazon MSK建立自訂MSK組態檔案,以設定下列靜態屬性。Amazon 會MSK設定和管理您未設定的所有其他屬性。您可以從MSK主控台或使用組態命令建立和更新靜態組態檔案。

快速代理程式讀取/寫入 (可編輯) 組態 – 靜態屬性
屬性 描述 預設值

allow.everyone.if.no.acl.found

如果您想要將此屬性設定為 false,請先確定您ACLs為叢集定義 Apache Kafka。如果您將此屬性設定為 false,而且未先定義 Apache Kafka ACLs,則會失去對叢集的存取權。如果發生這種情況,您可以再次更新組態,並將此屬性設為 true,以重新取得對叢集的存取。

true

auto.create.topics.enable

在伺服器上啟用主題自動建立功能。

false

connections.max.idle.ms

閒置連線逾時 (以毫秒計)。伺服器插槽處理器執行緒會關閉閒置時間超過此屬性設定值的連線。

Apache Kafka 預設

delete.topic.enable

啟用刪除主題操作。若此設定關閉,您將無法透過管理員工具刪除主題。

Apache Kafka 預設

group.initial.rebalance.delay.ms

群組協調員在首次執行重新平衡前等待更多資料取用者加入新群組的時間。延遲越長,意味著重新平衡的次數越少,但處理開始前的等待時間會增加。

Apache Kafka 預設

group.max.session.timeout.ms

已註冊取用者工作階段逾時值上限。逾時值越大,讓取用者處理活動訊號間的訊息的時間越長,偵測故障耗費的時間也越長。

Apache Kafka 預設

leader.imbalance.per.broker.percentage

每個代理程式允許的領導者不平衡比率。如果每個代理程式的控制器超過此值,控制器會觸發領導者不平衡。此值是以百分比指定。

Apache Kafka 預設

max.incremental.fetch.session.cache.slots

所保持的增量擷取工作階段數量上限。

Apache Kafka 預設

num.partitions

每個主題的預設分割區數量。

1

offsets.retention.minutes

取用者群組遺失所有取用者 (即變為空白) 後,其偏移會保留此值指定的時間,之後才會被捨棄。對於獨立消費者 (即使用手動指派的消費者),偏移會在最後一次遞交時間加上此保留期間之後過期。

Apache Kafka 預設

replica.fetch.max.bytes

每個分割區嘗試擷取之訊息位元組數。此非絕對數量上限。若擷取的第一個非空白分區的第一個記錄批次大於此值,則會傳回此記錄批次,確保進度。message.max.bytes (代理程式組態) 或 max.message.bytes (主題組態) 會定義代理程式接受的記錄批次大小上限。

Apache Kafka 預設

replica.selector.class

實作 的完整類別名稱 ReplicaSelector。代理程式會使用此值尋找偏好的讀取複本。如果您想要允許取用者從最近的複本擷取,請將此屬性設定為 org.apache.kafka.common.replica.RackAwareReplicaSelector

Apache Kafka 預設

socket.receive.buffer.bytes

通訊端伺服器通訊端的 SO_RCVBUF 緩衝區。若此值為 -1,將採用 OS 預設值。

102400

socket.request.max.bytes

通訊端要求內的位元組數量上限。

104857600

socket.send.buffer.bytes

通訊端伺服器通訊端的 SO_SNDBUF 緩衝區。若此值為 -1,將採用 OS 預設值。

102400

transaction.max.timeout.ms

交易的最大逾時值。如果用戶端請求的交易時間超過此值,代理程式會傳回錯誤 InitProducerIdRequest。如此可避免用戶端逾時時間過長,拖延取用者讀取交易中的主題。

Apache Kafka 預設

transactional.id.expiration.ms

在交易協調器將交易 ID 視為過期之前,等待接收目前交易的交易狀態更新所用的時間 (毫秒)。此設定也會影響生產者 ID 過期,因為它會導致生產者IDs在指定生產者 ID 的最後一次寫入後經過此時間時過期。如果由於主題的保留設定而刪除生產者 ID 的最後一個寫入,生產者IDs可能會提早過期。此屬性的最小值為 1 毫秒。

Apache Kafka 預設

Express Brokers 上的動態組態

您可以使用 Apache Kafka AlterConfig API 或 Kafka-configs.sh 工具來編輯下列動態組態。Amazon 會MSK設定和管理您未設定的所有其他屬性。您可以動態設定不需要重新啟動代理程式的叢集層級和代理程式層級組態屬性。

Express 代理程式動態組態
屬性 描述 預設值

advertised.listeners

如果與listeners組態屬性不同,則要發佈供用戶端使用的接聽程式。在 IaaS 環境中,這可能需要與代理程式繫結的界面不同。如果未設定,則會使用接聽程式的值。與接聽程式不同,公告 0.0.0.0 中繼地址是無效的。

與 不同listeners,此屬性中也有重複的連接埠,因此可以設定一個接聽程式來公告另一個接聽程式的地址。這在某些使用外部負載平衡器的情況下非常有用。

此屬性設定為每個經紀人層級。

null

compression.type

特定主題的最終壓縮類型。您可將此屬性設定為標準壓縮轉碼器 (gzipsnappylz4zstd)。它還可接受 uncompressed。這個值相當於無壓縮。如果將該值設定為 producer,就代表保留生產者設定的原始壓縮轉碼器。

Apache Kafka 預設

log.cleanup.policy

保留時段外的區段預設清除政策。以逗號分隔的有效政策清單。有效政策為 deletecompact。對於已啟用分層儲存的叢集,有效政策delete僅為 。

Apache Kafka 預設

log.message.timestamp.after.max.ms

訊息時間戳記與代理程式時間戳記之間的允許時間戳記差異。訊息時間戳記可以大於或等於代理程式的時間戳記,其最大允許差異取決於此組態中設定的值。如果 log.message.timestamp.type=CreateTime,當時間戳記的差異超過此指定的閾值時,訊息會遭到拒絕。如果 ,則會忽略此組態log.message.timestamp.type=LogAppendTime

86400000 (24 * 60 * 60 * 1000 毫秒,即 1 天)

log.message.timestamp.before.max.ms

代理程式時間戳記與訊息時間戳記之間的允許時間戳記差異。訊息時間戳記可以早於或等於代理程式的時間戳記,其最大允許差異取決於此組態中設定的值。如果 log.message.timestamp.type=CreateTime,當時間戳記的差異超過此指定的閾值時,訊息會遭到拒絕。如果 ,則會忽略此組態log.message.timestamp.type=LogAppendTime

86400000 (24 * 60 * 60 * 1000 毫秒,即 1 天)

log.message.timestamp.type

指定訊息內的時間戳記是訊息建立時間還是日誌附加時間。允許的值為 CreateTimeLogAppendTime

Apache Kafka 預設

log.retention.bytes

日誌被刪除前的大小上限。

Apache Kafka 預設

log.retention.ms

刪除日誌檔案之前要保留的毫秒數。

Apache Kafka 預設

max.connection.creation.rate

代理程式隨時允許的最大連線建立速率。

Apache Kafka 預設

max.connections

代理程式隨時允許的最大連線數。除了使用 設定的任何每個 IP 限制之外,也會套用此限制max.connections.per.ip

Apache Kafka 預設

max.connections.per.ip

每個 IP 地址允許的連線數上限。0 如果使用 max.connections.per.ip.overrides 屬性設定覆寫,則可以將此設定為 。如果達到限制,則會捨棄來自 IP 地址的新連線。

Apache Kafka 預設

max.connections.per.ip.overrides

以逗號分隔的每 IP 或主機名稱清單會覆寫預設的最大連線數。範例值為 hostName:100,127.0.0.1:200

Apache Kafka 預設

message.max.bytes

Kafka 允許的最大記錄批次大小。若此值增加,且有取用者的版本低於 0.10.2,則必須上調取用者的擷取大小,取用者才能擷取此大小的記錄批次。在最新的訊息格式版本中,訊息一律會分組進不同批次,以增進效率。在之前的訊息格式版本中,未壓縮的記錄不會分組進批次,當時,此限制僅適用於單一記錄。您可以使用主題層級max.message.bytes組態為每個主題設定此值。

Apache Kafka 預設

producer.id.expiration.ms

主題分割區領導在生產者 過期之前等待的時間,以毫秒為單位IDs。與其相關聯的交易仍在進行中時,生產者IDs不會過期。請注意,如果由於主題的保留設定而刪除生產者 ID 的最後一個寫入,生產者IDs可能會提早過期。將此值設定為與 相同或更高,delivery.timeout.ms有助於防止重試期間過期,並防止訊息重複,但對於大多數使用案例,預設值應該是合理的。

Apache Kafka 預設

Express Brokers 的主題層級組態

您可使用 Apache Kafka 命令來設定或修改新的和現有主題的主題層級組態屬性。如果您無法提供任何主題層級的組態,Amazon MSK會使用代理程式預設值。如同代理程式層級組態,Amazon 會MSK保護某些主題層級組態屬性免於變更。範例包括複寫係數 min.insync.replicasunclean.leader.election.enable。如果您嘗試使用 以外的複寫係數值建立主題3,Amazon 預設MSK會建立複寫係數為 的主題3。如需有關主題層級組態屬性的詳細資訊及其設定範例,請參閱 Apache Kafka 文件中的 Topic-Level Configs

Express Brokers 的主題層級組態
屬性 描述

cleanup.policy

此組態會指定要在日誌區段上使用的保留政策。「刪除」政策 (預設為預設值) 會在達到保留時間或大小限制時捨棄舊區段。「壓縮」政策會啟用日誌壓縮,這會保留每個金鑰的最新值。您也可以在逗號分隔清單中指定兩個政策 (例如,「刪除、壓縮」)。在此情況下,舊區段會依保留時間和大小組態捨棄,而保留區段則會壓縮。在分割區中的資料達到 256 MB 之後,就會觸發對 Express 代理程式的壓縮。

compression.type

指定指定主題的最終壓縮類型。此組態接受標準壓縮轉碼器 (gzipsnappylz4、)zstd。此外uncompressed,它還接受相當於沒有壓縮的 ;producer這表示 會保留生產者設定的原始壓縮轉碼器。

max.message.bytes

Kafka 允許的最大記錄批次大小 (壓縮後,如果啟用壓縮)。如果此值增加,且消費者的擷取大小超過 0.10.2,則消費者的擷取大小也必須增加,以便他們可以擷取如此大的記錄批次。在最新的訊息格式版本中,記錄一律會分組進不同批次,以增進效率。在之前的訊息格式版本中,未壓縮的記錄不會分組進批次,當時此限制僅適用於單一記錄。這可以在主題層級 的每個主題設定max.message.bytes config

message.timestamp.after.max.ms

此組態會設定訊息時間戳記與代理程式時間戳記之間的允許時間戳記差異。訊息時間戳記可以大於或等於代理程式的時間戳記,其最大允許差異取決於此組態中設定的值。如果 message.timestamp.type=CreateTime,當時間戳記的差異超過此指定的閾值時,訊息會遭到拒絕。如果 ,則會忽略此組態message.timestamp.type=LogAppendTime

message.timestamp.before.max.ms

此組態會設定代理程式時間戳記與訊息時間戳記之間的允許時間戳記差異。訊息時間戳記可以早於或等於代理程式的時間戳記,其最大允許差異取決於此組態中設定的值。如果 message.timestamp.type=CreateTime,當時間戳記的差異超過此指定的閾值時,訊息會遭到拒絕。如果 ,則會忽略此組態message.timestamp.type=LogAppendTime

message.timestamp.type

定義訊息中的時間戳記是訊息建立時間還是日誌附加時間。值應為 CreateTimeLogAppendTime

retention.bytes

此組態控制如果我們使用「刪除」保留政策,在我們捨棄舊日誌區段以釋放空間之前,分割區 (由日誌區段組成) 可以成長到的最大大小。根據預設,沒有大小限制,只有時間限制。由於此限制是在分割區層級強制執行,請將它乘以分割區數量,以位元組為單位計算主題保留。此外, 獨立於 segment.mssegment.bytes組態retention.bytes configuration運作。此外,如果 retention.bytes 設定為零,它會觸發新客群的滾動。

retention.ms

如果使用「刪除」保留政策,則此組態會控制在捨棄舊日誌區段之前保留日誌的時間上限,以釋放空間。這表示 消費者SLA必須多快讀取其資料。如果設定為 -1,則不會套用時間限制。此外,retention.ms組態的運作會獨立於 segment.mssegment.bytes組態。此外,如果滿足retention.ms條件,它會觸發新客群的滾動。