天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

架構(gòu)抉擇:享用微軟SQL云平臺(tái)就像吃烤鴨

      我們談云計(jì)算SQL Azure本質(zhì),我們可以換一個(gè)角度先從設(shè)計(jì)模式上講起。設(shè)計(jì)模式(Design Pattern)的一項(xiàng)重要目的就是“溝通”當(dāng)人們談到“歌德式”的設(shè)計(jì)模式時(shí),腦海里浮現(xiàn)的應(yīng)該都是一幅很類(lèi)似的景致,例如:高聳的尖頂建筑、教堂式的外觀門(mén)庭……,這是建筑師的設(shè)計(jì)模式。當(dāng)然它也成功的融入了大眾的生活層面,而這才可稱(chēng)為“設(shè)計(jì)模式”。

  軟件界的設(shè)計(jì)模式破除了語(yǔ)言的隔閡。Gamma的設(shè)計(jì)模式(Design Pattern)這個(gè)術(shù)語(yǔ)是在1990年,由Erich Gamma等人從建筑設(shè)計(jì)領(lǐng)域引入到軟件計(jì)算機(jī)科學(xué)里。該書(shū)出版至今,國(guó)內(nèi)軟件界在開(kāi)發(fā)應(yīng)用程序上一直很少運(yùn)用到設(shè)計(jì)模式的理論,追根究底的原因很多,溝通應(yīng)該是其罪魁禍?zhǔn)字弧S晌覀儾蝗菀讖淖置嫔细惺艿竭@種設(shè)計(jì)模式的目的或精神,但我們可以經(jīng)過(guò)反復(fù)的研讀才能體會(huì)出來(lái)。這種勞民傷財(cái)?shù)默F(xiàn)象,和設(shè)計(jì)模式當(dāng)初被推崇的原則完全不符;所以它在這里也就無(wú)從生根,程序設(shè)計(jì)人員當(dāng)然也就沒(méi)有從這里得到太多好處。

  在這里,我想以聲名遠(yuǎn)播的北京烤鴨是大家再熟悉不過(guò)的北京特色了!我們就用“北京烤鴨”來(lái)談?wù)?ldquo;一目了然的facade設(shè)計(jì)模式”。Facad(外觀模式)設(shè)計(jì)模式,是一種結(jié)構(gòu)型模式,它主要解決的問(wèn)題是:組件的客戶(hù)和組件中各種復(fù)雜的子系統(tǒng)有了過(guò)多的耦合,隨著外部客戶(hù)程序和各子系統(tǒng)的演化,這種過(guò)多的耦合面臨很多變化的挑戰(zhàn)。它的目的是將雜亂或設(shè)計(jì)不好的應(yīng)用程序編程接口(API)再加上一層,把它包起來(lái)并提供一個(gè)容易看懂的新接口,本因就是提供一個(gè)簡(jiǎn)單的接口,讓復(fù)雜龐大的程序接口隱藏起來(lái)。

  我們可以借用北京烤鴨作例子,想象一下當(dāng)你聽(tīng)到“北京烤鴨”時(shí)腦中浮現(xiàn)的是甚么呢?一只肉香四溢的烤鴨的全景圖嗎?若是直覺(jué)的、自然的反應(yīng)那就對(duì)了,所以我嘗試把facade設(shè)計(jì)模式直接用一目了然的成語(yǔ)作取代。如圖1所示。

 

  如上圖所示,我們可以舉一個(gè)façade模式的例子。比如說(shuō),現(xiàn)在有一輛汽車(chē),我們(客戶(hù)程序)要啟動(dòng)它,那我們就要發(fā)動(dòng)引擎(子系統(tǒng)1),使四個(gè)車(chē)輪(子系統(tǒng)2)轉(zhuǎn)動(dòng)。但是實(shí)際中我們并不需要用手推動(dòng)車(chē)輪使其轉(zhuǎn)動(dòng),我們踩下油門(mén),此時(shí)汽車(chē)再根據(jù)一些其他的操作使車(chē)輪轉(zhuǎn)動(dòng)。油門(mén)就好比系統(tǒng)給我們留下的接口,不論汽車(chē)是以何種方式轉(zhuǎn)動(dòng)車(chē)輪,車(chē)輪變化成什么牌子的,我們要開(kāi)走汽車(chē)所要做的還是踩下油門(mén)。

  前面說(shuō)了一堆,讀者們一定會(huì)想問(wèn),到底北京烤鴨跟SQL Azure到底有甚么關(guān)系?答案是“目的相同”,也就是考慮到提供使用者一個(gè)易讀易寫(xiě)的應(yīng)用程序編程接口。微軟的SQL Azure開(kāi)發(fā)團(tuán)隊(duì),正在思考是否應(yīng)該在云端上就把SQL數(shù)據(jù)庫(kù)整個(gè)包裝起來(lái),再提一個(gè)完整而簡(jiǎn)單的應(yīng)用程序編程接口給它,藉此讓使用者能夠輕易上手。

  另一個(gè)選擇是考慮到現(xiàn)有程序能夠很容易的運(yùn)用上來(lái)的作法,可以讓SQL數(shù)據(jù)庫(kù)以原本的風(fēng)貌放置在云端,再透過(guò)標(biāo)準(zhǔn)的存取協(xié)議讓既有的程序都能夠立即能使用。這樣的抉擇也曾不斷的出現(xiàn)在一般的IT部門(mén),其立足點(diǎn)是思考是否隱藏那些數(shù)據(jù)庫(kù)中的復(fù)雜表格信息,用簡(jiǎn)單易用的API取代,提供程序人員更容易上手的程序環(huán)境。今天的SQL Azure正是歷經(jīng)這種選擇后的結(jié)果,也就是決定采不采用設(shè)計(jì)模式包裝技術(shù)在做這個(gè)選擇的好范例。

  另外需要考慮,是否提供有效率的讀取云端數(shù)據(jù)的選擇。能夠快速讀寫(xiě)數(shù)據(jù)庫(kù)中的數(shù)據(jù)一直被視為企業(yè)信息中心的必備技能,程序設(shè)計(jì)人員在進(jìn)入信息單位報(bào)到之初,往往都必先從熟悉數(shù)據(jù)庫(kù)表開(kāi)始,也只有在慢慢熟悉數(shù)據(jù)庫(kù)表的Layout后才能開(kāi)始有產(chǎn)能。因此許多信息部門(mén)都會(huì)為此制訂一套數(shù)據(jù)庫(kù)的存取應(yīng)用程序編程接口,然后美其名為“快速數(shù)據(jù)庫(kù)存取API”,目的在讓程序設(shè)計(jì)人員能夠更簡(jiǎn)單更輕易的上手。從此,新進(jìn)人員只要用很短的前置時(shí)間來(lái)了解這份API就能很快的上手。上面這一段說(shuō)詞,看起來(lái)非常合理,也真的有很多人這么做的,但實(shí)際上這么做卻隱含著一些不好的后遺癥。比方說(shuō),隨著人員及業(yè)務(wù)種類(lèi)的增加,一旦應(yīng)用界面(API)不夠用的時(shí)候,負(fù)責(zé)維護(hù)的同事就會(huì)開(kāi)始接到報(bào)怨及要求;要求新增合用的快速數(shù)據(jù)庫(kù)存取API,然后這個(gè)API就開(kāi)始增加,而隨著人員及業(yè)務(wù)種類(lèi)的增加,API就又得開(kāi)始增加,這種情形會(huì)一直持續(xù)的發(fā)生一直到你受不了,終于,你提供了一個(gè)可以直接傳送SQL腳本到數(shù)據(jù)庫(kù)上執(zhí)行的API為止(這跟程序直接呼叫數(shù)據(jù)庫(kù)不用透過(guò)API,在意義上是完全相同的,因此這個(gè)API接口也就名存而實(shí)亡)。

  SQL團(tuán)隊(duì)的抉擇。這是一段有趣的話(huà)題,當(dāng)微軟的數(shù)據(jù)庫(kù)團(tuán)隊(duì)面臨要將SQL服務(wù)器放在云端的時(shí)候,也碰到了跟上述話(huà)題同樣的問(wèn)題,是應(yīng)該以提供各式服務(wù)接口讓用戶(hù)容易的存取,靠著強(qiáng)大好用的服務(wù)接口徹底的將SQL服務(wù)器隱藏起來(lái)?還是拿掉這個(gè)便利存取的抽象層,讓SQL服務(wù)器直接面對(duì)外部的程序接口呢?

  最后的結(jié)果是,微軟選擇了讓SQL服務(wù)器直接面對(duì)外部的程序接口,也就是讓程序能夠運(yùn)用T-SQL直接對(duì)數(shù)據(jù)庫(kù)作存取的動(dòng)作。
 

  SQL Azure開(kāi)發(fā)團(tuán)隊(duì)使得SQL服務(wù)器直接面對(duì)程序開(kāi)發(fā)人員,能夠在客戶(hù)者端的程序中運(yùn)用傳統(tǒng)的TDS(Tabular Data Stream)與位在云端的SQL服務(wù)器溝通,但基于安全與橫向擴(kuò)展服務(wù)器數(shù)量的考慮,特別在中間設(shè)計(jì)了一層Gateway層,如圖2所示的Security Boundary 所指的就是Gateway層。

  如圖2所示,我們隱約可以看出SQL Azure分成了好幾個(gè)層次,如果再參考圖3一起來(lái)看的話(huà),就看得出來(lái)它實(shí)際上能夠分成四層,最下面是基礎(chǔ)架構(gòu)(Infrastructure)這是架構(gòu)底層的服務(wù)程序它摻雜著軟硬件的I/O配合,也就是處理大量CPU群組的地方,它負(fù)責(zé)橫向的多重架構(gòu)作業(yè)(Fabric)、故障移除(Failover)、復(fù)制(Replication)及負(fù)載均衡(Load Balancing),當(dāng)然還包含軟件版本的自動(dòng)更新維護(hù)(它也負(fù)責(zé)實(shí)時(shí)偵查軟件或是硬件所產(chǎn)生的異常現(xiàn)象并能自動(dòng)采取相對(duì)的措施)等作業(yè),這是一般云端架構(gòu)的基礎(chǔ)層。對(duì)于云端應(yīng)用程序而言,它提供一些自我管理的機(jī)制,目前仍然相當(dāng)神秘并沒(méi)有對(duì)外開(kāi)放,不過(guò)一些基本的API將會(huì)在近期內(nèi)公開(kāi)出來(lái)。

 圖3 SQL Azure架構(gòu)

  SQL Server層是以SQL 2008為基礎(chǔ)上,修改成適合云端作業(yè)的數(shù)據(jù)庫(kù)層,所謂的“云端工作”指的是高可適用性(High Availability)及快速?gòu)?fù)制等配合功能。它可以接受傳統(tǒng)的Transact-SQL(T-SQL)指令,但從網(wǎng)絡(luò)端傳送過(guò)來(lái)的資料并不會(huì)直接進(jìn)到SQL服務(wù)器內(nèi),而是透過(guò)更高一層的Gateway層傳入。

  Gateway層的較完整名稱(chēng)應(yīng)該是TDS Gateway,當(dāng)程序進(jìn)行SQL Azure聯(lián)機(jī)時(shí),實(shí)際上是聯(lián)機(jī)到Gateway層,在這里進(jìn)行防火墻及安全驗(yàn)證的安全性的計(jì)劃后,聯(lián)機(jī)才會(huì)真正進(jìn)入到SQL服務(wù)器內(nèi),真正進(jìn)行聯(lián)機(jī)的建立(所有的惡意攻擊、或非法的Login企圖都依靠Gateway層來(lái)做阻擋過(guò)濾)。但一旦通過(guò)Gateway建立聯(lián)機(jī)之后,就會(huì)由另一個(gè)通用管道負(fù)責(zé)后續(xù)的傳送作業(yè),這樣做的目的則是為了減少通信上不必要的耽擱作業(yè)。

  另外,網(wǎng)絡(luò)的再因特網(wǎng)的入口處,圖中在云的下方寫(xiě)著LB的方塊,是整個(gè)SQL Azure中唯一面對(duì)因特網(wǎng)的部分,也就是程序唯一可以看得懂URL地址的部分,在網(wǎng)下就Gateway中存有的相對(duì)地址,它負(fù)責(zé)均衡分配進(jìn)入點(diǎn)到各個(gè)Gateway層。如果你的程序是由Windows Azure呼叫進(jìn)來(lái)的話(huà),也是依循這個(gè)相同的端點(diǎn)來(lái)進(jìn)入的。如圖2所示,最上方則是你的應(yīng)用程序,當(dāng)然你可以采用SQL client Libraries,或是ADO.NET Data Service或是其他更高階的程序語(yǔ)言來(lái)做開(kāi)發(fā),例如php等程序語(yǔ)言。這是由于開(kāi)發(fā)團(tuán)隊(duì)決定采用傳統(tǒng)的TDS(Tabular Data Stream)作中間的傳輸協(xié)議,造成使用這可以運(yùn)用許多原有的或是標(biāo)準(zhǔn)的公具來(lái)做連線(xiàn)工作,甚至是偵錯(cuò)或監(jiān)看的動(dòng)作。

  SQL Azure選擇以傳統(tǒng)的TDS為傳輸協(xié)議,而不是將SQL Server使用了一大堆的服務(wù)包裝起來(lái),讓程序設(shè)計(jì)師十分容易延續(xù)對(duì)SQL SERVER的開(kāi)發(fā)功能,這算是微軟成功的第一步,當(dāng)然SQL Azure為了適合云端的環(huán)境,也拿掉了一些不適合的功能,包括安全性、絕對(duì)路徑等API功能,參考圖2的上半部可以看出,ODBC及ADO.NET是標(biāo)準(zhǔn)的入口,因此,原本在ASP.NET端的大部分功能都能順利的運(yùn)用在這里,使得Windows Azure能夠成為真正執(zhí)行云端運(yùn)算(Cloud Computing)的關(guān)系數(shù)據(jù)庫(kù)服務(wù),這是一種云端儲(chǔ)存(Cloud Storage)的實(shí)作,成功的提供網(wǎng)絡(luò)型的應(yīng)用程序數(shù)據(jù)儲(chǔ)存的服務(wù),讓許多既有的程序只要少許的修改就能存取云端數(shù)據(jù)資源。

  facade設(shè)計(jì)模式可以將雜亂或設(shè)計(jì)不好的應(yīng)用程序編程接口(API)再加上一層,把它包起來(lái)并提供一個(gè)容易看懂的新接口。簡(jiǎn)單的接口可以讓復(fù)雜龐大的程序接口隱藏起來(lái)。模式與SQL Azure的共同關(guān)系既是“目的相同”,也就是考慮到提供使用者一個(gè)易讀易寫(xiě)的應(yīng)用程序編程接口,這樣使得微軟從數(shù)據(jù)庫(kù)平臺(tái)架構(gòu)演變中,獲得更合理的設(shè)計(jì)抉擇。

     為IT168輯文,原文:http://tech.it168.com/a2010/0706/1074/000001074190_all.shtml

