匯出 (0) 列印
全部展開

了解和管理 Azure 快取中的連線

更新日期: 2014年2月

使用 Microsoft Azure 快取 的應用程式必須了解如何開啟與目標伺服器的連線。這對於 Microsoft Azure Shared Caching 而言特別重要,因為每個 Shared Caching 提供項目可對相同快取同時開啟的連線數目限制都不同。如需詳細資訊,請參閱 Azure 共用快取常見問題集

角色中快取 角色上的 Azure 不會有任何連線的配額,因為快取可以在您自己 Azure 部署中的虛擬機器上執行。但是,即使是在這個專屬或共同存在的案例中,連線仍是相當重要的資源,因為它們是要建立的昂貴資源。共用連線可以改善效能。

此主題涵蓋下列與連線管理有關的領域:

連線共用

管理連線的方式取決於已啟用還是停用連線共用。下列各節說明兩個可能案例以及它們對連線帳戶處理的影響。

啟用連線共用

自 2011 年 11 月發行的 Microsoft Azure SDK 起,快取 提供連線共用功能。設定連線共用時,系統會將同一集區中的連線共用給單一應用程式執行個體使用。共用連線數目取決於 maxConnectionsToServer 組態設定 (預設值為 1)。下列範例顯示如何將應用程式組態檔中的這個設定變更為 2

  <dataCacheClient maxConnectionsToServer="2">

不論建立的 maxConnectionsToServer 物件數目為何,每個應用程式執行個體都會共用 DataCacheFactory 所指定的連線。因此,使用連線共用時,連線總數的公式為 maxConnectionsToServer 值乘上該 Azure 角色的執行中執行個體數目。

前一個範例假設使用了單一快取用戶端組態。請看看下列 Shared Caching 設定檔,其中含有兩個具名 dataCacheClient 區段。

<dataCacheClients>
  <dataCacheClient name="default" maxConnectionsToServer="2">
    <hosts>
      <host name="ExampleCache.cache.windows.net" cachePort="22233" />
    </hosts>
    <!-- Other Sections -->
  </dataCacheClient>

  <dataCacheClient name="SslEndpoint" maxConnectionsToServer="3">
    <hosts>
      <host name="ExampleCache.cache.windows.net" cachePort="22243" />
    </hosts>
    <!-- Other Sections -->
  </dataCacheClient>
</dataCacheClients>

在此範例中,應用程式可以建立多個 DataCacheFactory 執行個體,其中有些使用 "default" 組態,而有些使用 "SSlEndpoint" 組態。連線集區與單一組態有關。因此,即使兩個組態都指向相同快取 (ExampleCache),此快取的可能連線總數還是其 maxConnectionsToServer 值的總和 (即 5)。

當您使用 Microsoft Azure 快取的角色中快取 角色上所主控的 Microsoft Azure 時,連線共用並不一定是應用程式組態檔中的預設值。這是角色型之 角色中快取 的已知問題。若要對角色型 角色中快取 啟用連線共用,您必須明確將 useLegacyProtocol 設為 false。下列設定區段顯示使用此設定,而主控 角色中快取 的角色稱為 WebRole1

<dataCacheClients>
  <tracing sinkType="DiagnosticSink" traceLevel="Error" />
  <dataCacheClient name="default" useLegacyProtocol="false" >
    <autoDiscover isEnabled="true" identifier="WebRole1" />
  </dataCacheClient>
</dataCacheClients>

在此範例中,使用設為 falseuseLegacyProtocol 可確保使用連線共用。否則,角色型 角色中快取 預設不會啟用連線共用。

note附註
使用應用程式組態檔時,預設會在最新的 Microsoft Azure SDK 中啟用連線共用。如果您是透過程式設計方式設定 DataCacheFactoryConfiguration,則預設可能不會啟用連線共用,而且部分動作會停用連線共用。請參閱本主題中的連線共用的程式設計組態一節。

停用連線共用

連線共用時停用,每個 DataCacheFactory 物件都會使用一個連線。請務必初始化並儲存您的 DataCacheFactory 執行個體,以控制已開啟連線數目並達成最佳效能。

當您未使用連線共用時,快取所需的連線數目是以下列公式來定義:

[DataCacheFactory instances] * [MaxConnectionsToServer setting] * [Azure role instance count]

maxConnectionsToServer 預設為 1。如果您讓多個執行緒共用某個 DataCacheFactory 物件,可以增加此設定以改善效能。例如,如果 maxConnectionsToServer2,則每個 DataCacheFactory 物件都會使用兩個連線。

在此案例中,多個使用中 DataCacheFactory 物件都會使用 maxConnectionsToServer 所指定的連線數目。例如,如果此值為 2,而且有兩個 DataCacheFactory 執行個體,則共會使用四個連線。如果此角色有三個執行個體執行中,則連線總數增加為 12

