自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用Microsoft Azure 讓云遷移變得簡(jiǎn)便的5種方法

原創(chuàng)
云計(jì)算
開發(fā)者們接受Microsoft Windows Azure的速度異乎尋常的快。因?yàn)樗腔赪indows 和 .NET的,所以它和開發(fā)者們現(xiàn)有的應(yīng)用程序是高度兼容的,使用Microsoft Windows Azure作為云平臺(tái)的話,應(yīng)用程序可以很輕松地遷移到云中。

開發(fā)者們接受Microsoft Windows Azure的速度異乎尋常的快。因?yàn)樗腔赪indows 和 .NET的,所以它和開發(fā)者們現(xiàn)有的應(yīng)用程序是高度兼容的,使用Microsoft Windows Azure作為云平臺(tái)的話,應(yīng)用程序可以很輕松地遷移到云中。

通常,一個(gè)應(yīng)用程序要遷移到云中,需要經(jīng)過(guò)兩個(gè)關(guān)鍵性的階段。第一個(gè)階段是盡可能地少做改動(dòng),讓它可以“原封不動(dòng)”地在Microsoft Azure中發(fā)揮作用,在這個(gè)階段,只改變那些不得不改變的地方就可以了。第二個(gè)階段是對(duì)這個(gè)應(yīng)用程序的一些組件進(jìn)行升級(jí),讓你的應(yīng)用程序可以利用上那些Microsoft Azure提供的獨(dú)一無(wú)二的能力。

在本文中,我們將會(huì)討論一些在完成第一個(gè)階段(只要可以在Microsoft Azure中正常工作就可以了)的過(guò)程中遇到的問(wèn)題。大多數(shù)的遷移項(xiàng)目都是從“云適應(yīng)性”分析開始的,這可以幫助你識(shí)別出要完成遷移,哪些部分需要做一些額外的工作。當(dāng)你正在進(jìn)行第一個(gè)階段的時(shí)候,搞清楚你的系統(tǒng)架構(gòu)是至關(guān)重要的,同時(shí),你要讓必須要做的代碼變更最小化。如果你使用一個(gè)完整的單元測(cè)試套件來(lái)構(gòu)建你的系統(tǒng),那么現(xiàn)在你可以開始?xì)g呼雀躍了。

1,數(shù)據(jù)遷移

從應(yīng)用程序的底層開始,我們就不得不面對(duì)我們應(yīng)該把數(shù)據(jù)存儲(chǔ)到哪里,以及如何存儲(chǔ)的問(wèn)題。最常見的ASP.NET應(yīng)用程序使用SQL Server把數(shù)據(jù)存儲(chǔ)在關(guān)系數(shù)據(jù)模型中。無(wú)論你的代碼如何使用這些數(shù)據(jù)(Entity Framework, nHibernate, ADO.NET等),你都應(yīng)該關(guān)注一下如何把SQL數(shù)據(jù)庫(kù)遷移到SQL Azure中。這樣做的話,可以讓你的應(yīng)用程序處于“near data”的場(chǎng)景之中,在這種場(chǎng)景中,應(yīng)用程序可以保持高度的響應(yīng)性。

一個(gè)Microsoft Azure中的應(yīng)用程序完全可以通過(guò)一個(gè)內(nèi)置的SQL Server來(lái)連接和使用數(shù)據(jù),但是這樣做的話,會(huì)創(chuàng)建一個(gè)“far data”的場(chǎng)景。在這種場(chǎng)景中,數(shù)據(jù)訪問(wèn)的延遲會(huì)很大,而且性能也會(huì)有所降低。

SQL Azure和SQL Server是高度兼容的,所以遷移起來(lái)并不是很困難,對(duì)于那些小型數(shù)據(jù)庫(kù)來(lái)說(shuō),情況更是如此。你必須要留意一下你自己可以使用的SQL Azure數(shù)據(jù)庫(kù)的最大尺寸,目前,這個(gè)最大尺寸是50GB。如果你的數(shù)據(jù)庫(kù)比這個(gè)尺寸還要大,那么你必須對(duì)你的數(shù)據(jù)進(jìn)行分割。

