專利名稱:Dns應(yīng)用服務(wù)器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總體上涉及數(shù)據(jù)通信,并且尤其涉及用于訪問(wèn)計(jì)算機(jī)資源的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。相關(guān)串請(qǐng)本申請(qǐng)要求于2009年10月13日提交的題為“DNS Application Server”的美國(guó)臨時(shí)專利申請(qǐng)61/251,136和于2009年11月11日提交的題為“Resource InfrastructureData Survey”的美國(guó)臨時(shí)專利申請(qǐng)61/258,042的權(quán)益,上述二者通過(guò)引用結(jié)合于此。
背景技術(shù):
web客戶端通過(guò)發(fā)起域名系統(tǒng)(DNS)查詢以便解析諸如www. example, com的完全限定域名(FQDN)或主機(jī)名來(lái)獲得用于訪問(wèn)互聯(lián)網(wǎng)資源(“資源”)的互聯(lián)網(wǎng)協(xié)議(IP)地址。IP地址使得web客戶端能夠創(chuàng)建通過(guò)其與資源進(jìn)行通信的IP連接。FQDN到IP地址的解析或轉(zhuǎn)換在 P. Mockapetris 的題為 “DOMAIN NAMES IMPLEMENTATION AND SPECIFICATION”的互聯(lián)網(wǎng)工程任務(wù)組(IETF)的出版物RFC 1035中描述,還在包括RFC 1033、1034、1912、2136、2181、2535、2671和4033的與DNS相關(guān)的另外的IETF出版物中描述,它們的教導(dǎo)都通過(guò)引用結(jié)合于此。授予Swildens等人的美國(guó)專利7,155,723描述了一種基于網(wǎng)絡(luò)信息、服務(wù)偵測(cè)、等待時(shí)間偵測(cè)、分組丟失偵測(cè)、帶寬使用和靜態(tài)等待時(shí)間信息來(lái)執(zhí)行解析的域名服務(wù)器,其公開內(nèi)容通過(guò)引用結(jié)合于此。授予Leighton等人的美國(guó)專利6,996,616描述了一種基于服務(wù)器性能生成域名服務(wù)器映射的映射產(chǎn)生器服務(wù),其公開內(nèi)容通過(guò)引用結(jié)合于此。授予Shah等人的美國(guó)專利6,446,121描述了一種被配置為接收DNS查詢,向多個(gè)鏡像web站點(diǎn)中的每個(gè)鏡像web站點(diǎn)發(fā)送查詢,以及通過(guò)向鏡像web站點(diǎn)指示以最佳的往返分組時(shí)間來(lái)對(duì)查詢進(jìn)行響應(yīng)的域名服務(wù)器,其公開內(nèi)容通過(guò)引用結(jié)合于此。
發(fā)明內(nèi)容
依據(jù)本發(fā)明的實(shí)施例,提供了一種用于提供對(duì)互聯(lián)網(wǎng)資源的訪問(wèn)的方法,包括接收用于解析主機(jī)名的DNS查詢,接收狀態(tài)數(shù)據(jù),通過(guò)由主機(jī)名指示的名稱調(diào)用代碼,將狀態(tài)數(shù)據(jù)輸送至代碼,從代碼接收對(duì)基礎(chǔ)設(shè)施的選擇,以及生成將解析定向到基礎(chǔ)設(shè)施的DNS響應(yīng)。在一些實(shí)施例中,將解析定向到基礎(chǔ)設(shè)施包括提供針對(duì)解析為基礎(chǔ)設(shè)施的主機(jī)別名的重定向,或者備選地,提供針對(duì)基礎(chǔ)設(shè)施的IP地址的解析。典型地,所接收的選擇已經(jīng)被代碼確定為關(guān)于成本和訪問(wèn)質(zhì)量的函數(shù)為最優(yōu)。輸送狀態(tài)數(shù)據(jù)可以包括輸送專用于web客戶端位置的狀態(tài)數(shù)據(jù)。在一些實(shí)施例中,主機(jī)名包括資源提供方指示符,以及輸送狀態(tài)數(shù)據(jù)包括輸送專用于資源提供方指示符的狀態(tài)數(shù)據(jù)。
狀態(tài)數(shù)據(jù)可以包括對(duì)基礎(chǔ)設(shè)施使用的測(cè)量。備選地或附加地,狀態(tài)數(shù)據(jù)可以包括對(duì)訪問(wèn)質(zhì)量的測(cè)量。在另外的實(shí)施例中,狀態(tài)數(shù)據(jù)可以包括Web客戶端位置。典型地,接收DNS查詢包括注冊(cè)權(quán)威域名服務(wù)器來(lái)從解析器接收DNS查詢,并且生成DNS響應(yīng)包括將DNS響應(yīng)輸送至解析器。主機(jī)名通常包括域和關(guān)鍵字串,并且由主機(jī)名指不的代碼的名稱由關(guān)鍵字串所指示。
典型地,該方法包括接收代碼,代碼包括計(jì)算機(jī)可執(zhí)行指令。代碼的接收可以利用門戶網(wǎng)站來(lái)執(zhí)行。調(diào)用代碼通常包括執(zhí)行代碼的實(shí)例并且使針對(duì)代碼的實(shí)例的請(qǐng)求排隊(duì)。調(diào)用代碼可以包括在受限的運(yùn)行時(shí)環(huán)境中執(zhí)行代碼。 依據(jù)本發(fā)明另外的實(shí)施例,還提供了一種用于提供對(duì)互聯(lián)網(wǎng)資源的訪問(wèn)的系統(tǒng),該系統(tǒng)包括應(yīng)用引擎和前端,應(yīng)用引擎被配置為具有用于接收包括計(jì)算機(jī)可執(zhí)行指令的代碼并且執(zhí)行代碼的實(shí)例的裝置,前端被配置為具有用于接收包括待解析的主機(jī)名的DNS查詢,接收狀態(tài)數(shù)據(jù),通過(guò)由主機(jī)名指示的名稱調(diào)用代碼的實(shí)例,將狀態(tài)數(shù)據(jù)輸送至代碼的實(shí)例,從代碼的實(shí)例接收對(duì)基礎(chǔ)設(shè)施的選擇,以及生成將解析定向到基礎(chǔ)設(shè)施的DNS響應(yīng)的
>j-U ρ α裝直。依據(jù)本發(fā)明另外的實(shí)施例,還提供了一種包括計(jì)算機(jī)可讀介質(zhì)的計(jì)算機(jī)程序產(chǎn)品,計(jì)算機(jī)可讀介質(zhì)包括計(jì)算機(jī)可讀程序,當(dāng)計(jì)算機(jī)可讀程序在計(jì)算機(jī)上執(zhí)行時(shí),計(jì)算機(jī)可讀程序使得計(jì)算機(jī)接收用于解析主機(jī)名的DNS查詢,接收狀態(tài)數(shù)據(jù),通過(guò)由主機(jī)名指示的名稱調(diào)用包括計(jì)算機(jī)可執(zhí)行指令的代碼,將狀態(tài)數(shù)據(jù)輸送至代碼,從代碼接收對(duì)基礎(chǔ)設(shè)施的選擇,以及生成將解析定向到基礎(chǔ)設(shè)施的DNS響應(yīng)。根據(jù)以下對(duì)本發(fā)明實(shí)施例的詳細(xì)描述,本發(fā)明將被更全面地理解。
圖I是根據(jù)本發(fā)明實(shí)施例的用于提供對(duì)包括DNS應(yīng)用服務(wù)器的互聯(lián)網(wǎng)資源的訪問(wèn)的系統(tǒng)的示意性圖示;圖2是根據(jù)本發(fā)明實(shí)施例的用于配置選擇器代碼的系統(tǒng)的示意性圖示;以及圖3是根據(jù)本發(fā)明實(shí)施例的用于提供對(duì)互聯(lián)網(wǎng)資源的訪問(wèn)的處理的流程圖。
具體實(shí)施例方式圖I是根據(jù)本發(fā)明實(shí)施例的用于提供對(duì)包括DNS應(yīng)用服務(wù)器22的互聯(lián)網(wǎng)資源的訪問(wèn)的系統(tǒng)20的示意性圖示。域名服務(wù)器可以被注冊(cè)為對(duì)諸如example, com的域具有權(quán)威性。隨后,用于解析域中的主機(jī)名(即,子域)的DNS查詢被路由至權(quán)威(authoritative)域名服務(wù)器。在下文中,術(shù)語(yǔ)“域”是指所注冊(cè)的域名,通常是針對(duì)其注冊(cè)了權(quán)威域名服務(wù)器的域。術(shù)語(yǔ)“主機(jī)名”是指在DNS查詢中指定的任意域或子域。如以上所提到的IETF RFC 1035中所描述的,用來(lái)解析主機(jī)名的DNS查詢是包括指定主機(jī)名的詢問(wèn)部分(question section)的DNS消息。由權(quán)威域名服務(wù)器發(fā)出的針對(duì)查詢的DNS響應(yīng)包括資源記錄(RR),其通過(guò)指定IP地址來(lái)解析查詢或者通過(guò)指定重定向或“主機(jī)別名”對(duì)查詢進(jìn)行重定向。定義解析的資源記錄被稱作地址資源記錄(A RR)。用于將主機(jī)名重定向至主機(jī)別名的資源記錄被稱作規(guī)范名字資源記錄(CNAME RR)。在本發(fā)明的實(shí)施例中,DNS應(yīng)用服務(wù)器22包括前端24,其被配置為執(zhí)行符合以上所提到的IETF RFC的域名服務(wù)器功能,諸如通常通過(guò)用戶數(shù)據(jù)報(bào)協(xié)議(TOP)接收DNS查詢,以及提供DNS響應(yīng)。前端24還被配置為從數(shù)據(jù)調(diào)查服務(wù)器26接收數(shù)據(jù)饋送25以及調(diào)用選擇器代碼28。數(shù)據(jù)調(diào)查服務(wù)器可以在獲取時(shí)提供發(fā)送至前端的實(shí)時(shí)數(shù)據(jù)。在一個(gè)實(shí)施例中,數(shù)據(jù)饋送是針對(duì)安全外殼(SSH)會(huì)話的單向加密TCP傳輸。數(shù)據(jù)饋送可以由諸如由發(fā)明人在以上所提到的美國(guó)臨時(shí)專利申請(qǐng)61/258,042中公開的之類的數(shù)據(jù)調(diào)查服務(wù)器來(lái)提供。數(shù)據(jù)饋送25通常包括狀態(tài)數(shù)據(jù),其在以下進(jìn)一步進(jìn)行描述。、選擇器代碼28是計(jì)算機(jī)可執(zhí)行代碼。調(diào)用選擇器代碼28可以包括執(zhí)行選擇器代碼,換句話說(shuō),發(fā)起執(zhí)行代碼的實(shí)例或?qū)ο?,或者與這樣的實(shí)例進(jìn)行連接或者以另外的方式進(jìn)行通信。所要理解的是,以下對(duì)選擇器代碼28的任務(wù)執(zhí)行所進(jìn)行的引用(諸如接收請(qǐng)求)是關(guān)于運(yùn)行選擇器代碼的實(shí)例而進(jìn)行的。DNS應(yīng)用服務(wù)器22還可以包括應(yīng)用引擎30,這是可以為選擇器代碼28的一個(gè)或多個(gè)實(shí)例提供運(yùn)行時(shí)框架的處理。在一些實(shí)施例中,應(yīng)用引擎包括加載可以將選擇器代碼的實(shí)例作為獨(dú)立處理來(lái)運(yùn)行或者在諸如fastCGI處理之類的處理之內(nèi)運(yùn)行的程序。應(yīng)用引擎30可以在受限的運(yùn)行時(shí)環(huán)境中運(yùn)行選擇器代碼28,從而使得選擇器代碼不訪問(wèn)外部資源,并且被限制為獲得具體輸入和提供具體輸出。選擇器代碼可以被遞送或上傳至前端利用代碼傳輸應(yīng)用32可訪問(wèn)的位置,該代碼傳輸應(yīng)用32被配置為通過(guò)連接或消息34來(lái)傳送代碼。代碼傳輸應(yīng)用32可以是基于文件傳輸協(xié)議(FTP)的應(yīng)用,或者是本領(lǐng)域中已知的提供消息發(fā)送或連接手段的任意應(yīng)用。在以下關(guān)于圖2進(jìn)一步描述的一個(gè)實(shí)施例中,DNS應(yīng)用服務(wù)器22包括用于接收選擇器代碼的門戶網(wǎng)站,并且代碼傳輸應(yīng)用32是超文本傳輸協(xié)議(HTTP)web頁(yè)面內(nèi)的表單。 前端可訪問(wèn)的選擇器代碼的位置可以是文件系統(tǒng)或數(shù)據(jù)庫(kù)29。一旦被上傳或者以另外的方式被存儲(chǔ),選擇器代碼28就還被分配以名稱,其隨后通過(guò)該名稱而被前端24所調(diào)用。在示例性的情形中,分配給選擇器代碼28的名稱可以是Scodel。隨選擇器代碼28的調(diào)用而被包括或者在選擇器代碼28的調(diào)用之后,前端24向選擇器代碼28發(fā)送選擇器請(qǐng)求36,其是提供狀態(tài)數(shù)據(jù)集合的消息或連接??梢岳脩?yīng)用引擎30將選擇器請(qǐng)求36輸送至選擇器代碼28。該請(qǐng)求可以通過(guò)諸如Java MessageService(JMS)之類的消息服務(wù)來(lái)發(fā)送,或者通過(guò)任意其它同步或異步通信手段來(lái)發(fā)送。在以上所提到的消息或連接內(nèi),狀態(tài)數(shù)據(jù)可以以單個(gè)數(shù)據(jù)結(jié)構(gòu)或者多個(gè)數(shù)據(jù)結(jié)構(gòu)來(lái)輸送,或者作為函數(shù)參數(shù)的集合或作為環(huán)境變量來(lái)輸送。選擇器請(qǐng)求可以由應(yīng)用引擎30進(jìn)行排隊(duì),直至選擇器代碼的實(shí)例可用。也可以實(shí)施由應(yīng)用服務(wù)器進(jìn)行應(yīng)用的同時(shí)多任務(wù)分配的其它方法,從而使得DNS應(yīng)用服務(wù)器可以提供可縮放的框架以便支持多個(gè)同時(shí)的DNS查詢。選擇器代碼28通常由資源提供方編程為基于成本和性能標(biāo)準(zhǔn)來(lái)選擇基礎(chǔ)設(shè)施,這在以下進(jìn)一步進(jìn)行描述。在這樣的處理之后,選擇器代碼向前端24輸送選擇器響應(yīng)38,其中包括基礎(chǔ)設(shè)施選擇。
如這里所涉及的,web客戶端40是諸如被配置為訪問(wèn)互聯(lián)網(wǎng)資源的web瀏覽器或簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(SOAP)應(yīng)用的應(yīng)用?;ヂ?lián)網(wǎng)資源可以包括但不限于文件、web頁(yè)面、應(yīng)用、郵件服務(wù)器和訪問(wèn)服務(wù)或網(wǎng)關(guān),包括用于語(yǔ)音和其它媒體的網(wǎng)關(guān)。這樣的資源經(jīng)常保持在基礎(chǔ)設(shè)施之內(nèi),上述基礎(chǔ)設(shè)施可以包括企業(yè)數(shù)據(jù)中心或者諸如云計(jì)算基礎(chǔ)設(shè)施和內(nèi)容遞送網(wǎng)絡(luò)(CDN)之類的外包基礎(chǔ)設(shè)施。資源提供方可以基于各種使用類型的測(cè)量進(jìn)行付費(fèi)以將資源保持在特定基礎(chǔ)設(shè)施之內(nèi),從而使得提供資源的成本可以根據(jù)一天中的時(shí)間以及峰值或合計(jì)吞吐量的水平而持續(xù)或以頻繁的間隔而改變。在本發(fā)明的實(shí)施例中,web客戶端40所尋求的資源的兩個(gè)或更多副本被保持在兩個(gè)或更多基礎(chǔ)設(shè)施中。在說(shuō)明性情形中,副本42a和42b被保持在相應(yīng)的基礎(chǔ)設(shè)施44a和44b 內(nèi)。 資源提供方注冊(cè)被指示為對(duì)于由資源提供方擁有的諸如example, com之類的域具有權(quán)威性的資源提供方(RP)域名服務(wù)器46的域名服務(wù)器。典型地,RP域名服務(wù)器46是常規(guī)域名服務(wù)器,其被配置為基于通常被稱作區(qū)域文件的映射(map)中所保持的資源記錄(RR)生成DNS響應(yīng)。web客戶端通常通過(guò)指定包括資源名稱和主機(jī)名的統(tǒng)一資源定位符(URL)來(lái)尋求資源。所指定的主機(jī)名通常是由資源提供方擁有的域中的主機(jī)名。在說(shuō)明性情形中,web客戶端40尋求諸如具有名稱RPdata并且位于example, com域內(nèi)的主機(jī)名的數(shù)據(jù)庫(kù)之類的資源,上述數(shù)據(jù)庫(kù)諸如RPhostl. example, com。為了得到對(duì)該資源的訪問(wèn),web客戶端請(qǐng)求到指示主機(jī)名和資源名稱的URL的連接,即RPhostl. example. com/RPdata形式的URL。針對(duì)web客戶端40的DNS解析由解析器48提供。解析器48根據(jù)在如以上所提到的RFC 1033中描述的DNS協(xié)議進(jìn)行操作。由web客戶端所進(jìn)行的URL請(qǐng)求對(duì)解析器48生成DNS查詢50,該查詢是用來(lái)解析示例性主機(jī)名RPhost. example, com的請(qǐng)求。解析器48將RP域名服務(wù)器46識(shí)別為對(duì)所指定的域example, com具有權(quán)威性,并且向RP域名服務(wù)器發(fā)送查詢52以用于解析RPhost. example, com。RP域名服務(wù)器46被配置為具有映射以將主機(jī)名RPhostl. example, com重定向至前端24對(duì)其具有權(quán)威性的主機(jī)別名。在本發(fā)明的實(shí)施例中,前端24對(duì)于與由資源提供方所擁有的域不同的域具有權(quán)威性。例如,在說(shuō)明性情形中,前端24可以對(duì)域DNSappserv.net具有權(quán)威性。由RP域名服務(wù)器46返回的主機(jī)別名包括兩個(gè)部分,一個(gè)是前端24對(duì)其具有權(quán)威性的域DNSappserv. net,而另一個(gè)部分是包括選擇器代碼的名稱或指示符的關(guān)鍵字串。關(guān)鍵字串還可以包括具體指不資源提供方的標(biāo)簽。關(guān)鍵字串中還可以包括附加的指示符,包括待傳遞至選擇器代碼的參數(shù)。在示例性情形中,對(duì)于選擇器代碼“Scodel”和資源提供方指示符“RP1”而言,關(guān)鍵字串可以被定義為Scodel-RPl。以資源記錄格式編寫的相對(duì)應(yīng)的主機(jī)別名可以是Scodel-RPLDNSappserv.net。關(guān)鍵字串中所包括的指示符無(wú)需通過(guò)字符(諸如點(diǎn)或連字符)進(jìn)行定界。指示符也可以被編碼。由RP域名服務(wù)器46給出的指定了主機(jī)別名Scodel-RPl. DNSappserv. net的DNS響應(yīng)被返回至解析器。解析器確定前端24是被注冊(cè)為解析主機(jī)別名的權(quán)威域名服務(wù)器,并且向前端24發(fā)出新的DNS查詢56以用于解析主機(jī)別名。前端24解析主機(jī)別名以提取選擇器代碼28的標(biāo)識(shí)符,也就是“Scodel”。前端24接著通過(guò)指定所提取的標(biāo)識(shí)符來(lái)發(fā)起或調(diào)用選擇器代碼28。選擇器28的調(diào)用通常包括將選擇器請(qǐng)求36傳遞至選擇器代碼。如以上所描述的,選擇器請(qǐng)求36包括由前端24接收的狀態(tài)數(shù)據(jù)。這樣的狀態(tài)數(shù)據(jù)可以包括對(duì)訪問(wèn)質(zhì)量的測(cè)量,其可以反映web客戶端40在訪問(wèn)資源副本42a和42b時(shí)可以體驗(yàn)到的訪問(wèn)質(zhì)量。狀態(tài)數(shù)據(jù)還可以包括對(duì)基礎(chǔ)設(shè)施使用的測(cè)量,其可能會(huì)影響向web客戶端40提供對(duì)以上所提到的資源副 本的訪問(wèn)的成本。在一些實(shí)施例中,前端還可以在調(diào)用選擇器代碼之前確定web客戶端40的大致地理或網(wǎng)絡(luò)位置。DNS查詢56通常由包括解析器的IP地址的IP分組所發(fā)送。前端可以被配置為具有將解析器IP地址與接近web客戶端位置的地理位置相關(guān)聯(lián)的映射。此外,可以從提供諸如邊界網(wǎng)關(guān)協(xié)議(BGP)數(shù)據(jù)之類的網(wǎng)絡(luò)拓?fù)鋽?shù)據(jù)的數(shù)據(jù)調(diào)查服務(wù)器得出諸如自治系統(tǒng)(AS)之類的網(wǎng)絡(luò)位置前端24可以在利用選擇器請(qǐng)求輸送的狀態(tài)數(shù)據(jù)中包括對(duì)web客戶端位置的一個(gè)或多個(gè)估計(jì)。選擇器請(qǐng)求中所包括的對(duì)訪問(wèn)質(zhì)量的測(cè)量通常專用于web客戶端位置并且專用于一個(gè)或多個(gè)基礎(chǔ)設(shè)施中的每一個(gè)基礎(chǔ)設(shè)施。這樣的測(cè)量可以包括響應(yīng)時(shí)間(其可以是在發(fā)送傳輸和接收到第一響應(yīng)或接收到完整響應(yīng)之間所流逝的時(shí)間,或者是類似的測(cè)量,諸如在請(qǐng)求服務(wù)和使得服務(wù)得以執(zhí)行之間的時(shí)間)、連接時(shí)間(諸如用于IP連接、SSL連接或者到事務(wù)應(yīng)用服務(wù)器的連接的時(shí)間)、傳輸速度(通常以字節(jié)/秒進(jìn)行測(cè)量)、錯(cuò)誤率(諸如壞字節(jié)或壞分組的百分比)、連接抖動(dòng)(對(duì)諸如傳輸速度或錯(cuò)誤率的可變性之類的質(zhì)量可變性的測(cè)量)和可用性比率(例如,連接或服務(wù)完成的比率)?;A(chǔ)設(shè)施使用狀態(tài)數(shù)據(jù)可以包括對(duì)瞬時(shí)突發(fā)速率(S卩,由基礎(chǔ)設(shè)施所傳送和/或接收的資源內(nèi)容以字節(jié)/秒來(lái)測(cè)量的瞬時(shí)吞吐量)和合計(jì)使用(即,在給定時(shí)間段內(nèi)所傳輸?shù)淖止?jié)總數(shù))的統(tǒng)計(jì)?;A(chǔ)設(shè)施使用狀態(tài)數(shù)據(jù)還可以包括所服務(wù)的請(qǐng)求的數(shù)目、開放連接的數(shù)目、事務(wù)處理率(transaction rate)、臨界閾值(threshold margin)、月下載總量或合計(jì)處理負(fù)載。前端24可以基于在關(guān)鍵字串中包括的資源提供方指示符來(lái)限制所接收的狀態(tài)數(shù)據(jù)。例如,在這里所描述的示例性情形中,傳遞至選擇器代碼“Scodel”的狀態(tài)數(shù)據(jù)將被限制為與基礎(chǔ)設(shè)施44a和44b相關(guān)的狀態(tài)數(shù)據(jù)。在以下關(guān)于圖2進(jìn)一步描述的一個(gè)實(shí)施例中,當(dāng)上傳選擇器代碼時(shí),資源提供方還指定與代碼相關(guān)的狀態(tài)數(shù)據(jù)變量的集合。前端24還可以基于web客戶端位置來(lái)限制所接收的狀態(tài)數(shù)據(jù),web客戶端的位置的范圍可以從給定的網(wǎng)絡(luò)或城市到國(guó)家或大陸。由web客戶端體驗(yàn)到的訪問(wèn)質(zhì)量可以根據(jù)web客戶端位置而大幅變化。結(jié)果,響應(yīng)于來(lái)自具體web客戶端的DNS查詢,對(duì)訪問(wèn)質(zhì)量的相關(guān)測(cè)量是從相同的接近web客戶端位置所確定的那些測(cè)量。對(duì)訪問(wèn)質(zhì)量和使用的測(cè)量也可以通過(guò)對(duì)多個(gè)狀態(tài)數(shù)據(jù)測(cè)量進(jìn)行平均來(lái)確定。一旦接收到選擇器請(qǐng)求36,選擇器代碼就對(duì)所接收的狀態(tài)數(shù)據(jù)的集合執(zhí)行一個(gè)或多個(gè)邏輯運(yùn)算和數(shù)學(xué)運(yùn)算,以便選擇客戶端將在那里訪問(wèn)所期望資源的基礎(chǔ)設(shè)施。在一個(gè)實(shí)施例中,選擇器代碼中的邏輯確定偏好指標(biāo)(preference index),從而使得具有最佳(最高或最低)偏好指標(biāo)的基礎(chǔ)設(shè)施被選擇為最優(yōu)。偏好指標(biāo)可以是在成本和訪問(wèn)質(zhì)量之間的最優(yōu)權(quán)衡的函數(shù)。
選擇器代碼可以包括資源提供方為每個(gè)基礎(chǔ)設(shè)施的不同類型的使用而支付的價(jià)格(即,定價(jià)費(fèi)率表),包括突發(fā)費(fèi)用(burst rate)和承諾水平價(jià)格。例如,基礎(chǔ)設(shè)施44a和44b可以分別是主要基礎(chǔ)設(shè)施和次要基礎(chǔ)設(shè)施。資源提供方可以每個(gè)月為主要基礎(chǔ)設(shè)施的使用而支付統(tǒng)一費(fèi)用,直到已經(jīng)達(dá)到了某合同所規(guī)定的承諾水平的使用。超出合同所規(guī)定的承諾水平的使用可以以更高的費(fèi)率進(jìn)行計(jì)費(fèi)。結(jié)果,選擇器代碼可以被配置為將主要基礎(chǔ)設(shè)施的合同所規(guī)定的承諾水平與狀態(tài)數(shù)據(jù)中所包括的合計(jì)使用測(cè)量進(jìn)行比較。當(dāng)已經(jīng)達(dá)到合同所規(guī)定的承諾水平時(shí),選擇器代碼可以選擇次要基礎(chǔ)設(shè)施而不是主要基礎(chǔ)設(shè)施。類似地,如果針對(duì)主要基礎(chǔ)設(shè)施的定價(jià)針對(duì)不同水平的突發(fā)費(fèi)用而改變,則次要基礎(chǔ)設(shè)施可以是優(yōu)選的,也就是說(shuō),在突發(fā)費(fèi)用超過(guò)合同所規(guī)定的標(biāo)準(zhǔn)水平時(shí)次要基礎(chǔ)設(shè)施是最優(yōu)的。選擇器代碼還可以被編程為僅在對(duì)次要基礎(chǔ)設(shè)施的訪問(wèn)質(zhì)量的一個(gè)或多個(gè)實(shí)時(shí)測(cè)量滿足最低標(biāo)準(zhǔn)的另外情況下才選擇次要基礎(chǔ)設(shè)施。因此,可以理解的是,選擇器代碼可以被編程為優(yōu)化訪問(wèn)質(zhì)量和基礎(chǔ)設(shè)施成本,其中實(shí)現(xiàn)這樣的優(yōu)化可以包括在兩個(gè)目標(biāo)之間進(jìn)行權(quán)衡。選擇器代碼的實(shí)施不需要被限制為具體的編程語(yǔ)言或編程范例。在一個(gè)實(shí)施例中,選擇器代碼以通用腳本語(yǔ)言PHP進(jìn)行編程。應(yīng)用引擎可以是PHP解釋程序,或者可以對(duì)腳本化的選擇器代碼進(jìn)行編譯以便在沒(méi)有解釋程序的情況下執(zhí)行。在附件I的示例選擇器程序中,通過(guò)將基礎(chǔ)設(shè)施的成本因數(shù)乘以基礎(chǔ)設(shè)施的響應(yīng)時(shí)間來(lái)針對(duì)每個(gè)基礎(chǔ)設(shè)施計(jì)算偏好指標(biāo),響應(yīng)時(shí)間包括在狀態(tài)數(shù)據(jù)中。選擇器代碼生成包括新的主機(jī)別名的輸出38,這是針對(duì)基礎(chǔ)設(shè)施44a和44b之一的主機(jī)名解析。例如,針對(duì)基礎(chǔ)設(shè)施44a的主機(jī)名解析可以是RPhostl. cdl. net,而針對(duì)基礎(chǔ)設(shè)施44b的主機(jī)名解析可以是RPhostl. cd2. net。在備選實(shí)施例中,選擇器代碼28可以返回定向到基礎(chǔ)設(shè)施之一的IP地址,由此避開了對(duì)后續(xù)解析的需要。前端24向解析器48傳輸DNS響應(yīng)62。DNS響應(yīng)通過(guò)指定到新的主機(jī)別名(CNAME資源記錄中)的重定向或者通過(guò)利用IP地址提供解析而將解析定向到所選擇的基礎(chǔ)設(shè)施。備選地,在選擇器代碼沒(méi)有提供適當(dāng)響應(yīng)的情況下或者例如如果不存在具有由關(guān)鍵字串所指示的名稱的選擇器代碼,DNS響應(yīng)62可以指示錯(cuò)誤或者其它的缺省響應(yīng)。當(dāng)由DNS響應(yīng)62指定了重定向時(shí),解析器48隨后發(fā)出又一查詢并且從對(duì)所選擇的基礎(chǔ)設(shè)施具有權(quán)威性的域名服務(wù)器(未示出)接收解析。解析器48隨后向web客戶端40返回解析DNS響應(yīng)64?!┙邮盏浇馕?根據(jù)基礎(chǔ)設(shè)施44a和基礎(chǔ)設(shè)施44b中哪一個(gè)被選擇,web客戶端40可以通過(guò)到基礎(chǔ)設(shè)施44a的連接66或者通過(guò)到基礎(chǔ)設(shè)施44b的連接68來(lái)訪問(wèn)期望資源。由選擇器代碼28進(jìn)行的輸出可以是資源記錄的形式,從而使得重定向主機(jī)名被指定為CNAME記錄并且IP地址被指定為A記錄。選擇器代碼28還可以向前端傳輸可以包括在DNS響應(yīng)62中的附加的參數(shù),諸如DNS存活時(shí)間(TTL)數(shù)值。較大的TTL數(shù)值增加了響應(yīng)被解析器高速緩存的時(shí)間,由此減少了 DNS應(yīng)用服務(wù)器22上的負(fù)載。 典型地,前端24從DNS應(yīng)用服務(wù)器可訪問(wèn)的若干選擇器代碼中調(diào)用選擇器代碼28。根據(jù)關(guān)鍵字串選擇選擇器代碼允許DNS應(yīng)用服務(wù)器支持來(lái)自一個(gè)或多個(gè)資源提供方的多個(gè)選擇器代碼。實(shí)施選擇器代碼可以僅要求兩個(gè)步驟將重定向映射(這樣的映射包括對(duì)選擇器代碼進(jìn)行命名的關(guān)鍵詞串)添加到RP域名服務(wù)器的資源記錄表,以及將選擇器代碼上傳到前端可訪問(wèn)的位置??梢栽谶x擇器代碼數(shù)據(jù)庫(kù)29中存儲(chǔ)多于一個(gè)的選擇器代碼,從而使得DNS應(yīng)用服務(wù)器可以針對(duì)多個(gè)資源和針對(duì)多個(gè)資源提供方而支持不同的選擇邏輯。圖2是根據(jù)本發(fā)明實(shí)施例的用于配置諸如以上所描述的選擇器代碼28之類的選擇器代碼以用于由DNS應(yīng)用服務(wù)器22運(yùn)行的系統(tǒng)200的示意性圖示。在以上關(guān)于圖I所描述的本發(fā)明實(shí)施例中,選擇器代碼被置于DNS應(yīng)用服務(wù)器利用代碼傳輸應(yīng)用可訪問(wèn)的位置。如關(guān)于系統(tǒng)200所示出的,這樣的代碼傳輸應(yīng)用可以是資源提供方接口 202。資源提供方接口 202可以是web瀏覽器或其它連接互聯(lián)網(wǎng)的應(yīng)用。驅(qū)動(dòng)接口 202的內(nèi)容可以由DNS應(yīng)用服務(wù)器門戶網(wǎng)站204所供應(yīng)。接口 202可以包括資源提供方或接口的其它用戶可以向其中上傳或附上選擇器代碼的表單。該接口還可以包括附加選項(xiàng),諸如 用戶可以利用其指定相關(guān)狀態(tài)數(shù)據(jù)變量的集合由此如以上所描述的在相關(guān)狀態(tài)數(shù)據(jù)和資源提供方指示符之間提供關(guān)聯(lián)的文本框或復(fù)選框。DNS應(yīng)用服務(wù)器門戶網(wǎng)站可以允許均具有其自己的安全代碼或密碼的多個(gè)資源提供方上傳、編輯和刪除選擇器代碼。可以使得選擇器代碼可用,即DNS應(yīng)用服務(wù)器通過(guò)本領(lǐng)域中已知的若干手段可訪問(wèn),這些手段諸如以上所描述的置于數(shù)據(jù)庫(kù)29中。數(shù)據(jù)庫(kù)29可以是在多個(gè)計(jì)算機(jī)上運(yùn)行的分布式數(shù)據(jù)庫(kù)。圖3是根據(jù)本發(fā)明實(shí)施例的用于向web客戶端提供對(duì)互聯(lián)網(wǎng)資源的訪問(wèn)的處理300的流程圖。在步驟302,DNS應(yīng)用服務(wù)器接收選擇器代碼,如以上關(guān)于圖2所描述的,選擇器代碼可以由資源提供方傳送至DNS應(yīng)用服務(wù)器。如以上關(guān)于應(yīng)用引擎30所描述的,DNS應(yīng)用服務(wù)器可以實(shí)施可縮放的、受限的運(yùn)行時(shí)框架以用于運(yùn)行選擇器代碼。在步驟304,如以上所描述的,包括被配置作為權(quán)威域名服務(wù)器的前端的DNS應(yīng)用服務(wù)器接收DNS查詢。DNS查詢通常由web客戶端發(fā)起并且經(jīng)由解析器進(jìn)行傳送。在步驟306,DNS應(yīng)用服務(wù)器從DNS查詢提取關(guān)鍵字串,由此獲得由關(guān)鍵字串指示的名稱,這是通過(guò)其調(diào)用選擇器代碼的名稱。在步驟308,DNS應(yīng)用服務(wù)器獲取與查詢相關(guān)的狀態(tài)數(shù)據(jù)。相關(guān)狀態(tài)數(shù)據(jù)可以是DNS應(yīng)用服務(wù)器從一個(gè)或多個(gè)數(shù)據(jù)調(diào)查服務(wù)器實(shí)時(shí)獲取的狀態(tài)數(shù)據(jù)的子集。在后續(xù)的步驟310,應(yīng)用服務(wù)器通過(guò)在關(guān)鍵字串中所指示的名稱調(diào)用選擇器代碼,并且利用選擇器請(qǐng)求將相關(guān)狀態(tài)數(shù)據(jù)傳遞至選擇器代碼。在一個(gè)實(shí)施例中,DNS應(yīng)用服務(wù)器利用被配置為運(yùn)行選擇器代碼的實(shí)例的應(yīng)用引擎對(duì)選擇器請(qǐng)求進(jìn)行排隊(duì)。在步驟312,在選擇器代碼接收到選擇器請(qǐng)求的通信并且確定了主機(jī)名重定向或IP地址解析之后,DNS應(yīng)用服務(wù)器接收具有要在那里訪問(wèn)資源的基礎(chǔ)設(shè)施的選擇的選擇器響應(yīng)。在步驟314,DNS應(yīng)用服務(wù)器基于由選擇器代碼提供的所選擇基礎(chǔ)設(shè)施對(duì)查詢解析器生成DNS響應(yīng)。當(dāng)資源保持在基礎(chǔ)設(shè)施特別是外包基礎(chǔ)設(shè)施處時(shí),由web客戶端用來(lái)解析主機(jī)名的DNS查詢通常被重定向至指示(即,隨后對(duì)之進(jìn)行解析)外包基礎(chǔ)設(shè)施的主機(jī)別名。外包基礎(chǔ)設(shè)施的提供方可以要求這樣的重定向,從而使得由外包基礎(chǔ)設(shè)施提供方所配置的權(quán)威域名服務(wù)器來(lái)進(jìn)行后續(xù)的解析。通常,本發(fā)明的DNS應(yīng)用服務(wù)器可以以軟件和/或硬件來(lái)實(shí)施。作為軟件程序產(chǎn)品的實(shí)施例可以被實(shí)現(xiàn)為通用計(jì)算系統(tǒng)上的一個(gè)或多介應(yīng)用。被配置為實(shí)施DNS應(yīng)用服務(wù)器的計(jì)算系統(tǒng)可以具有一個(gè)或多個(gè)處理器以及一個(gè)或多個(gè)網(wǎng)絡(luò)接口模塊。處理器可以被配置為多處理或分布式處理系統(tǒng)。網(wǎng)絡(luò)接口模塊控制數(shù)據(jù)分組在網(wǎng)絡(luò)上的發(fā)送和接收。這樣的計(jì)算系統(tǒng)還包括用于存儲(chǔ)指示處理器執(zhí)行這里所描述的各種操作的計(jì)算機(jī)可執(zhí)行指令的存儲(chǔ)器存儲(chǔ)設(shè)備。存儲(chǔ)器存儲(chǔ)設(shè)備還可以包括多個(gè)分布式存儲(chǔ)器單元,其包括一種或多種存儲(chǔ)介質(zhì)。存儲(chǔ)介質(zhì)的示例包括但不限于磁介質(zhì)、光介質(zhì)以及諸如只讀存 儲(chǔ)器設(shè)備(ROM)和隨機(jī)存取存儲(chǔ)器(RAM)之類的集成電路。所要理解的是,以上所描述的實(shí)施例通過(guò)示例被加以引用,并且本發(fā)明并不局限于以上已經(jīng)特別示出和描述的內(nèi)容。相反,本發(fā)明的范圍包括以上所描述的各種特征的組合和子組合二者,以及本領(lǐng)域技術(shù)人員在閱讀了以上描述之后可以對(duì)其進(jìn)行的沒(méi)有在現(xiàn)有技術(shù)中所公開的變化和修改。附錄樣本選擇器代碼< php /* * Sample App: Optimize for Cost * Description: Use CDNresponse times and per-CDN costs to select most cost-effective CDNprovider */
function process_request($request,$radar) { /* * $request provides all ofthe request parameters
*provided by the user. $radar provides an array of CDN*response times relevant to the requester. */
// Set the return URLs to use depending on the provider$address["edgecast"] = ”wac.l3BE.edgecastcdn.net,edgecast”;
$ addres s [" cdnetworks" ] = "nl.panthercdn.com,cdnetworks";$address["yacast"] = "http5 .mhvcdn.yacast.net,yacast";
// Set provider costs selected. $cost["edgecast"] = 21;·$cost["cdnetworks"] = 20;
$cost["yacast"] = 20;
// Sort the response times from low to high.asort($radar[Mhttp_rtt"]);
Il Sort the costs from low to high, asort($cost);
// Select from among the address that we have performancedata SavailableAddrs = array_intersect_key(Saddress,
$radar["http_rtt"]);
// Next select from the addresses that we have price datafor SpricedAddrs = array—intersect—key( $cost,
SavailableAddrs);
//rank the remaining addresses from low to highasort($pricedAddrs);
//initialize selector response $response =
/* For each provider that has price and performance data,*we will determine the current cost by multiplying the*cost value of the provider by the response time* of the provider. This gives us best value provider. */foreach ($pricedAddrs as $key => $value) { $costed[$key]=$value * $radar["http_rtt"][$key]; }
Il Sort the list based on the cost/response time value.asort($costed);
// double check that a response address exists, return itif ($address[key($costed)]) { return$address[key($costed)]; }
// Otherwise, return the default, return $default_url; } >
權(quán)利要求
1.一種用于提供對(duì)互聯(lián)網(wǎng)資源的訪問(wèn)的方法,包括 接收用于解析主機(jī)名的DNS查詢; 接收狀態(tài)數(shù)據(jù); 通過(guò)由所述主機(jī)名指示的名稱調(diào)用代碼; 將所述狀態(tài)數(shù)據(jù)輸送至所述代碼;· 從所述代碼接收對(duì)基礎(chǔ)設(shè)施的選擇;以及 生成將解析定向到所述基礎(chǔ)設(shè)施的DNS響應(yīng)。
2.如權(quán)利要求I所述的方法,其中將所述解析定向到所述基礎(chǔ)設(shè)施包括提供到主機(jī)別名的重定向。
3.如權(quán)利要求I所述的方法,其中將所述解析定向到所述基礎(chǔ)設(shè)施包括提供所述主機(jī)名到IP地址的解析。
4.如權(quán)利要求I所述的方法,其中接收所述基礎(chǔ)設(shè)施的選擇包括接收由所述代碼確定的關(guān)于基礎(chǔ)設(shè)施成本和訪問(wèn)質(zhì)量的函數(shù)的最優(yōu)的結(jié)果。
5.如權(quán)利要求I所述的方法,其中輸送所述狀態(tài)數(shù)據(jù)包括輸送專用于web客戶端位置的狀態(tài)數(shù)據(jù)。
6.如權(quán)利要求I所述的方法,其中所述主機(jī)名包括資源提供方指示符,并且其中輸送所述狀態(tài)數(shù)據(jù)包括輸送專用于所述資源提供方指示符的狀態(tài)數(shù)據(jù)。
7.如權(quán)利要求I所述的方法,其中所述狀態(tài)數(shù)據(jù)包括對(duì)基礎(chǔ)設(shè)施使用的測(cè)量。
8.如權(quán)利要求I所述的方法,其中所述狀態(tài)數(shù)據(jù)包括對(duì)訪問(wèn)質(zhì)量的測(cè)量。
9.如權(quán)利要求I所述的方法,其中所述狀態(tài)數(shù)據(jù)包括web客戶端位置。
10.如權(quán)利要求I所述的方法,其中接收所述DNS查詢包括注冊(cè)權(quán)威域名服務(wù)器以接收所述DNS查詢和從解析器接收所述DNS查詢,并且其中生成所述DNS響應(yīng)包括將所述DNS響應(yīng)傳送至所述解析器。
11.如權(quán)利要求I所述的方法,其中所述主機(jī)名包括域和關(guān)鍵字串,并且其中由所述主機(jī)名指示的所述代碼的所述名稱由所述關(guān)鍵字串所指示。
12.如權(quán)利要求I所述的方法,還包括接收所述代碼,其中所述代碼包括計(jì)算機(jī)可執(zhí)行指令。
13.如權(quán)利要求12所述的方法,其中接收所述代碼包括通過(guò)門戶網(wǎng)站接收所述代碼。
14.如權(quán)利要求I所述的方法,其中調(diào)用所述代碼包括執(zhí)行所述代碼的實(shí)例和使針對(duì)所述代碼的所述實(shí)例的請(qǐng)求排隊(duì)。
15.如權(quán)利要求I所述的方法,其中調(diào)用所述代碼包括在受限的運(yùn)行時(shí)環(huán)境中執(zhí)行所述代碼。
16.一種用于提供對(duì)互聯(lián)網(wǎng)資源的訪問(wèn)的系統(tǒng),包括 應(yīng)用引擎,其被配置為具有用于接收包括計(jì)算機(jī)可執(zhí)行指令的代碼并且執(zhí)行所述代碼的實(shí)例的裝置;以及 前端,其被配置為具有用于接收用于解析主機(jī)名的DNS查詢,接收狀態(tài)數(shù)據(jù),通過(guò)由所述主機(jī)名指示的名稱調(diào)用所述代碼的所述實(shí)例,將所述狀態(tài)數(shù)據(jù)輸送至所述代碼的所述實(shí)例,從所述代碼的所述實(shí)例接收對(duì)基礎(chǔ)設(shè)施的選擇,以及生成將解析定向到所述基礎(chǔ)設(shè)施的DNS響應(yīng)的裝置。
17.—種包括計(jì)算機(jī)可讀介質(zhì)的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)可讀介質(zhì)包括計(jì)算機(jī)可讀程序,當(dāng)所述計(jì)算機(jī)可讀程序在計(jì)算機(jī)上執(zhí)行時(shí),所述計(jì)算機(jī)可讀程序使得所述計(jì)算機(jī)接收用于解析主機(jī)名的DNS查詢,接收狀態(tài)數(shù)據(jù),通過(guò)由所述主機(jī)名指示的名稱調(diào)用代碼,將所述狀態(tài)數(shù)據(jù)輸送至所述代碼,從所述代碼接收對(duì)基礎(chǔ)設(shè)施的選擇,以及生成將解析定向到所述基礎(chǔ)設(shè)施的DNS響應(yīng)。
全文摘要
一種用于提供對(duì)互聯(lián)網(wǎng)資源的訪問(wèn)的方法,包括接收包括待解析的主機(jī)名的DNS查詢,接收狀態(tài)數(shù)據(jù),通過(guò)由主機(jī)名指示的名稱調(diào)用代碼,將狀態(tài)數(shù)據(jù)輸送至代碼,從代碼接收對(duì)基礎(chǔ)設(shè)施的選擇,以及生成將解析定向到基礎(chǔ)設(shè)施的DNS響應(yīng)。
文檔編號(hào)G06F15/16GK102667749SQ201080052941
公開日2012年9月12日 申請(qǐng)日期2010年10月7日 優(yōu)先權(quán)日2009年10月13日
發(fā)明者M·卡甘 申請(qǐng)人:塞德克西斯公司