在過去,這是預設行為。使用最新的 SDK 時,如果您使用應用程式組態檔,則預設會啟用連線共用。若要在組態檔中停用連線共用,請將 connectionPool 屬性設定為 false。下列組態檔顯示此設定。

  <dataCacheClient connectionPool="false">

如果您是透過程式設計方式設定快取用戶端,則連線共用不是預設值。如需程式設計組態和連線共用的詳細資訊,請參閱下一節:連線共用的程式設計組態

連線共用的程式設計組態

如果您透過程式設計方式設定快取用戶端,而未使用任何 快取 組態檔設定,則預設不會啟用連線共用。您必須採取特殊步驟,透過程式碼來啟用連線共用。

  1. 建立 DataCacheFactoryConfiguration 物件。設定標準設定 (例如 ServersSecurityProperties)。

  2. 透過傳遞新組態名稱、先前建立的 DataCacheFactoryConfiguration. CreateNamedConfiguration 物件,以及指出啟用 (true) 還是停用 (false) 連線共用的布林值旗標,呼叫靜態方法 (DataCacheFactoryConfiguration)。

  3. 透過在建構函式中傳遞已啟用連線共用之組態的新名稱,建立新的 DataCacheFactoryConfiguration 物件。這是您在前一個步驟中指定的名稱。

  4. 然後建立使用該組態的 DataCacheFactory 物件。

DataCacheFactoryConfiguration Config = new DataCacheFactoryConfiguration();

// Configure the DataCacheFactoryConfiguration with appropriate settings for your cache here:
// ...

// Set the MaxConnectionsToServer to control the size of the connection pool
Config.MaxConnectionsToServer = 3;

// Create a named configuration from this configuration and enable connection pooling
DataCacheFactoryConfiguration.CreateNamedConfiguration("MyConfigWithConnectionPooling", Config, true);

// Create a DataCacheFactoryConfiguration using the new named configuration that enabled connection pooling
DataCacheFactoryConfiguration ConfigWithPooling = new DataCacheFactoryConfiguration("MyConfigWithConnectionPooling");

// Use this new named configuration in the call to DataCacheFactory
DataCacheFactory factory = new DataCacheFactory(ConfigWithPooling);

請注意,當您建立 DataCacheFactoryConfiguration 物件時,也可以透過應用程式組態檔中的設定來初始化組態。這種方法結合使用了組態檔和程式碼來設定快取用戶端。如果建構函式空白,則會讀取 "default" 組態區段。如果傳遞了字串給建構函式,則會套用該具名 dataCacheClient 區段。在此案例中,您可以從組態檔啟用連線共用,而不是透過呼叫 CreateNamedConfiguration 呼叫來完成此作業。

Warning警告
當您從應用程式組態檔初始化 DataCacheFactoryConfiguration 時,您對該組態進行的變更可能會導致連線共用停用。這些設定包括伺服器、安全性、壓縮、maxConnectionsToServer 和傳輸屬性。在該情況下,您必須使用先前所述的 CreateNamedConfiguration 方法,根據已啟用連線共用的修改過組態來建立新的組態。

建議事項

啟用 角色中快取 角色上的 Azure 時,除了用戶端和伺服器的基礎實體資源之外,連線上不會有任何配額限制。但是,仍然建議您使用連線集區,更輕易地重複使用和管理連線以改善效能。

如果啟用連線共用,您應該分析預設 maxConnectionsToServer1 是否適合您的應用程式。如果您是在多個執行緒中使用 DataCacheFactory 物件,則將集區中的連線數目增加為大於 1,或許可以達到較佳的效能。當然,您應該根據將執行該程式碼的角色執行個體數目,來計算這對您整體連線需求的影響。

如前所述,每個不同的具名組態都會有它自己的連線集區。計算對快取的連線總數時,了解這一點十分重要。

請務必認清使用應用程式組態檔設定與針對快取用戶端進行程式設計組態時預設連線共用行為的差異。此主題的前面各節會說明這些差異。因為進行程式設計組態較為複雜,所以透過組態檔 (app.config 或 web.config) 設定快取,可簡化連線共用的使用。

使用舊的 SDK 版本時或手動停用連線共用時,您應該在程式碼中建立、儲存和重複使用最少量的 DataCacheFactory 物件。這種做法不需要為每個快取作業建立新連線,所以可改善效能。它也有助於更適當地管理連線數目。再次提醒,如果您讓多個執行緒共用相同的 DataCacheFactory 物件,則增加 maxConnectionsToServer 值,可看到效能提升。連線共用停用時,您應該小心監視使用中 DataCacheFactory 物件的數目、maxConnectionsToServer 設定以及角色執行個體數目。將所有這些因素組合在一起,以決定所使用的使用中連線數目。

社群新增項目

新增
顯示:
© 2014 Microsoft