有一個(gè)叫作SQL Azure Migration Wizard的開源工具可以幫助你完成這個(gè)任務(wù),你可以使用它來(lái)分析和遷移你的數(shù)據(jù)。它可以分析你當(dāng)前的模式,指出和SQL Azure不兼容的地方,然后幫助你修改這些地方。再然后,它可以在后臺(tái)使用BCP,把你的數(shù)據(jù)遷移到云中。你可以在這個(gè)頁(yè)面中找到這個(gè)工具。

長(zhǎng)期來(lái)看,你可以對(duì)你的數(shù)據(jù)進(jìn)行分析,判斷出哪些數(shù)據(jù)從本質(zhì)上來(lái)說(shuō)是非關(guān)系型的,然后把它們遷移到Windows Azure Table storage中。

#p#

2,ASP.NET的Session狀態(tài)

許多ASP.NET的Web應(yīng)用程序使用Session狀態(tài)來(lái)跟蹤一個(gè)用戶使用這個(gè)應(yīng)用程序的行為。這可能是他們的配置信息,一個(gè)購(gòu)物框,或者他們?cè)谝粋€(gè)業(yè)務(wù)流程中的具體位置。Session狀態(tài)是一個(gè)強(qiáng)大的工具(如果不過(guò)度使用的話),它可以讓無(wú)狀態(tài)的環(huán)境具有狀態(tài)。

由于許多Web程序都依賴Session狀態(tài),所以它們的負(fù)載均衡器都是針對(duì)“粘性的session”來(lái)配置的。這意味著一旦用戶開始使用你的站點(diǎn),那么他們總是要回到服務(wù)器集群中的同一個(gè)服務(wù)器中(至少在這個(gè)Session期間是這樣的)。這使得把狀態(tài)保存在那個(gè)特定的Web服務(wù)器的某個(gè)進(jìn)程的內(nèi)存中成為可能。我不是很喜歡這種方法,因?yàn)?,隨著時(shí)間的推移,這種方法會(huì)導(dǎo)致負(fù)載出現(xiàn)不均衡,而且,當(dāng)一個(gè)服務(wù)器出現(xiàn)問(wèn)題的時(shí)候,這會(huì)導(dǎo)致可靠性方面的盲點(diǎn)。如果一個(gè)服務(wù)器掛掉了,那么用戶會(huì)和那個(gè)服務(wù)器一起掛掉。

因?yàn)镸icrosoft Azure中的負(fù)載均衡器是非粘性的,所以你可以找到一種方法,讓Session狀態(tài)對(duì)Azure環(huán)境中的每個(gè)服務(wù)器都可用。謝天謝地,ASP.NET中的Session狀態(tài)機(jī)制使用的是提供者模式。在這種模式中,你可以更換新的提供程序來(lái)改變Session狀態(tài)在Web服務(wù)器集群中的存儲(chǔ)方式和托管方式。你可以通過(guò)部署一個(gè)程序集,然后改變web.config中的某些設(shè)置的方式來(lái)改變你正在使用的提供程序。

ASP.NET帶有三個(gè)默認(rèn)的提供程序。最常見的是進(jìn)程內(nèi)內(nèi)存提供程序,它的行為如上所述。第二個(gè)提供程序是一個(gè)狀態(tài)服務(wù)器,這是一個(gè)專用的服務(wù)器,它可以把狀態(tài)保存在它自己的內(nèi)存中。另外一個(gè)提供程序是SQL Server提供程序,它可以把Session狀態(tài)存儲(chǔ)到一個(gè)SQL Server數(shù)據(jù)庫(kù)中。對(duì)于用戶來(lái)說(shuō),由于每個(gè)Web服務(wù)器都可以從這個(gè)數(shù)據(jù)庫(kù)載入合適的Session,所以,現(xiàn)在用戶可以在整個(gè)集群中任意跳轉(zhuǎn)了。

