本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
如果您的叢集中有一或多個僅供讀取複本,平衡這些複本之間的讀取要求是好主意。一種選項是使用讀取器端點。讀取器端點會平衡複本之間的連線,即使叢集拓撲在您新增或移除複本時發生變更,或提升複本以變成新的主要執行個體時也一樣。
不過,在某些情況下,使用讀取器端點可能會導致叢集資源的使用不均。讀取器端點的運作方式是定期變更 DNS 項目指向的主機。如果用戶端在 DNS 項目變更之前開啟了許多連線,則所有連線請求都會傳送至單一 Neptune 執行個體。在高輸送量 Lambda 案例中可能會發生這種情況,其中對 Lambda 函數的大量並行請求會導致建立多個執行內容,而每個內容都有自己的連線。如果這些連線幾乎全都同時建立,則連線很可能都指向叢集中的相同複本,並一直指向該複本,直到回收執行內容為止。
在執行個體之間分發請求的一種方式是,將 Lambda 函數設定為連線至執行個體端點 (從複本執行個體端點清單中隨機選擇),而不是讀取器端點。這種方法的缺點是它需要 Lambda 程式碼來處理叢集拓撲中的變更,方法是監控叢集,並且每當叢集的成員資格變更時就更新端點清單。
如果您正要編寫一個 Java Lambda 函數,其需要平衡叢集中執行個體之間的讀取請求,則您可以使用適用於 Amazon Neptune 的 Gremlin 用戶端