<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          我建議你了解一點(diǎn)兒Serverless | IDCF

          共 2702字,需瀏覽 6分鐘

           ·

          2021-08-21 02:03

          來(lái)源:碼農(nóng)翻身
          作者:碼農(nóng)翻身劉欣 

          一個(gè)新技術(shù)的出現(xiàn)不是無(wú)中生有,從石頭中憑空蹦出來(lái)的,而是在原有基礎(chǔ)上的繼承和發(fā)展。

          Serverless也不例外,我們回顧下IT基礎(chǔ)設(shè)施的發(fā)展,就會(huì)發(fā)現(xiàn),Serverless自然就會(huì)浮現(xiàn)出來(lái),你自己就可以發(fā)明它(但是卻實(shí)現(xiàn)不了它)。


          一、局域網(wǎng)時(shí)代



          上世紀(jì)90年代,你是一家IT部門(mén)的負(fù)責(zé)人,公司需要建立一個(gè)信息管理系統(tǒng),

          這時(shí)候的系統(tǒng)都是局域網(wǎng)的, 是C/S模式的, 業(yè)務(wù)邏輯主要在客戶(hù)端軟件中, 需要被安裝到各個(gè)電腦上去,然后訪(fǎng)問(wèn)同一個(gè)數(shù)據(jù)庫(kù)。

          在部署這個(gè)系統(tǒng)之前,你需要做很多的工作:

          • 搭建局域網(wǎng), 購(gòu)買(mǎi)交換機(jī),路由器。
          • 買(mǎi)服務(wù)器,安裝操作系統(tǒng),比如Window NT。
          • 安裝數(shù)據(jù)庫(kù)軟件,例如Oracle。 
          • 然后再把那些Delphi/VB/PowerBuilder寫(xiě)的客戶(hù)端安裝到電腦上, 整個(gè)系統(tǒng)跑起來(lái)了。

          二、數(shù)據(jù)中心



          C/S模式的很大弊端就是客戶(hù)端更新特別麻煩,不能在用戶(hù)無(wú)感知的情況下完成升級(jí),還有臭名卓著的DLL地獄問(wèn)題,讓程序員抓狂。另外服務(wù)器能支撐的用戶(hù)也不大。 
          Web興起后,你們公司的應(yīng)用也與時(shí)俱進(jìn),從C/S模式變成了B/S模式,用戶(hù)主要使用瀏覽器來(lái)訪(fǎng)問(wèn)應(yīng)用,業(yè)務(wù)邏輯在服務(wù)器端運(yùn)行。
          這時(shí)候,你還需要買(mǎi)服務(wù)器,然后放到數(shù)據(jù)中心去托管,畢竟那里的條件更好,更穩(wěn)定。
          網(wǎng)絡(luò)不需要自己來(lái)搭建了, 掏錢(qián)買(mǎi)數(shù)據(jù)中心的網(wǎng)絡(luò)帶寬就好。還需要自己安裝軟件, 比如Linux操作系統(tǒng)、Tomcat、Ngnix、MySQL等等。
          隨著功能的增加,你還需要新的服務(wù)器來(lái)處理緩存、搜索等功能。為了應(yīng)對(duì)高并發(fā),還需要分布式、負(fù)載均衡、數(shù)據(jù)復(fù)制。
          你需要仔細(xì)地規(guī)劃,看看這些緩存、搜索、數(shù)據(jù)庫(kù)、負(fù)載均衡等都需要什么樣的服務(wù)器,有些要求CPU很強(qiáng),有些要求內(nèi)存很大,有些要求硬盤(pán)很快。
          總之,自己運(yùn)維這樣一套系統(tǒng),非常麻煩。

          三、虛擬化



          但是,如果你的網(wǎng)站沒(méi)人訪(fǎng)問(wèn)了,這一套復(fù)雜的系統(tǒng),這些昂貴的服務(wù)器就會(huì)變成擺設(shè),你想賣(mài)都很難賣(mài)掉,這是巨大的浪費(fèi)。 
          一個(gè)想法就會(huì)浮現(xiàn)出來(lái): 
          • 為什么要用物理服務(wù)器?
          • 誰(shuí)要是能提供虛擬機(jī)給我就好了! 
          • 用完了就可以“扔掉”!
          于是那些有實(shí)力的大廠(chǎng)就這么做了,亞馬遜開(kāi)始,把平時(shí)空閑的物理服務(wù)器的計(jì)算能力、存儲(chǔ)能力統(tǒng)一管理,統(tǒng)一調(diào)配,對(duì)外提供的就是虛擬機(jī)。
          他們把這種方式叫做云計(jì)算,你使用了云計(jì)算以后,有很多好處:
          • 物理服務(wù)器不用買(mǎi)了,申請(qǐng)?zhí)摂M機(jī)就可以了。什么樣的CPU, 多少內(nèi)存,多大的硬盤(pán),對(duì)應(yīng)的價(jià)格也不同。 

          • 操作系統(tǒng)會(huì)按照你的要求自動(dòng)給你安裝好。網(wǎng)絡(luò)自然不用操心, 要多大帶寬直接買(mǎi)就行。

          這些虛擬機(jī)可以包月、包年計(jì)費(fèi)。但是,如果沒(méi)有人訪(fǎng)問(wèn)你的應(yīng)用,沒(méi)有流量,你也得掏錢(qián)。

          四、理想模式



          想必你的腦海中已經(jīng)浮現(xiàn)出了解決方案:
          • 不要再考慮什么物理服務(wù)器/虛擬機(jī)了, 把代碼上傳到云端,直接運(yùn)行。
          • 按使用情況(如CPU時(shí)間、內(nèi)存大小)來(lái)收費(fèi)。
          (IBM:我的大機(jī)一直按使用情況收費(fèi),你們玩了幾十年,終于回到我這里了 ^-^)
          如果沒(méi)有人訪(fǎng)問(wèn)你的應(yīng)用,就不要部署它,這樣只會(huì)占用一點(diǎn)點(diǎn)存儲(chǔ)空間,不用使用CPU和內(nèi)存;如果有人訪(fǎng)問(wèn),把應(yīng)用迅速部署到某個(gè)服務(wù)器上,執(zhí)行這次請(qǐng)求,返回給用戶(hù),然后卸載這個(gè)應(yīng)用。
          和之前的方式相比,最大的特色是即用即走,不會(huì)在服務(wù)器/虛擬機(jī)中常駐。
          但是這么做可能嗎?不行,應(yīng)用的粒度太大,一個(gè)應(yīng)用幾十、上百模塊,每個(gè)請(qǐng)求來(lái)了就部署整個(gè)應(yīng)用,只執(zhí)行那么一點(diǎn)兒代碼, 然后就卸載掉。 
          如果每個(gè)請(qǐng)求這么來(lái)回地部署和卸載,你是瘋了嗎,兄弟?
          那微服務(wù)呢?粒度還是太大 !如果是微服務(wù)中的一個(gè)API,或者說(shuō)就是一個(gè)“函數(shù)”呢?這個(gè)粒度應(yīng)該差不多了。 
          這里說(shuō)的函數(shù)到底是什么?需要看具體的業(yè)務(wù)來(lái)劃分,比如搜索產(chǎn)品,圖像轉(zhuǎn)換, 它需要足夠小,足夠單一,能快速啟動(dòng),運(yùn)行,卸載。
          一個(gè)“函數(shù)”真的只做一件事情,并且不保持狀態(tài)。這樣一來(lái)它可以輕松地被擴(kuò)展到任意多的服務(wù)器/虛擬機(jī)/docker容器中去。請(qǐng)求多了就擴(kuò)容,請(qǐng)求少了,就收縮,請(qǐng)求沒(méi)了,就卸載,實(shí)在是太爽了。
          這種方式現(xiàn)在稱(chēng)為Serverless,并不是說(shuō)沒(méi)有服務(wù)器,而是說(shuō)服務(wù)器對(duì)用戶(hù)來(lái)說(shuō)是透明的。應(yīng)用的裝載、啟動(dòng)、卸載,路由是需要平臺(tái)來(lái)搞定。

          五、Serverless 的特點(diǎn)



          Serverless的開(kāi)發(fā)模式和運(yùn)行模式類(lèi)似這樣:
          • 程序員編寫(xiě)完成業(yè)務(wù)的函數(shù)代碼。
          • 上傳到支持Serverless的平臺(tái),設(shè)定觸發(fā)的規(guī)則。
          • 請(qǐng)求到來(lái),Serverless平臺(tái)根據(jù)觸發(fā)規(guī)則加載函數(shù),創(chuàng)建函數(shù)實(shí)例,運(yùn)行。
          • 如果請(qǐng)求比較多,會(huì)進(jìn)行實(shí)例的擴(kuò)展,如果請(qǐng)求較少,就進(jìn)行實(shí)例的收縮。
          • 如果無(wú)人訪(fǎng)問(wèn),卸載函數(shù)實(shí)例。
          如果有多個(gè)函數(shù),怎么確定調(diào)用哪一個(gè)?肯定需要一個(gè)東西來(lái)轉(zhuǎn)發(fā)一下。
          (微服務(wù):我就是這么玩兒的啊!)
          如果業(yè)務(wù)比較復(fù)雜,一個(gè)函數(shù)搞不定怎么辦?可以把多個(gè)函數(shù)給編排起來(lái)!
          (SOA:我早就這么做了!)
          按需裝載,自動(dòng)伸縮,不用你苦逼地去規(guī)劃硬件,安裝軟件,還可以按照使用情況付費(fèi),這么好的東西,我們是不是馬上投入Serverless的懷抱?
          慢著!
          為了達(dá)到上面的目標(biāo),你必須得犧牲一個(gè)很重要的東西:狀態(tài)。
          函數(shù)沒(méi)有狀態(tài)的,每次啟動(dòng)都可能會(huì)被部署到一個(gè)全新的“服務(wù)器”中,這就有兩個(gè)問(wèn)題:
          • 用戶(hù)的會(huì)話(huà)狀態(tài)肯定是無(wú)法保持的,像session sticky 這樣的功能就別想了。函數(shù)無(wú)法做本地的持久化,沒(méi)法訪(fǎng)問(wèn)本地硬盤(pán)的任何東西(服務(wù)器看不見(jiàn)了,怎么能看見(jiàn)硬盤(pán)呢?)。
          • 所有想持久化的東西必須得保存到外部的系統(tǒng)或者存儲(chǔ)中,例如Redis,MySQL等。很明顯,這些東西也應(yīng)該以“服務(wù)”的方式來(lái)呈現(xiàn),即Backend as a Service (BaaS)。
          如果你的應(yīng)用無(wú)法拆分成無(wú)狀態(tài)的函數(shù),是無(wú)法享受Serverless帶來(lái)的種種好處的。
          Serverless更適合那些無(wú)狀態(tài)的應(yīng)用,例如圖像和視頻的加工,轉(zhuǎn)換, 物聯(lián)網(wǎng)設(shè)備狀態(tài)的信息處理等等。
          IDCF DevOps黑客馬拉松,獨(dú)創(chuàng)端到端DevOps體驗(yàn),精益創(chuàng)業(yè)+敏捷開(kāi)發(fā)+DevOps流水線(xiàn)的完美結(jié)合,2021年僅有的3場(chǎng)公開(kāi)課,數(shù)千人參與并一致五星推薦的金牌訓(xùn)練營(yíng),追求卓越的你一定不能錯(cuò)過(guò)!
          9月11-12日,上海站,企業(yè)組隊(duì)參賽&個(gè)人參賽均可,一年等一回,錯(cuò)過(guò)等一年,趕緊上車(chē)~??
          瀏覽 55
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧洲不卡视频 | 国产真人少妇内射 | 国产乱伦高清 | 羞羞偷拍视频 | 日本黄色片在线观看 |