雖然在Microsoft Azure中,你可以使用SQL Server提供程序,然后把它指向一個(gè)SQL Azure數(shù)據(jù)庫(kù),但是使用基于Windows Azure Storage的提供程序會(huì)更好一些。使用這個(gè)提供程序,Session中的條目可以放在一個(gè)和每個(gè)用戶相對(duì)應(yīng)的Azure Table中,或者應(yīng)用程序中。由于狀態(tài)的確切尺寸和形態(tài)不可以提前預(yù)知,所以真正的狀態(tài)會(huì)被作為一個(gè)文件存儲(chǔ)在一個(gè)Azure Blob容器中。

你可以通過(guò)查找Windows Azure Platform Training kit來(lái)下載這個(gè)提供程序。在這個(gè)工具包中,有一個(gè)叫作AspProviders樣例項(xiàng)目。你可以直接把這個(gè)項(xiàng)目添加到你的解決方案中,也可以使用程序集引用的方式,把那個(gè)DLL添加到你的項(xiàng)目中。

如果你引用了這個(gè)程序集,那么你必須修改你的web.config文件。打開你的配置文件,然后找到<system.web>元素。刪除現(xiàn)有的<sessionState>配置,然后把下面的代碼粘貼上去。當(dāng)你這么做的時(shí)候,記得把你真正的應(yīng)用程序名寫上去。

<sessionState mode="Custom" customProvider="TableStorageSessionStateProvider">

     <providers>

        <clear/>

        <add name="TableStorageSessionStateProvider" 

       type= "Microsoft.Samples.ServiceHosting.AspProviders.

            TableStorageSessionStateProvider" 

      applicationName="yourWebAppName"/>

     </providers>

  </sessionState>

#p#

3,配置

許多Web應(yīng)用程序都使用web.config來(lái)存儲(chǔ)運(yùn)行時(shí)配置。這很方便,而且也很安全(盡管如此,你還是應(yīng)該養(yǎng)成對(duì)敏感的信息進(jìn)行加密的良好習(xí)慣)。我們這樣做的一個(gè)優(yōu)勢(shì)是當(dāng)應(yīng)用程序正在運(yùn)行的時(shí)候也可以修改配置(盡管這會(huì)導(dǎo)致重啟)。

當(dāng)你把你的Web應(yīng)用程序部署到Windows Azure中的時(shí)候,你的軟件包會(huì)作為一個(gè)只讀的軟件包部署到你的Web角色實(shí)例中。這意味著,你的項(xiàng)目中的所有文件在運(yùn)行時(shí)都不可以被修改,包括web.config文件。這就意味著,如果你想修改web.config文件,你必須重新部署整個(gè)應(yīng)用程序,這可不是一件輕松的事情。

解決這個(gè)問(wèn)題的最好方法是去除這個(gè)限制,或者對(duì)你的配置進(jìn)行重構(gòu),把它存儲(chǔ)在Microsoft Azure項(xiàng)目的ServiceConfiguration.cscfg文件中。在這個(gè)配置文件中的數(shù)據(jù)在運(yùn)行時(shí)可以被編輯(這也會(huì)導(dǎo)致重啟)。

把你的配置遷移到cscfg文件中需要三個(gè)步驟。首先,你必須在ServiceDefinition.csdef文件中定義配置元素。如果我們正在遷移一個(gè)以“maximum money laundering limit”作為業(yè)務(wù)規(guī)則的配置元素,那么可以這樣來(lái)定義:

  <CofigurationSettings>

     <Setting name="DiagnosticsConnectionString" />

     <Setting name="MaxMoneyLaunderingLimit"/>

  </ConfigurationSettings>

完成這個(gè)任務(wù)以后,你可以把這個(gè)設(shè)置添加到你的ServiceConfiguration.cscfg文件中,如下所示。我們把我們當(dāng)前的限制設(shè)置為100000美金。

  <ConfigurationSettings>

     <Setting name="DiagnosticsConnectionString" value="UseDevelopmentStorage=true" />

     <Setting name="MaxMoneyLaunderingLimit" value="100000"/>

  </ConfigurationSettings>

