シャードは、LogstoreまたはMetricstoreの読み取りおよび書き込み容量を制御するために使用されます。 Log Serviceでは、データはシャードに保存されます。

MD5値の範囲

各シャードにはMD5値の範囲があります。 であり、各範囲は [BeginKey, EndKey) の形式で左閉じ、右開いた区間です。 各範囲は、他のシャードの範囲と重複しません。 MD5値の範囲全体が次の範囲内にあります: [00000000000000000000000000000000, ffffffffffffffffffffffffffffffff) 。 LogstoreまたはMetricstoreを作成するときに、シャードの数を指定できます。 Log Serviceは、各シャードのMD5値の範囲全体を均等に分割します。
  • BeginKey: シャードの始まり。 値は、シャードのMD5値範囲に含まれます。
  • EndKey: シャードの終わり。 値は、シャードのMD5値範囲から除外されます。
この例では、Logstore Aに4つのシャードがあります。 次の表に、各シャードのMD5値の範囲を示します。
表 1. MD5値の範囲
シャードID値の範囲
Shard0[00000000000000000000000000000000,40000000000000000000000000000000)
Shard1[40000000000000000000000000000000,80000000000000000000000000000000)
Shard2[80000000000000000000000000000000, c00000000000000000000000000000000000)
Shard3[c0000000000000000000000000000000,ffffffffffffffffffffffffffffffff)
シャードからデータを読み取るには、シャードのIDを指定する必要があります。 データをシャードに書き込むには、負荷分散方法を使用するか、ハッシュキーを指定します。
  • 負荷分散方式を使用する場合、各データパケットは使用可能なシャードにランダムに書き込まれます。
  • ハッシュキーを指定すると、MD5値の範囲に指定されたハッシュキーの値が含まれるシャードにデータが書き込まれます。

    たとえば、シャード範囲はMD5値の範囲で表示されます。 Logstoreにデータを書き込むためのハッシュキーとして5Fを指定した場合、Shard1のMD5値の範囲にハッシュキー5Fが含まれているため、データはShard1に書き込まれます。 ハッシュキーとして8Cを指定した場合、Shard2のMD5値の範囲にハッシュキー8Cが含まれているため、データはShard2に書き込まれます。

シャード容量

各シャードは、次の読み取り容量と書き込み容量を提供します。
  • 書き込み容量: 5メガバイト/秒または500回 /秒
  • 読み取り容量: 10メガバイト/秒または100回 /秒

実際のデータトラフィックに基づいてシャードの数を調整することを推奨します。 データトラフィックがシャードの読み取りまたは書き込み容量を超える場合は、シャードを複数のシャードに分割して容量を増やすことができます。 データトラフィックがシャードの読み取りまたは書き込み容量よりもはるかに少ない場合は、シャードを別のシャードとマージして容量を減らし、コストを節約できます。

たとえば、2つのシャードがreadwrite状態にあり、シャードは最大10メガバイト/秒の書き込み容量を提供できます。 リアルタイムで14メガバイト/秒の速度でデータを書き込む必要がある場合は、1つのシャードを2つのシャードに分割することをお勧めします。 これにより、3つのシャードをreadwrite状態にすることができます。 リアルタイムで3メガバイト/秒の速度でデータを書き込む必要がある場合は、シャードをマージすることをお勧めします。

重要
  • Log Service APIを呼び出してデータを書き込むときにエラーコードの403または500が頻繁に返される場合は、CloudMonitorコンソールに移動してトラフィックコードとステータスコードを確認できます。 次に、シャードの数を増やすかどうかを判断できます。
  • データトラフィックがシャードの容量を超える場合、Log Serviceは可能な限り最高のサービスを提供しようとします。 ただし、Log Serviceはサービスの品質を保証できません。

シャードステータス

シャードは、readwrite (読み取りおよび書き込み) 状態またはreadonly (読み取り専用) 状態にすることができます。

シャードを作成すると、シャードはreadwrite状態になります。 シャードを分割またはマージすると、ステータスがreadonlyに変わります。 新しく生成されたシャードはreadwrite状態です。 シャードのステータスは、シャードの読み取り容量には影響しません。 リードライト状態のシャードにはデータを書き込むことができますが、リードオンリー状態のシャードにはデータを書き込むことはできません。

分割とマージ

Log Serviceを使用すると、シャードを分割およびマージできます。
  • シャードを分割すると、さらに2つのシャードが追加されます。 新しいシャードはreadwrite状態で、元のシャードの下にリストされます。 新しいシャードのMD5値の範囲には、元のシャードのMD5値の範囲が含まれます。

    シャードを分割する前に、シャードはreadwrite状態である必要があります。 シャードを分割すると、シャードのステータスがreadwriteからreadonlyに変わります。 これは、データをシャードから読み取ることはできますが、シャードに書き込むことはできません。

  • 2つのシャードを1つのシャードにマージできます。 新しいシャードはreadwrite状態で、元のシャードの下にリストされています。 新しいシャードのMD5値の範囲には、元の2つのシャードのMD5値の範囲が含まれます。

    シャードをマージするときは、readwrite状態のシャードを指定する必要があります。 このシャードをシャードリストの最後のシャードにすることはできません。 Log Serviceは、MD5値の範囲が指定されたシャードの横にあるシャードを検索し、2つのシャードをマージします。 シャードをマージすると、シャードのステータスがreadwriteからreadonlyに変わります。 これは、データをシャードから読み取ることはできますが、シャードに書き込むことはできません。