全部產品
Search
文件中心

Simple Log Service:管理Shard

更新時間:Oct 17, 2025

Log Service使用Shard控制Logstore、EventStore、MetricStore的讀寫資料的能力,資料必定儲存在某一個Shard中。通過分裂、合併作業控制活躍的Shard數量來調整Log Service提供的最大讀寫能力。分裂Shard可以自動觸發,但合并Shard必須手動執行。

基本概念

Shard範圍

每個Shard均有範圍,為MD5左閉右開區間[BeginKey,EndKey)。每個Shard範圍不會相互覆蓋,且屬於整個MD5範圍內[00000000000000000000000000000000,ffffffffffffffffffffffffffffffff)。在建立Logstore或MetricStore時指定Shard個數,Log Service將自動平均劃分整個MD5範圍。

  • BeginKey:指定Shard範圍的起始值,Shard範圍中包含該值。

  • EndKey:指定Shard範圍的結束值,Shard範圍中不包含該值。

例如Logstore A中包含4個Shard,各個Shard範圍如下:

表 1. Shard範圍

Shard ID

範圍

Shard0

[00000000000000000000000000000000,40000000000000000000000000000000)

Shard1

[40000000000000000000000000000000,80000000000000000000000000000000)

Shard2

[80000000000000000000000000000000,c0000000000000000000000000000000)

Shard3

[c0000000000000000000000000000000,ffffffffffffffffffffffffffffffff)

在Shard讀寫資料過程中,讀資料時必須指定Shard ID,寫資料時可通過負載平衡模式或者指定Hash Key的模式。

  • 負載平衡模式:每個資料包隨機寫入當前可用的Shard中。

    如果寫入流量大於單Shard的服務能力,建議採用負載平衡模式。

  • 指定Hash Key模式:指定MD5的Key值,資料將被寫入包含該Key值的Shard中。

    例如Shard範圍所示,當寫入資料時指定MD5的Key值為5F時,則資料將被寫入包含5F的Shard1上;當寫入資料時指定MD5的Key值為8C時,則資料將被寫入包含8C的Shard2上。

Shard的讀寫能力

每個Shard提供一定的服務能力,具體請參見資料讀寫

根據實際資料流量規劃Shard個數。當資料流量超出讀寫能力時,及時分裂Shard以增加Shard個數,從而達到更大的讀寫能力。當資料流量遠未達到Shard的最大讀寫能力時,及時合并Shard以減少Shard個數,從而降低活躍Shard租用費用。

重要
  • 當寫入資料的API持續報告403或者500錯誤時,通過LogstoreCloudMonitor查看流量和狀態代碼判斷是否需要增加Shard。

  • 超過Shard服務能力的讀寫,Log Service會儘可能服務,但不保證服務品質。

Shard狀態

Shard狀態包括readwrite(讀寫)和readonly(唯讀)。

建立Shard時,所有Shard狀態均為readwrite狀態。執行分裂或合併作業後,Shard狀態變更為readonly,並產生新的readwrite狀態的Shard。Shard狀態不影響其資料讀取的效能。readwrite狀態的Shard可保證資料寫入效能,readonly狀態的Shard不提供資料寫入服務。

分裂與合并

Log Service支援分裂和合并Shard。

  • 分裂操作是指將一個Shard分裂為另外兩個Shard,即分裂後Shard數量增加2。兩個新產生的Shard的狀態為readwrite,排列在原Shard之後且兩個Shard的MD5範圍覆蓋原Shard的MD5範圍。

    分裂Shard時,需指定一個處於readwrite狀態的Shard。分裂完成後,原Shard狀態由readwrite變為readonly,該Shard中的資料仍可被消費,但該Shard不支援寫入新資料。

  • 合併作業是指將兩個Shard合并為一個Shard。新產生的Shard的狀態為readwrite,排列在原Shard之後且其MD5範圍覆蓋原來兩個Shard的MD5範圍。

    合并Shard時,需指定一個處於readwrite狀態且未排列在最後一個的Shard,Log Service自動找到所指定Shard右側相鄰的Shard,並進行合并。合并完成後,原來兩個Shard的狀態由readwrite變為readonly,這兩個Shard中的資料仍可被消費,但這兩個Shard不支援寫入新資料。