你必須要從頭到尾地查看你的代碼,然后修改你用來(lái)讀取配置的那些代碼。但愿你已經(jīng)把你的應(yīng)用程序讀取配置的代碼抽象成一個(gè)類了,這樣的話,所有讀取配置的代碼都在同一個(gè)地方,會(huì)更容易修改一些。在這種情況下,你可以這樣修改讀取配置的代碼:

  string s = RoleEnvironment.GetConfigurationSettingValue("MaxMoneyLaunderingLimit");

你可以通過(guò)門戶站點(diǎn),手工修改cscfg文件的內(nèi)容,或者,你也可以使用Service Management API來(lái)上傳一個(gè)新的配置文件。當(dāng)你這么做的時(shí)候,為了應(yīng)用新的配置,你的應(yīng)用程序會(huì)被重啟,然后RoleEnvironmentChanging事件會(huì)被觸發(fā),提醒你你的配置已經(jīng)被改變了。

#p#

4,文件系統(tǒng)的使用

許多Web應(yīng)用程序都會(huì)對(duì)文件系統(tǒng)進(jìn)行讀取和寫入。它們對(duì)文件系統(tǒng)的使用通常都很簡(jiǎn)單,也很直接。這可能是最麻煩的修改了,因?yàn)槟惚仨氁獙?duì)代碼進(jìn)行修改。

為什么在云中這是一個(gè)問(wèn)題?因?yàn)檫\(yùn)行你的代碼的那個(gè)Web服務(wù)器是無(wú)狀態(tài)的,在任何時(shí)候,它都可以被銷毀和重新創(chuàng)建。因?yàn)槭菬o(wú)狀態(tài)的,所以在正常情況下,你是無(wú)法使用本地磁盤的。

如果你只把文件系統(tǒng)當(dāng)成一個(gè)臨時(shí)的存儲(chǔ)空間來(lái)使用,例如存儲(chǔ)一個(gè)上傳文件,然后讀取它,把它載入到數(shù)據(jù)庫(kù)中,那么使用“本地存儲(chǔ)器”會(huì)更合適一些。“本地存儲(chǔ)器”是Microsoft Azure的一個(gè)功能,它可以在服務(wù)器上給你分配一塊本地磁盤,讓你隨意地使用。你必須在csdef文件中對(duì)“本地存儲(chǔ)器”進(jìn)行配置,然后通過(guò)RoleEnvironment對(duì)象載入路徑。“本地存儲(chǔ)器”是不穩(wěn)定的,這意味著無(wú)法保證這個(gè)存儲(chǔ)器在指定的時(shí)間段里一直是可用的。

要配置你需要的本地存儲(chǔ)空間,可以把下面這段代碼添加到你的csdef文件的角色配置中,然后給你請(qǐng)求的空間提供一個(gè)名字。你可以請(qǐng)求多個(gè)本地存儲(chǔ)器。如果在你的代碼中,你通常要使用好幾個(gè)文件夾,那么這會(huì)十分方便的。

<LocalResources>   

   <LocalStorage name="TempUploads" sizeInMB="100" cleanOnRoleRecycle="true"/>

</LocalResources>

在你使用這塊磁盤空間以前,你必須首先讀入分配給你的文件夾的物理路徑。如果你使用這兩行代碼獲取到了這個(gè)路徑,那么你用于處理常規(guī)文件的代碼就可以正常發(fā)揮作用了。

  LocalResource localCache = RoleEnvironment.GetLocalResource("TempUploads");

  string localCacheRootDirectory = localCache.RootPath;

在遷移直接對(duì)文件系統(tǒng)進(jìn)行讀取和寫入的代碼的過(guò)程中,你的第二個(gè)選擇是把你的代碼轉(zhuǎn)換為使用Azure Blob存儲(chǔ)器的代碼。雖然這需要對(duì)代碼進(jìn)行一些修改,但是這種遷移方式可以讓你使用上更加快速的云。

