<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>

          從云計算到函數(shù)計算

          共 5048字,需瀏覽 11分鐘

           ·

          2022-07-17 07:16


          點擊上方圖片了解活動詳情!


          哈嘍各位開發(fā)者,為了幫助大家客觀了解并使用阿里云函數(shù)計算(FC),阿里云開發(fā)者社區(qū)攜手云原生應(yīng)用平臺 Serverless 團(tuán)隊發(fā)布 Serverless 函數(shù)計算征集令,提供免費資源額度邀請你發(fā)文評測7月31日前參與活動,即有機(jī)會獲得千元好禮 + 千元函數(shù)計算資源包!

          立即參加:https://developer.aliyun.com/topic/serverless2022

          悄悄說...現(xiàn)在投稿還可領(lǐng)取優(yōu)酷視頻季卡一張;

          阿 Ser 也精選出一些活動中的優(yōu)秀征文推薦給大家,下面讓我們跟隨筆友 “Ethin” 的步伐,看看他眼中的 Serverless 世界吧!

          函數(shù)計算,你的名字


          云計算,是一種基于互聯(lián)網(wǎng)的計算方式,通過這種方式,共享的軟硬件資源和信息可以按需求提供給計算機(jī)各種終端和其他設(shè)備,使用服務(wù)商提供的電腦基建作計算資源,因此用 “云” 來指代 “網(wǎng)絡(luò)計算資源” 這是一種非常恰當(dāng)?shù)谋扔鳌?/span>

          美國國家標(biāo)準(zhǔn)和技術(shù)研究院的云計算定義中明確了三種服務(wù)模式,分別是軟件即服務(wù)(SaaS)、平臺即服務(wù)(PaaS)和基礎(chǔ)設(shè)施即服務(wù)(IaaS)

          阿里云的產(chǎn)品能全部覆蓋這三種服務(wù)模式,如果分別舉個例子那么應(yīng)該是:宜搭(SaaS 加速器)、函數(shù)計算 FC 和云服務(wù)器 ECS。

          Serverless 計算服務(wù),其基于 PaaS 又不同于 PaaS,因而更多時候被稱作功能即服務(wù)(Function-as-a-Service,縮寫為 FaaS)。函數(shù)計算 FC 是阿里云的事件驅(qū)動的全托管 Serverless 計算服務(wù)產(chǎn)品,我想函數(shù)計算 Function Compute 的名字就是這樣誕生的。

          函數(shù)計算,直達(dá)應(yīng)用的核心


          我們知道應(yīng)用的核心是邏輯和存儲,而代碼主要實現(xiàn)業(yè)務(wù)邏輯和持久化。
          函數(shù)計算 FC 總體上是:FaaS+BaaS
          函數(shù)指計算函數(shù),包含了業(yè)務(wù)邏輯部分,這一部分由 FaaS 來實現(xiàn);而數(shù)據(jù)持久化、消息推送和賬戶系統(tǒng)等,由 BaaS 來實現(xiàn)。

          ECS ?FC ?


          Serverless 服務(wù)并不是沒有服務(wù)器了,而是作為一種新的架構(gòu)讓我們在以往傳統(tǒng)應(yīng)用維護(hù)上的工作得到進(jìn)一步降低。
          以常見的主要基于云服務(wù)器的 Web 服務(wù)為例,大致有這樣的流程:

           

          在服務(wù)過程中,服務(wù)器可能涉及路由規(guī)則、鑒權(quán)邏輯以及其他各類復(fù)雜的業(yè)務(wù)代碼。同時,開發(fā)團(tuán)隊不僅要將精力用于開發(fā),還要付出很大的精力在服務(wù)器的運(yùn)維上面。
          例如要時刻關(guān)注以下問題:
          • 服務(wù)器性能能否應(yīng)對可能突然爆發(fā)的用戶請求,何時擴(kuò)容?

          • 服務(wù)器上的腳本和業(yè)務(wù)代碼等多少還在健康運(yùn)行?

          • 外部網(wǎng)絡(luò)安全威脅到來時如何保障數(shù)據(jù)安全? 


          面對諸多問題確實會讓人頭大,但如果我們摒棄基于服務(wù)器的架構(gòu)而轉(zhuǎn)用 Serverless 架構(gòu)之后;服務(wù)的過程就變成了這樣:


          當(dāng)客戶端和數(shù)據(jù)庫未發(fā)生變化的前提下,服務(wù)器變成了 Serverless 的架構(gòu)。工作的分工發(fā)生了巨變。
          例如,之前需要開發(fā)團(tuán)隊維護(hù)的路由模塊以及鑒權(quán)模塊都將接入服務(wù)商提供的 API 網(wǎng)關(guān)系統(tǒng)以及鑒權(quán)系統(tǒng),開發(fā)團(tuán)隊無須再維護(hù)這兩部分的業(yè)務(wù)代碼,只需要持續(xù)維護(hù)相關(guān)規(guī)則即可,再也不用擔(dān)心應(yīng)用的構(gòu)建;業(yè)務(wù)代碼被拆分成了函數(shù)粒度,不同函數(shù)表示不同的功能,根據(jù)請求量還可以實現(xiàn)毫秒級擴(kuò)容;業(yè)務(wù)邏輯之外的一部分安全問題、資源調(diào)度問題全都交由云廠商負(fù)責(zé)。


          除了開發(fā)和維護(hù)產(chǎn)品的省心,在具體實現(xiàn)成本上也能達(dá)到降本增效的效果。相對于傳統(tǒng)項目服務(wù)的全天候運(yùn)行來說,函數(shù)計算 FC 是基于事件驅(qū)動的,只有在用戶發(fā)起請求時,函數(shù)才會被激活并且執(zhí)行,運(yùn)行成本按量收費,成本相較于節(jié)省計劃還有顯著的價格優(yōu)勢。

          函數(shù)計算 FC:解放生產(chǎn)力,更專注于應(yīng)用的業(yè)務(wù)本身


          使用云服務(wù)器,我們不用操心物理機(jī)房的運(yùn)行維護(hù)等操作系統(tǒng)層之下的內(nèi)容;使用函數(shù)計算 FC,我們不再需要裝操作系統(tǒng)、容器配置、運(yùn)行環(huán)境,更不用擔(dān)心環(huán)境程序會掛掉。


          可見,采用函數(shù)計算 FC 的 Serverless 架構(gòu)后,用戶僅需運(yùn)維與應(yīng)用有關(guān)的函數(shù),ECS 架構(gòu)下需要操心的東西現(xiàn)在只剩下了一個:


          函數(shù)計算仿佛一場全新的技術(shù)革命,當(dāng)我們使用了函數(shù)計算 FC 的 Serverless 架構(gòu)后:
          開發(fā)團(tuán)隊不需要再自己維護(hù)服務(wù)器,也不需要自己操心服務(wù)器的各種性能指標(biāo)和資源利用率,團(tuán)隊的運(yùn)維可以更加專注的將監(jiān)控目光放到監(jiān)控應(yīng)用程序本身的度量。

          應(yīng)用的部署將變得十分容易。我們只要上傳基本的代碼,同時不需使用 Puppet、Chef、Ansible 或 Docker 來進(jìn)行配置管理,大大降低了運(yùn)維成本。

          綜上所述,相對于傳統(tǒng)項目,函數(shù)計算 FC 具備以下優(yōu)勢:

          • 用戶無需采購和管理服務(wù)器等基礎(chǔ)設(shè)施,運(yùn)維成本低,安全性更高。(涵蓋了云服務(wù)器的優(yōu)勢)。

          • 用戶只需專注業(yè)務(wù)邏輯的開發(fā),使用函數(shù)計算支持的開發(fā)語言設(shè)計、優(yōu)化、測試、審核以及上傳自己的應(yīng)用代碼。結(jié)合工作流,代碼提交自動部署,直接運(yùn)行!

          • 函數(shù)計算 FC 以事件驅(qū)動的方式觸發(fā)應(yīng)用響應(yīng)用戶請求。與阿里云對象存儲 OSS、API 網(wǎng)關(guān)、日志服務(wù)和表格存儲等服務(wù)無縫對接,幫助快速構(gòu)建應(yīng)用。

          • 簡化運(yùn)維工作,提供日志查詢、性能監(jiān)控和報警等功能快速排查故障。

          • 不用擔(dān)心性能問題,架構(gòu)更富有彈性,毫秒級別彈性伸縮,快速實現(xiàn)底層擴(kuò)容以應(yīng)對峰值壓力。

          • 使用成本低,按需付費,支持百毫秒級別收費。只需為實際使用的計算資源付費,適合有明顯波峰波谷的用戶訪問場景。


          函數(shù)計算 FC 似乎是真正實現(xiàn) 像云一樣 的云計算愿景,它很好的詮釋了:最大程度利用資源、減少空閑資源浪費的環(huán)保理念以及降低學(xué)習(xí)成本和使用成本的現(xiàn)實需求。

          如此妙哉的函數(shù)計算該如何體驗?zāi)??


          函數(shù)計算 FC 提供運(yùn)行環(huán)境、開發(fā)者工具和函數(shù)觸發(fā)器等功能。同時,函數(shù)計算 FC 提供有免費執(zhí)行次數(shù) : 100萬 (次)和免費資源使用量 : 40萬 (GB-秒)。
          對于小范圍的上線使用,我們只用負(fù)擔(dān)公網(wǎng)流量費用和其他資源付費即可。


          最常用的函數(shù)計算創(chuàng)建方式是控制臺進(jìn)入服務(wù)及函數(shù)子頁面,依次創(chuàng)建服務(wù)和函數(shù)。一個服務(wù)可以由多個函數(shù)組成,一個函數(shù)只能隸屬于一個服務(wù)。
          當(dāng)然,阿里云提供了一鍵式的在函數(shù)計算控制臺-應(yīng)用頁面,我們可以通過模板和倉庫導(dǎo)入來創(chuàng)建:
          目前公測中的模板中心包含了各類來自官方或社區(qū)的共計 56 個應(yīng)用或框架模板,覆蓋已經(jīng)相當(dāng)全面了。在官方文檔的指導(dǎo)下可以實現(xiàn)零基礎(chǔ)創(chuàng)建 FC 應(yīng)用。


          由繁到簡,從長到短


          實踐:基于 Node.js + Serverless 的 Web 短網(wǎng)址跳轉(zhuǎn)

           

          主要功能:
          實現(xiàn)長連接與短鏈接的映射。
          簡要描述:
          用戶可以為指定 URL 創(chuàng)建對應(yīng)短鏈
          用戶訪問短鏈,自動跳轉(zhuǎn)到相應(yīng) URL
          如上文所說,用函數(shù)計算 FC 構(gòu)建應(yīng)用總體上要是 FaaS+BaaS。下面的實踐項目涉及到 BaaS 數(shù)據(jù)庫的使用,方便起見使用云開發(fā)平臺搭建應(yīng)用。
          應(yīng)用架構(gòu)圖如下:


          資源預(yù)備:
          需要注冊開通云開發(fā)平臺并激活以下服務(wù);
          • API 網(wǎng)關(guān)/API Gateway
          • 函數(shù)計算/Function Compute
          • 對象存儲/Object Storage Service
          • 日志服務(wù)/Log Service
          • MongoDB Serverless 實例
           
          數(shù)據(jù)庫部分:
          • 購買 MongoDB Serverless 版。
          • 新建集合,新建集合其實就相當(dāng)于新建一個表。創(chuàng)建集合:links、logs。
          • 通過程序代碼連接 Serverless 實例,使用方法參見官方文檔:
            https://help.aliyun.com/document_detail/185473.html?


          邏輯代碼部分示例:(Attention: 該項目還使用了 Express 框架,以便于簡化路由處理)

          import storage from '../storage'
          export default async (req, res): Promise<any> => { // params from request body or querystring const params = req.body ?? req.query const { url = '', slug = '' } = params as { url?: string, slug?: string }
          // url is required if (url === '') { return res.status(400).send({ message: 'Missing required parameter: url.' }) }
          // url format check if (!/^https?:\/\/.{3,}/.test(url)) { return res.status(400).send({ message: 'Illegal format: url.' }) }
          // custom slug length check if (slug.length !== 0 && (slug.length < 2 || slug.length > 10)) { return res.status(400).send({ message: 'Illegal length: slug, (>= 2 && <= 10).' }) }
          const getForwarded = (name: string): string => req.headers[`x-forwarded-${name}`]?.toString() ?? ''
          try { // request origin url const origin = `${getForwarded('proto')}://${getForwarded('host')}/`
          // if slug customized if (slug !== '') { const existUrl = await storage.getUrlBySlug(slug)
          // url & slug are the same. if (existUrl === url) { return res.send({ slug, link: origin + slug }) }
          // slug already exists if (existUrl != null) { return res.status(400).send({ message: 'Slug already exists.' }) } }
          // target url exists const existSlug = await storage.getSlugByUrl(url)
          // url exists & no custom slug if (existSlug != null && slug === '') { return res.send({ slug: existSlug, link: origin + existSlug }) }
          // create if not exists const newSlug = await storage.addLink(url, slug)
          // response res.send({ slug: newSlug, link: origin + newSlug }) } catch (e) { return res.status(500).send({ message: e.message }) }}



          完成前端靜態(tài)頁面后便可綁定域名上線測試。

          (Attention: 需要綁定已備案域名)


          結(jié)語


          Serverless 作為云原生玩家的首選微服務(wù)已逐漸得到大眾認(rèn)同并快速發(fā)展起來,期待未來會有更多基于 Serverless 的應(yīng)用。

          戳下方,立即查看作者原文!

          瀏覽 62
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <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>
                  精品无码在线观看 | 欧美日韩亚州在线观看 | 天天色综合zx | 欧美成人精品一区二区三区免费 | 免费黄的在线观看中文字幕视频 |