0

這個問題與應用程序開發並不完全相關,但從體系結構的角度來看並非如此。假設一個應用程序必須在AWS上託管,這將需要來自多個外部第三方持有數據庫的通信(不是必須在AWS上,可能是他們自己的數據中心或託管) - 也許一個客戶端將使用MySQL,另一個客戶端一個MSSQL或Oracle等。AWS上託管的應用程序訪問多個外部數據庫

因此,保存在這些外部數據庫中的數據可能會頻繁更改,並且應用程序應始終檢索更新的數據。我能想到的一種方式是使用另一個RDBMS數據庫(從我們這邊)專門存儲來自外部數據庫的所有這些數據,並始終保持我們的數據庫同步。但我不確定這是否是實現這一目標的好方法。

或者是否需要使用像Redshift這樣的數據倉庫工具來存儲實時同步的所有數據,然後在我們的應用程序中使用DW數據?根據這裏的架構師,這對於實現這個目標有什麼好的解決方案,主要是通過多個外部數據庫連接和同步?

+0

您可以連接VPC和遠程數據中心之間的連接,也可以使用Direct Connect服務實現更好的連接。 –

+0

如果您可以提供更多關於您的用例的信息以提供更好的答案,那將是非常好的。那麼你指的是什麼樣的應用程序?瞭解您在這些外部數據庫中所擁有的大致數據量也很重要。你需要同步所有的數據還是部分?您需要多久才能將新數據提供給其他數據庫? – Ashan

+0

@Ashan:這可能是一個將被公衆使用的移動應用程序(android/ios)。我無法找到外部數據庫的確切大小。由於從我需要檢索數據的位置將會有多個位置/客戶端數據庫,因此我認爲至少有一個TB數據在那裏。所以,如果沒有同步數據的解決方案,我沒關係 - 只是我的移動應用程序應該與許多客戶端的許多DB進行通信並實時獲取所需的信息。 我希望這會給你一個更大的圖片。 – serverstackqns

回答

2

對於您的用例,我會建議創建一個REST API,它將作爲移動應用程序的後端服務。

有幾個原因,你不應該使用你的手機應用程序直接連接到後端數據庫。

安全風險

  • 需要使數據庫可公開訪問的這是一個很高的安全風險。
  • 另一個安全風險是存儲移動應用程序內的數據庫訪問憑據。

性能

  • 與數據庫可能會導致相對於在那裏,如果你有一個後端服務,它可以優化發送和基於不同來源的合併後接收數據的批量數據傳輸性能問題直接溝通在查詢。
  • 也可以通過API或後端服務來獲得服務器端緩存的好處。

通過您的API通用數據視圖,您可以連接到多個數據庫並相應地檢索數據,還可以處理API內的身份驗證和授權。

下圖說明了在AWS中使用無服務器技術堆棧(API網關& Lambda)構建可連接到多個後端數據庫的API的架構。

Serverless Architecture Solution

幾點突出

  • 您可以根據您的業務邏輯的複雜性具有單一的λ或多個lambda函數決定。
  • 建議將所有Lambda放入VPC,然後與您的遠程數據中心建立VPN連接,以便數據庫訪問不需要公開公開。
+0

That's awesome ..但你的意思是: 1.創建不同數據庫的API,當請求進入特定點時,重定向到那裏.. 或 2.創建一個將與多個DB層。如果是這種情況,我應該如何存儲多個連接字符串和憑證以及如何訪問它。 – serverstackqns

+0

我指的是選項2創建一個API並與多個數據庫通信。您有多個選項來存儲數據庫密鑰。最安全的方法是將它們存儲在AWS KMS中,並允許從Lambda訪問它們。否則,您可以將它們保留在Lambda環境變量中。 除了上述建議的解決方案之外,您還可以設置Web服務器來執行此操作(但由於節省成本和開發速度,我建議使用無服務器) – Ashan

2

從那裏開始:

所以基本上你需要建立一個移動應用程序,這需要 檢索距離不同 數據中心不同的數據庫都用於讀取和寫入數據

最便宜的方法是允許應用程序直接連接到這些數據庫,因此根本不需要額外的基礎架構。缺點:安全性(您必須將數據庫憑據存儲在mob.client上)並且不可能實現集中式緩存。

選項2:修改您的應用程序以使用位於AWS的中介,並依次連接到緩存和原始數據庫。也許API網關可能派上用場。如果你需要中間人真的很快,我建議使用不是lambda,而是使用ec2自動縮放。需要一些錢和時間。

選項2.5:除了選項2之外,還可以將DB從站作爲只讀副本添加到AWS賬戶。更快但更昂貴。

選項3:將數據庫移動到AWS並將舊副本留在舊位置。從業務角度來看可能是不可能的。

選項4:在ec2上的原始數據庫和數據庫之間設置master-master複製(RDS不允許master-master afaik)。缺點:我不確定穩定性。

不要忘記在傳輸過程中加密您的數據庫流量,默認情況下不會使用SSL進行安全保護。

相關問題