如果在遷移過(guò)程中,你可以把代碼修改到這種程度,那么你可以考慮第三個(gè)選擇了,那就是使用Microsoft Azure Drive。這是一個(gè)被格式化為NTFS驅(qū)動(dòng)器的blob(可以把它看成一個(gè)虛擬PC的VHD文件)。這個(gè)文件被格式化為一個(gè)驅(qū)動(dòng)器,在你的角色實(shí)例上,它可以作為一個(gè)本地驅(qū)動(dòng)器被載入。一個(gè)Azure驅(qū)動(dòng)器可以被掛載到多個(gè)服務(wù)器實(shí)例中,只要它是只讀的就可以了。如果你想對(duì)這個(gè)驅(qū)動(dòng)器進(jìn)行寫入操作,那么你只能把它掛載到一個(gè)實(shí)例中。

這個(gè)模型和本地存儲(chǔ)模型十分類似。你可以對(duì)掛載的驅(qū)動(dòng)器進(jìn)行配置,也可以使用一些代碼在運(yùn)行時(shí)判斷物理驅(qū)動(dòng)器名和被掛載的驅(qū)動(dòng)器的路徑。一旦你得到了這個(gè)路徑,你的代碼就可以像平常那樣發(fā)揮作用了。

對(duì)于Windows Azure Drive來(lái)說(shuō),一個(gè)重要的性能提升是確保你可以把一些本地存儲(chǔ)器配置成這個(gè)驅(qū)動(dòng)器的緩存。這是通過(guò)內(nèi)置的驅(qū)動(dòng)器API來(lái)實(shí)現(xiàn)的,在性能上有很大的提升。

#p#

5,在云中的身份標(biāo)識(shí)

許多Web應(yīng)用程序都通過(guò)集成的身份驗(yàn)證來(lái)給內(nèi)部用戶提供無(wú)縫的身份驗(yàn)證體驗(yàn)的。當(dāng)用戶瀏覽你的站點(diǎn)的時(shí)候,他們已經(jīng)登錄到他們的桌面了,他們的Windows身份標(biāo)識(shí)會(huì)被傳輸?shù)絎eb應(yīng)用程序中。他們是在毫不知情的情況下登錄的。

當(dāng)服務(wù)器不在用戶的域中,也不在同一個(gè)網(wǎng)絡(luò)中的時(shí)候,這個(gè)流程就無(wú)法發(fā)揮作用了。當(dāng)你把一個(gè)應(yīng)用程序遷移到云中的時(shí)候,用戶必須要登錄到這個(gè)應(yīng)用程序才可以使用這個(gè)應(yīng)用程序,這樣的話,他們會(huì)十分困惑的。

要把你的內(nèi)部用戶標(biāo)識(shí)和云聯(lián)系起來(lái),最簡(jiǎn)單的方法就是使用一種叫作“聯(lián)合身份標(biāo)識(shí)”的概念。“聯(lián)合身份標(biāo)識(shí)”(Federated Identity)是基于開放標(biāo)準(zhǔn)的,既支持OAuth又支持SAML。使用這些協(xié)議你可以把你的應(yīng)用程序配置成信任來(lái)自于你的域中的用戶的身份標(biāo)識(shí)。

要做到這一點(diǎn),你必須要使用Windows Azure AppFabric ACS服務(wù)才可以,這是一個(gè)在云中的身份驗(yàn)證服務(wù)。在你的公司中,你還必須要有一個(gè)安全標(biāo)記服務(wù)器。大多數(shù)公司使用Windows Server Active Directory Federation Services v2。如果配置好了這個(gè)服務(wù),那么,當(dāng)用戶訪問(wèn)你的站點(diǎn)的時(shí)候,他們的身份標(biāo)識(shí)就會(huì)通過(guò)ACS,從ADFSv2服務(wù)器傳輸?shù)侥愕膽?yīng)用程序中。這可以給用戶提供無(wú)縫的登錄體驗(yàn),而且,對(duì)你的代碼的修改也最少。

