簡體   English   中英

Windows Azure和多個存儲帳戶

[英]Windows Azure and multiple storage accounts

我有一個ASP.NET MVC 2 Azure應用程序,我試圖從單租戶切換到多租戶。 我一直在審查Stack Overflow上的許多博客和帖子和問題,但我仍然試圖圍繞這個特定應用程序的特定內容。

目前,該應用程序將一些信息存儲在SQL Azure數據庫中,以及Azure存儲帳戶中的一些其他信息。 我正在考慮編寫租戶配置代碼,以便為新租戶創建一個新數據庫,以及一個新的azure存儲帳戶。 這讓我想到以下問題:

我將如何在本地測試此方法? 據我所知,本地Azure存儲模擬器只有1個存儲帳戶。 我不確定我是否能夠在本地創建其他人。 我怎樣才能在本地測試? 或者它可能嗎?

多租戶有許多方面需要考慮,其中一個是數據架構。 您還擁有計費,性能,安全性等。

關於數據架構,讓我們首先探討SQL存儲。 您可以使用以下選項:添加代碼將用於過濾記錄的CustomerID(或其他標識符),為不同的客戶使用不同的模式容器(每個客戶都有自己的專用模式擁有的所有數據庫對象的副本)在數據庫中),線性分片(每個客戶都有自己的數據庫)和聯合(SQL Azure的一個功能,它提供基於性能和可伸縮性需求的漸進分片)。 所有這些選項都是有效的,但對性能,可伸縮性,安全性,維護(例如備份),成本以及數據庫設計有不同的影響。 根據您提供的信息,我無法告訴您選擇哪一個; 如果您已經擁有代碼庫,某些模型比其他模型更容易實現。 一般來說,線性分片是最簡單的模型,可以提供強大的客戶隔離,但也許是最昂貴的。 基於模式的分離並不太難,但需要很好地處理安全性要求,並且可能引入跨客戶性能問題,因為這種方法不是無共享的(對於同一數據庫中的客戶)。 最后,聯合會需要使用客戶識別器,並且有一些限制; 但是,這項技術可以讓您更好地控制性能分布和長期可擴展性(因為像線性分片一樣,Federation使用無共享架構)。

關於存儲帳戶,每個客戶使用不同的存儲帳戶絕對是最佳選擇。 如果不使用單獨的存儲帳戶,將面臨的主要問題是性能限制,例如可以使用單個存儲帳戶執行的每秒最大事務數。 然而,正如您所指出的那樣,本地測試可能是一個問題; 但請考慮這一點:本地模擬器不提供與Azure存儲帳戶的100%奇偶校驗(模擬器中不支持某些功能)。 所以我只會使用本地模擬器進行初始開發和故障排除。 任何嚴肅的測試,包括多租戶測試,都應該使用真實的存儲帳戶來完成。 這是您可以完全測試應用程序的唯一方法。

您應該考慮不創建單獨的數據庫,而是在單個SQL數據庫中創建不同的對象命名空間。 每個租戶都可以擁有自己的一組表。

根據您使用存儲的方式,您可以為每個客戶端創建單獨的存儲容器或消息隊列。

鑒於這些約束,您應該能夠使用存儲模擬器和本地SQL實例進行本地測試。

如果您需要進一步說明,請與我們聯系。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM