九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
一文解讀Web應(yīng)用架構(gòu)概覽

 大規(guī)模動(dòng)態(tài)應(yīng)用系統(tǒng)平臺(tái)主要針對(duì)大流量、高并發(fā)網(wǎng)站構(gòu)建的底層系統(tǒng)架構(gòu)。運(yùn)行大型網(wǎng)站需要一個(gè)可靠、安全、可擴(kuò)展、易維護(hù)的應(yīng)用系統(tǒng)平臺(tái)作為支持,以保證網(wǎng)站應(yīng)用的平穩(wěn)運(yùn)行。

    下面的圖表很好地概述了現(xiàn)代Web應(yīng)用體系結(jié)構(gòu)。要是沒有一個(gè)有經(jīng)驗(yàn)的Web開發(fā)人員,你可能會(huì)覺得這很復(fù)雜。使用下面的介紹可以對(duì)每個(gè)組件的詳細(xì)信息有一個(gè)初步的了解和理解。

    1.DNS

    DNS的意思是“域名服務(wù)器”,是實(shí)現(xiàn)萬維網(wǎng)的中樞技術(shù)。為從域名(例如,google.com)到IP地址(例如,85.129.83.120)的關(guān)鍵字/值提供查詢,這對(duì)于計(jì)算機(jī)將請(qǐng)求路由到適當(dāng)?shù)奈恢檬潜匾摹Ec電話號(hào)碼相似,域名和IP地址之間的差別在于“打電話給我”和“打電話給我201-867-5309”。類似于需要一個(gè)電話簿去查找過去的號(hào)碼一樣,需要一個(gè)用來查找域名IP地址的通行權(quán)。因此,可以將DNS視為互聯(lián)網(wǎng)的電話簿。

    2.負(fù)載均衡

    在深入研究負(fù)載平衡的細(xì)節(jié)之前,需要退一步討論水平與垂直應(yīng)用程序擴(kuò)展。水平擴(kuò)展意味著可以通過在資源池中添加更多計(jì)算機(jī)來擴(kuò)展,而“垂直”擴(kuò)展意味著可以通過向現(xiàn)有計(jì)算機(jī)添加更多功率(例如,CPU,RAM)來擴(kuò)展。

    在Web開發(fā)中,總是希望水平擴(kuò)展,為了簡單起見,也是因?yàn)閮?nèi)容可能會(huì)中斷。服務(wù)運(yùn)行的過程中會(huì)出現(xiàn)服務(wù)器隨機(jī)崩潰、網(wǎng)絡(luò)降級(jí)、整個(gè)數(shù)據(jù)中心脫機(jī)等問題。擁有多個(gè)服務(wù)器允許規(guī)劃中斷,以便應(yīng)用程序繼續(xù)運(yùn)行。換句話說,應(yīng)用程序是“容錯(cuò)的”。其次,橫向擴(kuò)展允許通過讓每個(gè)部分在不同的服務(wù)器上運(yùn)行來最小化地耦合應(yīng)用程序后端的不同部分(Web服務(wù)器,數(shù)據(jù)庫,服務(wù)X等)。

    回到負(fù)載平衡器,它們使水平縮放成為可能。它們將傳入的請(qǐng)求路由到許多應(yīng)用程序服務(wù)器中的一個(gè),這些服務(wù)器通常是彼此的克隆/鏡像映像,并將響應(yīng)從應(yīng)用程序服務(wù)器發(fā)送回客戶端。它們中的任何一個(gè)都應(yīng)該以相同的方式處理請(qǐng)求,因此只需要在服務(wù)器集中分發(fā)請(qǐng)求,這樣就不會(huì)使這些請(qǐng)求過載。

    3.Web應(yīng)用服務(wù)器

    Web應(yīng)用程序服務(wù)器的描述相對(duì)簡單。它們執(zhí)行處理用戶請(qǐng)求的核心業(yè)務(wù)邏輯,并將HTML發(fā)送回用戶的瀏覽器。為了完成其工作,它們通常與各種后端基礎(chǔ)設(shè)施進(jìn)行通信,例如數(shù)據(jù)庫,緩存層,作業(yè)隊(duì)列,搜索服務(wù),其他微服務(wù),數(shù)據(jù)/日志記錄隊(duì)列等。如上所述,為了處理用戶請(qǐng)求,通常需要多個(gè)應(yīng)用服務(wù)器,并且需要插入負(fù)載均衡服務(wù)。

    應(yīng)用服務(wù)器的實(shí)現(xiàn)需要選擇特定語言(Node.js,Ruby,PHP,Scala,Java,C#.NET等)和該語言的WebMVC框架(ExpressforNode.js,RubyonRails,PlayforScala,LaravelforPHP等)。深入研究這些語言和框架的細(xì)節(jié)超出了本文的范圍。

    4.數(shù)據(jù)庫服務(wù)器

    每個(gè)現(xiàn)代Web應(yīng)用程序都利用一個(gè)或多個(gè)數(shù)據(jù)庫來存儲(chǔ)信息。數(shù)據(jù)庫提供了定義數(shù)據(jù)結(jié)構(gòu),插入新數(shù)據(jù),查找現(xiàn)有數(shù)據(jù),更新或刪除現(xiàn)有數(shù)據(jù),跨數(shù)據(jù)執(zhí)行計(jì)算等的方法。在大多數(shù)情況下,Web應(yīng)用程序服務(wù)器與作業(yè)服務(wù)器直接對(duì)話。此外,每個(gè)后端服務(wù)可能擁有自己的數(shù)據(jù)庫,該數(shù)據(jù)庫與應(yīng)用程序的其余部分隔離。

    NoSQL代表“Non-SQL”,它是一種新的數(shù)據(jù)庫技術(shù)集,它可以處理大規(guī)模Web應(yīng)用程序可以生成的大量數(shù)據(jù)(SQL的大多數(shù)變體都不能很好地水平擴(kuò)展,只能垂直縮放到某一點(diǎn))。大體上,業(yè)界正在將SQL作為一個(gè)接口,即使對(duì)于NoSQL數(shù)據(jù)庫也是如此。學(xué)習(xí)SQL是必不可少的,幾乎所有的Web應(yīng)用都會(huì)使用它。

    5.緩存服務(wù)

    緩存服務(wù)提供了一個(gè)簡單的鍵/值數(shù)據(jù)存儲(chǔ),可以在接近O(1)的時(shí)間內(nèi)保存和查找信息。應(yīng)用程序通常利用緩存服務(wù)來保存昂貴計(jì)算的結(jié)果,以便可以從緩存中檢索結(jié)果,而不是在下次需要時(shí)重新計(jì)算它們。應(yīng)用程序可能會(huì)緩存數(shù)據(jù)庫查詢,對(duì)外部服務(wù)的調(diào)用,給定URL的HTML等等的結(jié)果。以下是來自實(shí)際應(yīng)用的一些示例:

    Google會(huì)為常見搜索查詢(如“dog”或“TaylorSwift”)緩存搜索結(jié)果,而不是每次都重新計(jì)算它們

    Facebook會(huì)緩存您在登錄時(shí)看到的大部分?jǐn)?shù)據(jù),例如發(fā)布數(shù)據(jù),朋友等。在此處閱讀有關(guān)Facebook緩存技術(shù)的詳細(xì)文章。

    目前兩種最普遍的緩存服務(wù)器技術(shù)是Redis和Memcache。

    6.任務(wù)隊(duì)列&服務(wù)器

    大多數(shù)Web應(yīng)用程序需要在幕后異步執(zhí)行一些與響應(yīng)用戶請(qǐng)求無直接關(guān)聯(lián)的工作。例如,Google需要抓取并索引整個(gè)互聯(lián)網(wǎng)才能返回搜索結(jié)果。但是它不是每次搜索時(shí)都會(huì)這樣做。相反,它異步爬取信息,在整個(gè)過程中更新搜索索引。

    雖然有不同的體系結(jié)構(gòu)可以完成異步工作,但最普遍的就是我稱之為“作業(yè)隊(duì)列”的體系結(jié)構(gòu)。它由兩部分組成:需要運(yùn)行的“作業(yè)”隊(duì)列和運(yùn)行隊(duì)列中作業(yè)的一個(gè)或多個(gè)作業(yè)服務(wù)器(通常稱為“工作者”)。

    作業(yè)隊(duì)列存儲(chǔ)需要異步運(yùn)行的作業(yè)列表。最簡單的是先進(jìn)先出(FIFO)隊(duì)列,但大多數(shù)應(yīng)用程序最終需要某種優(yōu)先級(jí)排隊(duì)系統(tǒng)。每當(dāng)應(yīng)用程序需要運(yùn)行作業(yè)時(shí),無論是在某種常規(guī)計(jì)劃中還是由用戶操作確定,它只需將相應(yīng)的作業(yè)添加到隊(duì)列中。

    例如,相關(guān)公司可以利用一個(gè)工作隊(duì)列提供后臺(tái)支持。運(yùn)行工作來編碼視頻和照片,處理CSV以進(jìn)行元數(shù)據(jù)標(biāo)記,聚合用戶統(tǒng)計(jì)信息,發(fā)送密碼重置電子郵件等。工作隊(duì)列可以采用優(yōu)先級(jí)隊(duì)列算法,以確保盡快完成發(fā)送密碼重置電子郵件等時(shí)間敏感操作。

    作業(yè)服務(wù)器處理作業(yè)。它們輪詢作業(yè)隊(duì)列以確定是否有工作要做,如果有,它們會(huì)從隊(duì)列中彈出作業(yè)并執(zhí)行它。

    7.全文搜索服務(wù)

    許多Web應(yīng)用程序支持某種搜索功能,其中用戶提供文本輸入(通常稱為“查詢”),并且應(yīng)用程序返回最相關(guān)的結(jié)果。支持此功能的技術(shù)通常稱為“全文搜索”,它利用反向索引快速查找包含查詢關(guān)鍵字的文檔。

    雖然可以直接從某些數(shù)據(jù)庫進(jìn)行全文搜索(例如,MySQL支持全文搜索),但通常運(yùn)行單獨(dú)的“搜索服務(wù)”來計(jì)算和存儲(chǔ)反向索引并提供查詢接口。今天最流行的全文搜索平臺(tái)是Elasticsearch,盡管還有其他選項(xiàng),如Sphinx或ApacheSolr。

    8.通用服務(wù)

    一旦應(yīng)用程序達(dá)到一定規(guī)模,可能會(huì)有某些“服務(wù)”被分割出來作為單獨(dú)的應(yīng)用程序運(yùn)行。它們沒有暴露于外部世界,但應(yīng)用程序和其他服務(wù)與它們互動(dòng):

    帳戶服務(wù):在網(wǎng)站上存儲(chǔ)用戶數(shù)據(jù),這使得商家能夠輕松提供交叉銷售機(jī)會(huì)并創(chuàng)建更統(tǒng)一的用戶體驗(yàn)

    內(nèi)容服務(wù)存儲(chǔ)所有視頻,音頻和圖像內(nèi)容的元數(shù)據(jù)。它還提供用于下載內(nèi)容和查看下載歷史記錄的界面。

    支付服務(wù)提供用于對(duì)客戶信用卡進(jìn)行計(jì)費(fèi)的界面。

    HTML→PDF服務(wù)提供了一個(gè)接受HTML并返回相應(yīng)PDF文檔的簡單界面。

    9.數(shù)據(jù)

    如今,公司存亡取決于他們利用數(shù)據(jù)的能力。幾乎每個(gè)應(yīng)用程序,一旦達(dá)到一定規(guī)模,就會(huì)利用數(shù)據(jù)管道來確保收集,存儲(chǔ)和分析數(shù)據(jù)。典型的管道有三個(gè)主要階段:

    1、該應(yīng)用程序?qū)?shù)據(jù)(通常是關(guān)于用戶交互的事件)發(fā)送到數(shù)據(jù)“firehose”,該數(shù)據(jù)提供用于攝取和處理數(shù)據(jù)的流接口。通常,原始數(shù)據(jù)被轉(zhuǎn)換或擴(kuò)充并傳遞給另一個(gè)firehose。AWSKinesis和Kafka是用于此目的的兩種最常用的技術(shù)。

    2、原始數(shù)據(jù)以及最終轉(zhuǎn)換/增強(qiáng)數(shù)據(jù)保存到云存儲(chǔ)。AWSKinesis提供了一個(gè)名為“firehose”的設(shè)置,可以將原始數(shù)據(jù)保存到云存儲(chǔ)(S3)中,非常容易配置。

    3、經(jīng)過轉(zhuǎn)換/增強(qiáng)的數(shù)據(jù)通常被加載到數(shù)據(jù)倉庫中進(jìn)行分析。大型公司通常會(huì)使用Oracle或其他專有存儲(chǔ)技術(shù)。如果數(shù)據(jù)集足夠大,則可能需要類似Hadoop的NoSQLMapReduce技術(shù)進(jìn)行分析。

    架構(gòu)圖中沒有描繪的另一個(gè)步驟:將數(shù)據(jù)從應(yīng)用程序和服務(wù)的操作數(shù)據(jù)庫加載到專門存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)庫中。通過將核心業(yè)務(wù)數(shù)據(jù)與用戶交互事件數(shù)據(jù)結(jié)合起來,為分析師提供一個(gè)整體數(shù)據(jù)集。

    10.云存儲(chǔ)

    據(jù)AWS稱,“云存儲(chǔ)是一種通過互聯(lián)網(wǎng)存儲(chǔ),訪問和共享數(shù)據(jù)的簡單且可擴(kuò)展的方式”。您可以使用它來存儲(chǔ)和訪問或多或少存儲(chǔ)在本地文件系統(tǒng)上的任何內(nèi)容,并且可以通過HTTP上的RESTfulAPI與其進(jìn)行交互。亞馬遜的S3產(chǎn)品是目前最流行的云端存儲(chǔ)產(chǎn)品,也是許多多媒體行業(yè)公司廣泛依賴的產(chǎn)品,用于存儲(chǔ)視頻,照片和音頻資產(chǎn),CSS和Javascript,用戶事件數(shù)據(jù)等等。

    11.CDN

    CDN代表“內(nèi)容分發(fā)網(wǎng)絡(luò)”,該技術(shù)提供了一種通過網(wǎng)絡(luò)提供靜態(tài)HTML,CSS,Javascript和圖片等內(nèi)容的方式,比從單一源服務(wù)器提供服務(wù)要快得多。它的工作原理是在世界各地的許多“邊緣”服務(wù)器上分發(fā)內(nèi)容,以便用戶最終從“邊緣”服務(wù)器而不是源服務(wù)器下載內(nèi)容。例如,在下圖中,西班牙的用戶從位于紐約市的原始服務(wù)器的站點(diǎn)請(qǐng)求網(wǎng)頁,但該頁面的靜態(tài)資產(chǎn)是從英格蘭的CDN“邊緣”服務(wù)器加載的,從而防止了許多緩慢的跨大西洋HTTP要求。

    通常,Web應(yīng)用程序應(yīng)始終使用CDN來提供CSS,Javascript,圖像,視頻和其他媒體內(nèi)容。某些app也可能利用CDN來提供靜態(tài)HTML頁面。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
構(gòu)建高可擴(kuò)Web架構(gòu)和分布式系統(tǒng)實(shí)戰(zhàn)(下)
社交產(chǎn)品后端架構(gòu)設(shè)計(jì)
云服務(wù)器的3種數(shù)據(jù)管理方式
Ria介紹
分享提高ASP.NET Web應(yīng)用性能的技巧
漸進(jìn)式Web應(yīng)用程序(PWA)的深入概述
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服