

# SUS02-BP06 實作緩衝或調節使需求曲線趨於扁平化
<a name="sus_sus_user_a7"></a>

緩衝和調節可讓需求曲線趨於扁平化，並減少您的工作負載所需的已佈建容量。

 **常見的反模式：** 
+ 您非必要地立即處理用戶端要求。
+ 您未分析用戶端要求的需求。

 **建立此最佳實務的優勢：**讓需求曲線趨於扁平化，可減少工作負載所需的已佈建容量。減少已佈建的容量意味著較低的能源耗用量和環境影響。 

 **未建立此最佳實務時的風險暴露等級：**低 

 使工作負載需求曲線扁平化，有助於減少工作負載所需的已佈建容量，以及降低對環境造成的影響。假設某個工作負載的需求曲線如下圖所示。此工作負載有兩個尖峰，為了處理這些尖峰，已佈建了資源容量 (以橙色線顯示)。用於此工作負載的資源和能源並非由需求曲線底下的區域表示，而是已佈建的容量底下的區域，因為這兩個尖峰必須用已佈建的容量處理。 

![\[已佈建容量的波形圖，內含兩個需要大量已佈建容量的相異尖峰。\]](http://docs.aws.amazon.com/zh_tw/wellarchitected/2023-04-10/framework/images/provisioned-capacity-1.png)


 

 您可以使用緩衝或調節來修正需求曲線，並使尖峰趨緩，意即減少已佈建的容量和耗用的能源。在用戶端可執行重試時實作調節。實作緩衝機制以儲存要求，並將處理的時間往後延遲。 

![\[此波形圖顯示使用緩衝或調節讓尖峰趨緩的工作負載。\]](http://docs.aws.amazon.com/zh_tw/wellarchitected/2023-04-10/framework/images/provisioned-capacity-2.png)


 

 **實作步驟** 
+  分析用戶端要求以判斷如何予以回應。應考量的問題包括： 
  +  此要求是否可進行非同步處理？ 
  +  用戶端是否有重試能力？ 
+  如果用戶端有重試功能，您可以實作調節，以告知來源若目前無法處理要求，則應稍後再試。 
  +  您可以使用 [Amazon API Gateway](https://aws.amazon.com/api-gateway/) 來實作調節。 
+  針對無法執行重試的用戶端，必須實作緩衝區使需求曲線扁平化。緩衝會延遲要求處理，讓以不同速率執行的應用程式能夠有效地通訊。緩衝為主方法使用佇列或串流來接受生產者傳出的訊息。消費者可讀取訊息並進行處理，允許以符合取用者業務要求的速度運作訊息。 
  +  [Amazon Simple Queue Service (Amazon SQS)](https://aws.amazon.com/sqs/) 是一個受管服務，可提供佇列，允許單一取用者讀取個別訊息。 
  +  [Amazon Kinesis](https://aws.amazon.com/kinesis/) 可提供串流，允許許多取用者讀取相同訊息。 
+  分析整體需求、變更率及所需的回應時間，以適當調整所需的調節或緩衝區大小。 

## 資源
<a name="resources"></a>

 **相關文件：** 
+ [Amazon SQS 入門](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.html)
+ [使用佇列和訊息進行應用程式整合](https://aws.amazon.com/blogs/architecture/application-integration-using-queues-and-messages/)

 **相關影片：** 
+ [為分散式應用程式選擇適當的傳訊服務](https://www.youtube.com/watch?v=4-JmX6MIDDI)