如果你已經(jīng)開始使用ACS和“聯(lián)合身份標(biāo)識(shí)”了,那么你可以和一些商業(yè)合作伙伴,提供商,以及客戶結(jié)成同盟。這可以讓他們更容易地登錄到你的系統(tǒng)中。值得注意的是,只有你希望共享的身份標(biāo)識(shí)才應(yīng)該被共享(他們是誰(shuí),他們屬于哪些組)。真正的憑證不應(yīng)該被共享(例如密碼或智能卡)。

#p#

總結(jié)

Microsoft Azure是基于Windows Server的,SQL Azure是基于SQL Server。這讓Microsoft Azure平臺(tái)成為了一個(gè)高度兼容的環(huán)境。這可以讓應(yīng)用程序從內(nèi)部環(huán)境遷移到云中的過(guò)程變得更加容易。

注意,我說(shuō)的是更加容易,而不是容易。遷移你的應(yīng)用程序所花費(fèi)的時(shí)間長(zhǎng)短是由架構(gòu)和你的應(yīng)用程序的代碼來(lái)決定的。在幾個(gè)星期中,我已經(jīng)幫助許多客戶把他們重要的Web應(yīng)用程序遷移到云中了。當(dāng)然,遷移結(jié)束以后,應(yīng)該在這個(gè)全新的,基于云的系統(tǒng)上進(jìn)行大量的測(cè)試,來(lái)確保這個(gè)系統(tǒng)可以正常工作。

原文名:5 Ways to Use Microsoft Azure to Ease Cloud Migration 作者:Brian Prince

【本文乃51CTO精選譯文,轉(zhuǎn)載請(qǐng)標(biāo)明出處!】

 

    【編輯推薦】

     

    1. 微軟公布云計(jì)算平臺(tái)Azure收費(fèi)模式細(xì)節(jié)
    2. 云計(jì)算意在長(zhǎng)遠(yuǎn),微軟云計(jì)算服務(wù)Windows Azure已經(jīng)啟用
    3. 技術(shù)透析:Windows Azure Platform框架與組成
    4. 微軟Windows Azure Platform技術(shù)解析
    5. 走近微軟云:SQL Server到Azure數(shù)據(jù)同步
    6. 當(dāng)微軟Azure遭遇亞馬遜EC2:五大關(guān)鍵區(qū)別
    7. Windows Azure云計(jì)算平臺(tái)新增五大功能
    8. 云計(jì)算前途光明 Azure用戶數(shù)突破31000

     

     

     

    責(zé)任編輯:王勇 來(lái)源: 來(lái)源:51CTO
    相關(guān)推薦

    2020-04-22 11:07:30

    云遷移公共云云計(jì)算

    2019-06-26 15:41:26

    AI云原生云遷移

    2015-10-28 14:03:32

    數(shù)據(jù)遷移數(shù)據(jù)

    2021-01-08 15:08:53

    云計(jì)算小型企業(yè)數(shù)據(jù)

    2021-03-21 22:23:38

    云計(jì)算數(shù)據(jù)中心IT

    2023-07-04 13:36:44

    2021-03-18 08:01:52

    Docker容器遷移

    2010-08-04 09:59:11

    云計(jì)算印度賺錢

    2016-07-19 09:59:43

    云計(jì)算

    2013-06-20 17:53:42

    CIO云計(jì)算

    2020-04-26 10:32:58

    Kubernetes集群Pod

    2017-08-01 15:33:01

    云遷移云安全數(shù)據(jù)泄露

    2017-08-07 09:24:43

    云遷移安全方法

    2020-05-28 13:33:30

    React Hook前端開發(fā)

    2013-03-27 09:30:44

    數(shù)據(jù)挖掘IT基礎(chǔ)設(shè)施

    2017-07-19 09:04:37

    2020-09-01 09:56:26

    云端云計(jì)算云服務(wù)

    2013-07-23 10:50:24

    C程序

    2019-08-22 07:24:25

    2019-11-21 11:10:21

    云遷移云計(jì)算
    點(diǎn)贊
    收藏

    51CTO技術(shù)棧公眾號(hào)