

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

# 可靠性支柱
<a name="reliability-pillar"></a>

[可靠性支柱](https://docs.aws.amazon.com/wellarchitected/latest/framework/reliability.html)包含工作負載在預期情況下正確且一致地執行其預期功能的能力。包括在整個生命週期中執行及測試工作負載。

可靠的工作負載始於對軟體和基礎設施的前期設計決策。您的架構選擇會影響所有 AWS Well-Architected 支柱的工作負載行為。為求可靠性，您必須依循特定模式。

可靠性支柱著重於下列關鍵領域：
+ 工作負載架構，包括服務配額和部署模式
+ 變更管理
+ 故障管理

## 了解 Neptune 服務配額
<a name="neptune-quotas"></a>

除了中國和 GovCloud AWS 區域 之外，所有支援的 [Neptune 叢集磁碟](https://docs.aws.amazon.com/neptune/latest/userguide/feature-overview-storage.html)區大小上限為 128 TB (TiB)，其中配額為 64 TiB。

128 TiB 配額足以在圖形中存放約 200-4000 億個物件。在已標記的屬性圖表 (LPG) 中，[物件](https://docs.aws.amazon.com/neptune/latest/userguide/graph-get-started.html)是節點或節點或邊緣上的節點、邊緣或屬性。在資源描述架構 (RDF) 圖形中，物件是四[元](https://docs.aws.amazon.com/neptune/latest/userguide/feature-overview-data-model.html)組。

對於任何 [Neptune Serverless 叢集](https://docs.aws.amazon.com/neptune/latest/userguide/neptune-serverless-capacity-scaling.html)，您可以同時設定 Neptune 容量單位 (NCUs的最小和最大數量。每個 NCU 包含 2 GB (GiB) 的記憶體和相關聯的 vCPU 和聯網。最小和最大 NCU 值適用於叢集中的任何無伺服器執行個體。您可以設定的最大 NCU 值最高為 128.0 NCU，而最小值最低為 1.0 NCU。透過觀察 Amazon CloudWatch 指標`ServerlessDatabaseCapacity`並擷取您經常在其中執行的範圍，並關聯該範圍內的不良行為或成本`NCUUtilization`，來最佳化最適合您應用程式的 NCU 範圍。在許多工作負載中，1.0 NCU 的起點太低，並在閒置一段時間後導致不可靠的行為。如果您發現工作負載擴展速度不夠快，請增加最小 NCUs，以便在擴展時為初始突增提供足夠的處理。

對於您可以建立的資料庫資源數量，每個 AWS 帳戶 都有每個區域的配額。這些資源包括資料庫執行個體和資料庫叢集。在您到達某項資源的上限時，所發出用來建立該資源的額外呼叫都會伴隨著異常而失敗。有些配額是可依請求增加的軟性配額。如需 Amazon Neptune 與 Amazon RDS、Amazon Aurora 和 Amazon DocumentDB （具有 MongoDB 相容性） 之間共用的配額清單，以及可用時請求增加配額的連結，請參閱 [Amazon RDS 中的配額](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Limits.html#RDS_Limits.Limits)。

## 了解 Neptune 部署模式
<a name="deployment-patterns"></a>

在 Neptune 資料庫叢集中，有一個主要資料庫執行個體和最多 15 個 Neptune 複本。主要資料庫執行個體支援讀取和寫入操作，並對叢集磁碟區執行所有資料修改。Neptune 複本會連線至與主要資料庫執行個體相同的儲存磁碟區，而且僅支援讀取操作。Neptune 複本可以從主要資料庫執行個體卸載讀取工作負載。

若要實現高可用性，請使用僅供讀取複本。在不同的可用區域中擁有一或多個僅供讀取複本執行個體可提高可用性，因為僅供讀取複本可做為主要執行個體的容錯移轉目標。如果寫入器執行個體失敗，Neptune 會將僅供讀取複本執行個體提升為主要執行個體。發生這種情況時，提升的執行個體重新啟動時會短暫中斷 （通常少於 30 秒），在此期間，對主要執行個體發出的讀取和寫入請求會失敗，但有例外。為了取得最高的可靠性，請考慮使用不同可用區域中的兩個僅供讀取複本。如果可用區域 1 中的主要執行個體離線，可用區域 2 中的執行個體會提升為主要執行個體，但在發生這種情況時無法處理查詢。因此，在轉換期間需要可用區域 3 中的執行個體來處理讀取查詢。

如果您使用的是 Neptune Serverless，所有可用區域中的讀取器和寫入器執行個體都會根據其資料庫負載來獨立擴展和縮減規模。您可以將讀取器執行個體的提升層設定為 0 或 1，以便隨著寫入器執行個體的容量向上和向下擴展。這可讓您隨時接管目前的工作負載。

如果您的應用程式具有全球足跡或需要[多區域容錯移轉](https://docs.aws.amazon.com/neptune/latest/userguide/neptune-gdb-disaster-recovery.html)，請考慮使用 [Neptune 全域資料庫](https://docs.aws.amazon.com/neptune/latest/userguide/neptune-global-database.html)。Amazon Neptune 全域資料庫跨越多個 AWS 區域，啟用低延遲全域讀取，並在中斷影響整個 的罕見情況下提供快速復原 AWS 區域。Neptune 全域資料庫包含一個區域中的主要資料庫叢集，以及不同區域中最多五個次要資料庫叢集。

## 管理和擴展 Neptune 叢集
<a name="managing-and-scaling-neptune-clusters"></a>

您可以使用 [Neptune 自動調整規模](https://docs.aws.amazon.com/neptune/latest/userguide/manage-console-autoscaling.html)來自動調整資料庫叢集中的 Neptune 複本數量，以根據 CPU 使用率閾值滿足您的連線和工作負載需求。透過自動擴展，Neptune 資料庫叢集可以處理工作負載突然增加的情況。當工作負載減少時，自動擴展會移除不必要的複本，這樣您就不會支付未使用的容量。請注意，新的執行個體啟動可能需要長達 15 分鐘的時間，因此僅自動擴展並不足以因應快速的需求變化。

您只能將自動擴展與已有一個主要寫入器執行個體和至少一個僅供讀取複本執行個體的 Neptune 資料庫叢集搭配使用 [（請參閱 Amazon Neptune 資料庫叢集和執行個體](https://docs.aws.amazon.com/neptune/latest/userguide/feature-overview-db-clusters.html))。此外，叢集中的所有僅供讀取複本執行個體都必須處於可用狀態。如果任何僅供讀取複本處於可用以外的狀態，Neptune 自動擴展不會執行任何動作，直到叢集中的每個僅供讀取複本都可用為止。

如果您遇到需求快速變化，請考慮使用無伺服器執行個體。無伺服器執行個體可以在短時間內垂直擴展，而自動擴展會在較長的期間水平擴展。此組態提供最佳可擴展性，因為無伺服器執行個體垂直擴展，而自動擴展會執行個體化新的僅供讀取複本，以處理超過單一無伺服器執行個體最大容量的工作負載。如需 Amazon Neptune Serverless 容量擴展的詳細資訊，請參閱 [Neptune Serverless 資料庫叢集中的容量擴展](https://docs.aws.amazon.com/neptune/latest/userguide/neptune-serverless-capacity-scaling.html)。

如果您的擴展需要在可預測的時間變更，您可以將[變更排程](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-scheduled-scaling.html)到最小執行個體、最大執行個體和閾值，以更好地處理這些轉移需求。請記得至少提前 15 分鐘排程橫向擴展事件，以允許這些執行個體在需要時上線。

您可以使用參數群組中的[參數](https://docs.aws.amazon.com/neptune/latest/userguide/parameter-groups.html)，在 Amazon Neptune 中管理資料庫組態。參數群組扮演引擎組態值的*容器*，以套用至一或多個資料庫執行個體。修改參數群組中的叢集參數時，請了解靜態和動態參數之間的差異，以及套用它們的方式和時間。使用[狀態](https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-status.html)端點來查看目前套用的組態。

## 管理備份和容錯移轉事件
<a name="backup-failure"></a>

Neptune 會自動備份叢集磁碟區，並在備份保留*期間保留備份*的資料。Neptune 備份具有連續性和增量性，因此，您可以快速還原到備份保留期內的任何時間點。您可以在建立或修改資料庫叢集時指定 1–35 天的備份保留期。

若要在備份保留期間之後保留備份，您也可以擷取叢集磁碟區中資料的快照。儲存快照需要支付 Neptune 的標準儲存費用。

當您建立資料庫叢集的 Amazon Neptune 快照時，Neptune 會建立叢集的儲存磁碟區快照，備份其所有資料，而不只是個別執行個體。您稍後可以從這個資料庫叢集快照進行還原來建立新的資料庫叢集。當您還原資料庫叢集時，請提供要還原的資料庫叢集快照名稱，然後提供還原所建立之新資料庫叢集的名稱。

測試您的系統如何回應容錯移轉事件。使用 Neptune API [強制容錯移轉事件](https://docs.aws.amazon.com/neptune/latest/apiref/API_FailoverDBCluster.html)。當您想要模擬資料庫執行個體的故障進行測試，或在[容錯移轉](https://docs.aws.amazon.com/neptune/latest/apiref/API_RebootDBInstance.html)發生後將操作還原至原始可用區域時，使用容錯移轉重新啟動會很有幫助。如需詳細資訊，請參閱[設定和管理異地同步備份部署](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.MultiAZ.html)。當您重新啟動資料庫寫入器執行個體時，它會容錯移轉至待命複本。重新啟動 Neptune 複本不會啟動容錯移轉。

為您的用戶端設計可靠性。在容錯移轉事件期間測試其行為。在用戶端中以指數退避邏輯實作重試邏輯。您可以在 [AWS Lambda Amazon Neptune 函數範例下的文件中找到實作此邏輯的程式碼範例](https://docs.aws.amazon.com/neptune/latest/userguide/lambda-functions-examples.html)。

[AWS Backup](https://aws.amazon.com/blogs/storage/centralizing-data-protection-and-compliance-for-amazon-neptune-with-aws-backup/) 如果您有一組通用的備份需求，可套用至多個資料庫引擎，請考慮使用 。