分裂Shard

建議您根據實際業務資料流量規劃Shard個數。每個Shard支援5MB/s或500次/s的資料寫入、10MB/s或100次/s的資料讀取。此限制非硬性限制,超出限制時,系統會儘可能提供服務,但是不保證服務品質。當資料讀寫流量超出Shard讀寫能力時,需要及時分裂Shard以增加Shard個數,從而提供更高的讀寫能力。

說明

當寫入資料的API持續報告403或者500錯誤時,您可以通過LogstoreCloudMonitor查看流量和狀態代碼判斷是否需要增加Shard。

控制台操作

  1. 登入Log Service控制台

  2. 在Project列表地區,單擊目標Project。

    image

  3. 單擊image日誌儲存,在日誌庫中,將滑鼠懸浮在目標Logstore上,選擇修改日誌庫 > 修改

  4. Logstore屬性頁面中,單擊修改

  5. 選擇待分裂的Shard,單擊分裂

    重要

    分裂Shard時,需要選擇一個處於readwrite狀態的Shard。

    分裂分區

  6. 選擇分裂數量,單擊確定

  7. 單擊儲存

查看Shard

控制台操作

  1. 登入Log Service控制台

  2. 在Project列表地區,單擊目標Project。

    image

  3. 單擊image日誌儲存,在日誌庫中,將滑鼠懸浮在目標Logstore上,選擇修改日誌庫 > 修改

  4. Logstore屬性頁面中,查看當前Logstore的Shard列表。

    image

自動分裂Shard

Log Service支援自動分裂Shard,協助您自動處理業務流量超出預估值的情境。自動分裂Shard需要滿足以下幾個條件。

  • 開啟了自動分裂Shard開關。

  • 當寫入資料量超出當前Shard的寫入服務能力且持續5分鐘以上。

  • Logstore中readwrite狀態的Shard數目未超過設定的最大Shard總數。

說明

最近15分鐘內分裂出來的新Shard不會自動分裂。

您可以在建立或修改Logstore時開啟自動分裂Shard,並設定Shard的最大分裂數。

  • 自動分裂Shard

    例如原本存在4個Shard,Log Service會獨立判斷各個Shard是否滿足分裂條件。滿足分裂條件的Shard會各自進行分裂,分裂總數不會超過您所設定的最大分裂數。

  • 最大分裂數

    Shard自動分裂的最大總數目。開啟自動分裂Shard功能後,最多支援自動分裂至256個readwrite狀態的Shard。

合并Shard

當資料讀寫流量遠達不到Shard的最大讀寫能力時,建議您合并Shard,降低活躍Shard租用費用。您可以通過合併作業減少Shard數量,Log Service會找到指定Shard右側相鄰的Shard,並將兩個Shard合并。合并Shard只支援手動操作,無法自動合并。

重要

合并Shard時,必須指定一個處於readwrite狀態的Shard,且不能是最後一個readwrite狀態的Shard。

  1. 單擊image日誌儲存,在日誌庫中,將滑鼠懸浮在目標Logstore上,選擇修改日誌庫 > 修改

  2. Logstore屬性頁面中,單擊修改

  3. 選擇待合并的Shard,單擊合并

    合并分區

  4. 單擊儲存

    合并完成後,所指定的Shard及其右側相鄰Shard的狀態變成readonly。同時新產生一個readwrite狀態的Shard,新Shard的MD5範圍覆蓋原來兩個Shard的範圍。

刪除Shard

警告

刪除Shard後,無法恢複,請謹慎操作。

  • 自動刪除

    如果您在建立Logstore時設定了資料儲存時間,那麼Shard及Shard中的資料超出儲存時間後會被自動刪除。

  • 手動刪除

    如果您在建立Logstore時開啟了永久儲存,建議您通過刪除Logstore的方式刪除Logstore中的Shard和資料。更多資訊,請參見停止計費/刪除Logstore

Shard介面

操作

介面

分裂Shard

SplitShard

合并Shard

MergeShard

查詢Shard

ListShards