

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

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

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

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

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

## 實作指引
<a name="implementation-guidance"></a>

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

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


 

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

![\[顯示使用緩衝或限流建立平滑尖峰的工作負載的波形圖。\]](http://docs.aws.amazon.com/zh_tw/wellarchitected/2024-06-27/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/)
+ [ 管理和監控工作負載中的API限流 ](https://aws.amazon.com/blogs/mt/managing-monitoring-api-throttling-in-workloads/)
+ [ 使用 API Gateway REST API 大規模限流分層多租戶 ](https://aws.amazon.com/blogs/architecture/throttling-a-tiered-multi-tenant-rest-api-at-scale-using-api-gateway-part-1/)
+ [使用佇列與訊息進行應用程式整合](https://aws.amazon.com/blogs/architecture/application-integration-using-queues-and-messages/)

 **相關影片：**
+ [AWS re：Invent 2022 - 微服務的應用程式整合模式 ](https://www.youtube.com/watch?v=GoBOivyE7PY)
+ [AWS re：Invent 2023 - 智慧節省：Amazon EC2成本最佳化策略 ](https://www.youtube.com/watch?v=_AHPbxzIGV0)
+ [AWS re：Invent 2023 - 鬆散耦合系統的進階整合模式和權衡 ](https://www.youtube.com/watch?v=FGKGdUiZKto)