it知識(shí)庫(kù)架構(gòu)抉擇:享用微軟SQL云平臺(tái)就像吃烤鴨,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 99久久精品全部 | 狠狠鲁快播 | 国产噜噜噜精品免费 | 伦理片飘花手机在线 | 人妻中文字幕无码久久AV爆 | 美女屁股软件 | 嫩草电影网嫩草影院 | 九九热视频免费 | 亚洲成年人在线观看 | 国产中文字幕免费观看 | 97色伦图片7778久久 | 美女乱草鲍高清照片 | 24小时日本免费看 | 亚洲高清无码在线 视频 | 私人玩物在线观看 | 欧美成人国产 | 国产精品亚洲一区二区三区久久 | 亚洲 欧美 日韩 国产 视频 | 无限好资源免费观看 | 两性色午夜视频免费国产 | 一二三四免费中文在线1 | 最近韩国日本免费观看mv免费版 | 麻豆无人区乱码 | 成人性生交大片 | 2021国产精品视频一区 | 国产福利高清在线视频 | 久久成人免费观看草草影院 | 久久久久国产精品嫩草影院 | 我与恶魔的h生活ova | 久久精品18| 日本久久久WWW成人免费毛片丨 | 粉嫩AV国产一区二区福利姬 | 直插下身完整的欧美版 | 入禽太深免费视频10 | 国产一区精选播放022 | 亚洲涩福利高清在线 | 男人大臿蕉香蕉大视频 | 久久久久久88色偷偷 | 日本经典片免费看 | 青娱乐极品视觉盛宴av | 伊人久久伊人 |