1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        實(shí)操教學(xué)|用Serverless 分分鐘部署一個(gè) Spring Boot 應(yīng)用,真香!

        共 6369字,需瀏覽 13分鐘

         ·

        2022-07-04 15:52

        昨天,棧長(zhǎng)應(yīng)騰訊云小伙伴邀請(qǐng)參加了Techo Day 技術(shù)開(kāi)放日的線(xiàn)上活動(dòng),這一期的主題是”輕量級(jí)云開(kāi)發(fā)與云應(yīng)用“,包括輕量級(jí)應(yīng)用服務(wù)器、容器和中間件、云開(kāi)發(fā)、微服務(wù)、大數(shù)據(jù)、安全等領(lǐng)域的應(yīng)用和原理等。

        這其中有一項(xiàng)技術(shù)講解——Serverless讓我感觸比較深。這門(mén)課打破了我對(duì)軟件開(kāi)發(fā)領(lǐng)域的定義。

        在現(xiàn)代越來(lái)越強(qiáng)大云計(jì)算加持下,我們大量運(yùn)用了一些云組件,比如:

        • IaaS(基礎(chǔ)設(shè)施即服務(wù))
        • PaaS(平臺(tái)即服務(wù))
        • SaaS(軟件即服務(wù))

        沒(méi)錯(cuò),即使云服務(wù)應(yīng)用再多,我們也僅限在 "SaaS(軟件即服務(wù))" 層面的應(yīng)用。

        但這門(mén)課程提到的,傳統(tǒng)的 "SaaS(軟件即服務(wù))" 不再是顆粒度最小的云服務(wù)了,取而代之的是,你可以理解為 "方法級(jí)別" 的云服務(wù),即可以以方法作為獨(dú)立載體被部署在云上,顆粒度更小、靈活性更強(qiáng),可以獲得盡可能大的彈性。

        大部分人看到 Serverless 仍是一知半解,所以我想有必要給大家做個(gè)專(zhuān)題分享,包括 Serverless 的正確理解及實(shí)現(xiàn)方案,以及騰訊云的 Serverless 是如何應(yīng)用的。

        Serverless 到底是什么?

        Serverless 介紹

        現(xiàn)在 Serverless 很火啊,到處都是,包括 Spring 都已經(jīng)支持 Serverless 適配了,棧長(zhǎng)當(dāng)初看到這個(gè)名詞的時(shí)候以為是指 "無(wú)服務(wù)器",相信很多人也會(huì)這樣以為,不過(guò)不要理解錯(cuò)了,棧長(zhǎng)在這里掃個(gè)盲。

        Serverless 是指 "無(wú)服務(wù)器架構(gòu)",這里的 "無(wú)服務(wù)器" 并不是指程序不需要服務(wù)器運(yùn)行,而是指我們的開(kāi)發(fā)工作不需要關(guān)注服務(wù)器底層的資源,比如我們部署應(yīng)用時(shí),經(jīng)常遇到以下一些服務(wù)器及基礎(chǔ)設(shè)施的相關(guān)工作:

        • 應(yīng)用需要用多少臺(tái)服務(wù)器?
        • 應(yīng)用需要用多少帶寬?
        • 應(yīng)用需要用什么操作系統(tǒng)?
        • 應(yīng)用需要運(yùn)行多少個(gè)實(shí)例?
        • 應(yīng)用需要用到什么容器,怎么調(diào)度?
        • 等等……

        這些工作在傳統(tǒng)的業(yè)務(wù)中需要運(yùn)維人員和開(kāi)發(fā)人員一起協(xié)調(diào)完成,而 Serverless 的到來(lái),我們通通都不用管了,Serverless 幫我們?nèi)ネ瓿蛇@些,程序員只需要關(guān)注業(yè)務(wù)邏輯本身即可。

        來(lái)看 Spring Serverless 的一張圖就明白了:

        Serverless 只需要關(guān)注一件事:函數(shù)??!

        這里的 FaaS 就是 Serverless 最基本的一種表現(xiàn)形式。

        Serverless 優(yōu)勢(shì)

        Serverless 具有資源編排、自動(dòng)伸縮、事件驅(qū)動(dòng)等能力,覆蓋編碼-調(diào)試-測(cè)試-部署等全生命周期,減少維護(hù)基礎(chǔ)設(shè)施的成本和風(fēng)險(xiǎn),利用云的能力可以更迅速的擴(kuò)展。

        我們來(lái)看下面這張圖:

        我們可以看到,Serverless 始終能滿(mǎn)足日益增長(zhǎng)的需求,并能對(duì)資源做到靈活動(dòng)態(tài)調(diào)整,一方面能在閑時(shí)減少資源以避免浪費(fèi),另一方面,即使流量溢出也能應(yīng)對(duì)。

        這里總結(jié)下 Serverless 的優(yōu)勢(shì):

        高可用: 如多活、容災(zāi)、擴(kuò)容、備份等能力,這些都不在話(huà)下;

        高彈性: 以方法為部署載體,比微服務(wù)更微,獲得極致彈性;

        輕運(yùn)維: 免去大量的運(yùn)維工作,專(zhuān)注核心開(kāi)發(fā)業(yè)務(wù),大大節(jié)省工作量;

        等等……

        Serverless 實(shí)現(xiàn)方案

        Serverless 經(jīng)常不會(huì)單獨(dú)出現(xiàn),還有以下兩個(gè)衍生概念,也是目前最常見(jiàn)的 Serverless 實(shí)現(xiàn)方案:

        FaaS(函數(shù)即服務(wù)) + BaaS(后端即服務(wù))

        Function as a Service (FaaS)

        Function as a Service(FaaS)函數(shù)即服務(wù),這也是 Serverless 的基石,它是比 SaaS(軟件即服務(wù))/ BaaS(后端即服務(wù)) 更小的載體,每一個(gè)函數(shù)就是一個(gè)服務(wù),函數(shù)之間相互獨(dú)立。

        我們來(lái)看一張基于 FaaS 的架構(gòu)圖:

        基于 FaaS 的服務(wù)器底層的關(guān)系從下到上依次是這樣的:

        物理服務(wù)器(IaaS) > 虛擬機(jī)(PaaS) > 容器(PaaS) > 函數(shù)(FaaS)

        函數(shù)(也可說(shuō)方法)顆粒度更小,可以幫助應(yīng)用獲得極致彈性。

        Backend as Service(BaaS)

        Backend as a Service(Baas)后端即服務(wù),即為應(yīng)用提供后端云服務(wù),可以理解為 PaaS 和 SaaS 之間的一種服務(wù),它也是 Serverless 架構(gòu)中的一種表現(xiàn)形式,大量開(kāi)箱即用的后端云上功能提升研發(fā)效能。

        后端服務(wù) BaaS 并不是必須的,F(xiàn)aaS 和 BaaS 都屬于 Serverless 架構(gòu)不同的表現(xiàn)形式,也可以說(shuō) FaaS 和 BaaS 是 Serverless 架構(gòu),它們是相輔相成的。

        騰訊云 Serverless

        基本介紹

        騰訊云中的 Serverless 是指 Serverless Cloud Function,簡(jiǎn)稱(chēng):SCF,也可以叫 "云函數(shù)",是騰訊云提供的 Serverless 服務(wù),騰訊云用戶(hù)無(wú)需購(gòu)買(mǎi)云服務(wù)器和虛擬機(jī),代碼即可在騰訊云基礎(chǔ)設(shè)施上彈性、安全地運(yùn)行,支持所有主流的編程語(yǔ)言。

        官方文檔:

        https://cloud.tencent.com/document/product/583

        騰訊云函數(shù)的魅力如下:

        棧長(zhǎng)了解到的情況如下:

        • 按量付費(fèi): 沒(méi)有用戶(hù)訪(fǎng)問(wèn)時(shí)不花錢(qián),可節(jié)約服務(wù)器開(kāi)銷(xiāo) 30%;

        • 超低運(yùn)維成本: 無(wú)需學(xué)習(xí)服務(wù)器知識(shí),大幅度降低運(yùn)維成本;

        • 彈性伸縮: 自動(dòng)彈性伸縮,上不封頂,下可到 0;

        • 超高并發(fā): 每秒最高支持 10 萬(wàn)并發(fā)請(qǐng)求數(shù);

        整個(gè)請(qǐng)求邏輯如下:

        雖然我們只需要寫(xiě)云函數(shù),但前面會(huì)有一道 API 網(wǎng)關(guān),是云函數(shù)的主要入口,它提供 HTTP 接口、參數(shù)校驗(yàn)、鑒權(quán)、限流、自定義域名、自動(dòng)化文檔等功能,這也是對(duì)云函數(shù)的強(qiáng)大支撐。

        解決方案

        通用解決方案

        結(jié)合 API 網(wǎng)關(guān),騰訊云函數(shù)提供基于小程序,H5,WEB 服務(wù),微服務(wù),REST API 等通用 HTTP 解決方案:

        云函數(shù)無(wú)處不在,支持常用的、主流的客戶(hù)端載體,現(xiàn)在都支持上了云函數(shù)。

        這也讓我聯(lián)想到的一個(gè)云函數(shù)的優(yōu)勢(shì):

        比如我們寫(xiě)個(gè) JavaScript 函數(shù)部署到了云端,然后客戶(hù)端再調(diào)用該云函數(shù),而不是像傳統(tǒng)軟件開(kāi)發(fā)將函數(shù)直接內(nèi)嵌在客戶(hù)端代碼中,這樣在安全方面也能杜絕前端代碼被破譯的可能。

        所以,用上云函數(shù)真香!

        Serverless 應(yīng)用中心:

        https://cloud.tencent.com/product/sls

        彈性微服務(wù) TEM

        隨著團(tuán)隊(duì)和業(yè)務(wù)規(guī)模的發(fā)展,后端服務(wù)逐漸從單體架構(gòu)演變成微服務(wù)架構(gòu),微服務(wù)架構(gòu)提供敏捷開(kāi)發(fā)、靈活部署和高擴(kuò)展性的同時(shí),也增加了服務(wù)治理和運(yùn)維的復(fù)雜度,提高了技術(shù)門(mén)檻。

        彈性微服務(wù)(Tencent Cloud Elastic Microservice,TEM)是面向微服務(wù)應(yīng)用的 Serverless 平臺(tái),實(shí)現(xiàn) Serverless 與微服務(wù)的完美結(jié)合,提供開(kāi)箱即用的微服務(wù)解決方案,提供應(yīng)用托管、服務(wù)注冊(cè)發(fā)現(xiàn)、微服務(wù)治理、多維度監(jiān)控等能力,支持 Zookeeper、Nacos、Consul 等注冊(cè)中心。

        產(chǎn)品地址:

        https://cloud.tencent.com/product/tem

        我們來(lái)看官網(wǎng)的架構(gòu)圖:

        通過(guò)它我們可以快速構(gòu)建微服務(wù)應(yīng)用,只需要實(shí)現(xiàn)我們自己的微服務(wù)即可(灰色區(qū)域),這樣就能大幅提升運(yùn)維效率,降低服務(wù)治理的復(fù)雜度與技術(shù)門(mén)檻,有更多的時(shí)間去聚焦核心業(yè)務(wù)本身。

        騰訊云函數(shù)初體驗(yàn)

        棧長(zhǎng)也第一時(shí)間拿到了騰訊云小伙伴給我的實(shí)驗(yàn)資格,終于體驗(yàn)了一把 Serverless 的魅力!

        安裝 TCCLI

        TCCLI 是管理騰訊云資源的統(tǒng)一工具,可以快速調(diào)用騰訊云 API 來(lái)管理您的騰訊云資源。

        官方文檔:

        https://cloud.tencent.com/document/product/440/6176

        需要安裝 Python 環(huán)境和 pip 工具,Python 版本必須為 2.7 及以上版本。

        這里我們使用使用yum安裝Python3:

        yum install python3 -y

        安裝 Python3 會(huì)同時(shí)安裝一些相關(guān)的依賴(lài)包,比如 pip。

        再執(zhí)行下面的命令安裝 TCCLI:

        sudo pip3 install tccli

        安裝完成之后,執(zhí)行以下命令,檢測(cè)是否安裝成功:

        tccli --version

        TCCLI 安裝成功了。

        啟用命令自動(dòng)補(bǔ)全

        TCCLI 提供了一個(gè)自動(dòng)補(bǔ)全的功能,可以使用下面的命令進(jìn)行啟用:

        echo "$(which tccli_completer)" && complete -C "$(which tccli_completer)" tccli

        開(kāi)通云函數(shù)

        點(diǎn)擊登錄騰訊云控制臺(tái),開(kāi)通云函數(shù)服務(wù):

        完成以后,自動(dòng)進(jìn)入概覽控制面板,這里可以看到各種 SCF 應(yīng)用的調(diào)用統(tǒng)計(jì)信息:

        配置 TCCLI

        首先要獲取訪(fǎng)問(wèn)密鑰,訪(fǎng)問(wèn)密鑰是構(gòu)建騰訊云 API 請(qǐng)求的重要憑證,調(diào)用任何一個(gè)騰訊云 API 都需要提供訪(fǎng)問(wèn)密鑰,一對(duì)完整的訪(fǎng)問(wèn)密鑰包括 SecretIdSecretKey 兩部分。

        進(jìn)入訪(fǎng)問(wèn)管理控制臺(tái),找到【訪(fǎng)問(wèn)密鑰】- 【API密鑰管理】,并在其中新建一個(gè)訪(fǎng)問(wèn)密鑰:

        再進(jìn)行 TCCLI 初始化配置,使其完成使用云 API 的必要前提條件:

        tccli configure

        進(jìn)入交互模式,TCCLI 會(huì)要求提供 SecretIdSecretKey 等信息,配置完成后,可測(cè)試下使用 CLI 拉取云主機(jī)列表:

        tccli cvm DescribeInstances

        OK,配置成功了。

        創(chuàng)建云函數(shù)

        下面我們來(lái)創(chuàng)建一個(gè)無(wú)服務(wù)器云函數(shù),并且調(diào)用它。

        mkdir -p /data/hello && touch /data/hello/hello.py

        這里實(shí)驗(yàn)?zāi)J(rèn)用的是 Python,云函數(shù)支持所有主流編程語(yǔ)言。

        部署云函數(shù)

        現(xiàn)在開(kāi)始部署上面的云函數(shù):

        tccli scf CreateFunction \
           --FunctionName "hello" \
           --Code '{"ZipFile":"'$(cd /data/hello && zip -r - * | base64 | tr -d "\n")'"}' \
           --Handler "hello.main_handler" \
           --Description "My first scf"

        部署成功后,會(huì)有 Success 的返回。

        管理云函數(shù)

        再次進(jìn)入控制臺(tái),可以看到剛部署好的云函數(shù):

        點(diǎn)擊該函數(shù)進(jìn)入函數(shù)管理頁(yè)面:

        其實(shí)在這個(gè)控制臺(tái)頁(yè)面也可以新建、編輯、上傳、部署云函數(shù)。

        測(cè)試云函數(shù)

        新建一個(gè)測(cè)試模板發(fā)起測(cè)試:

        點(diǎn)擊測(cè)試按鈕:

        成功返回了,日志也輸出了,到這里我就全程體驗(yàn)了一把云函數(shù)。

        回到實(shí)驗(yàn)頁(yè)面,退出實(shí)驗(yàn)。

        騰訊云函數(shù)再體驗(yàn)(Java)

        創(chuàng)建云函數(shù)

        實(shí)驗(yàn)?zāi)J(rèn)使用的是 Python,并且會(huì)要安裝、配置很多東西,那是實(shí)驗(yàn)臺(tái),而在真實(shí)控制臺(tái)是不需要這么麻煩的流程的,我們到控制臺(tái)來(lái)創(chuàng)建一個(gè) Java 云函數(shù)試試。

        在函數(shù)服務(wù)中點(diǎn)擊新建按鈕,官方有很多內(nèi)置的 Java 云函數(shù)模板,我們選擇一個(gè) Java 8 相關(guān)的模板進(jìn)行快速創(chuàng)建,當(dāng)然也可以從 0 開(kāi)始。

        創(chuàng)建成功了。

        部署云函數(shù)

        現(xiàn)在進(jìn)去部署吧:

        下載示例代碼,然后上傳部署即可。

        Java 云函數(shù)的核心代碼其實(shí)就是一個(gè)基于 Spring Boot 的接口:

        @RestController
        @SpringBootApplication
        public class DemoApplication {

           public static void main(String[] args) {
              SpringApplication.run(DemoApplication.class, args);
           }

           @GetMapping("/hello")
           public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
              return String.format("Hello %s!", name);
           }
        }

        測(cè)試云函數(shù)

        部署成功后,現(xiàn)在發(fā)起測(cè)試:

        Java 云函數(shù)也成功了!

        云函數(shù)的魅力

        棧長(zhǎng)體驗(yàn)了兩把云函數(shù),最大的感受就是不需要自己運(yùn)維服務(wù)器了,包括環(huán)境配置、JDK 安裝配置、權(quán)限、開(kāi)放端口、日志、網(wǎng)絡(luò)等設(shè)置全都內(nèi)置或者有自定義配置。

        下面我們來(lái)看幾個(gè)配置頁(yè)面。

        各種函數(shù)的配置管理:

        流量設(shè)置,可以做灰度發(fā)布:

        并發(fā)配額,可以設(shè)置函數(shù)獨(dú)占配額、函數(shù)預(yù)置并發(fā)數(shù):

        還有更多配置,這里就不一一介紹了。

        總結(jié)

        看到這里,想必大家對(duì) Serverless 有了一定程序的認(rèn)識(shí)了,總之,程序員要做的只是上傳函數(shù)代碼而已,其他一切底層資源都可以在云上管理,并且是函數(shù)級(jí)別的資源管理,再結(jié)合騰訊云的各種云能力,簡(jiǎn)直不要太香了。

        當(dāng)然,這也會(huì)產(chǎn)生一定的費(fèi)用,但都是按量付費(fèi)的,并且可以按需要自動(dòng)彈性調(diào)整,肯定要比自己全套搞要?jiǎng)澦悖吘惯B運(yùn)維和服務(wù)器都省了,最重要的是省心、省時(shí)間。

        另外,騰訊云都提供很多免費(fèi)額度:

        還是很良心的,感興趣的都去體驗(yàn)看下,完全不一樣的開(kāi)發(fā)體驗(yàn)。

        這里再次奉上騰訊云 Serverless 地址:

        https://cloud.tencent.com/product/sls

        通過(guò)參與這次騰訊云的 Techo Day 技術(shù)開(kāi)放日活動(dòng),棧長(zhǎng)最大的感觸就是,在技術(shù)領(lǐng)域,騰訊云確實(shí)走在了前沿,真不是吹,Techo Day活動(dòng)分享了很多技術(shù)熱點(diǎn)及解決方案,涵蓋了我們平時(shí)開(kāi)發(fā)的方方面面,不僅能學(xué)習(xí)、接觸新興技術(shù),還能對(duì)技術(shù)有更多、更深入的認(rèn)識(shí),特別是棧長(zhǎng)介紹的 Serverless 云函數(shù),真正讓我們釋放雙手,實(shí)現(xiàn)生產(chǎn)力質(zhì)的提升。本次活動(dòng)就分享了Severless相關(guān)的技術(shù)原理解析,更有動(dòng)手實(shí)驗(yàn)室手把手指導(dǎo)如何通過(guò)云函數(shù)快速構(gòu)建自定義邀請(qǐng)函,讓棧長(zhǎng)也受益匪淺。

        最后,本次Techo Day 活動(dòng)上發(fā)布和分享的更多產(chǎn)品內(nèi)容及相關(guān)課件,包括如何像用自來(lái)水一樣使用數(shù)據(jù)庫(kù)、使用Lighthouse一鍵構(gòu)建云上應(yīng)用等技術(shù)原理解析分享,更有利用PAG十分鐘完成 AE動(dòng)效部署上線(xiàn)各平臺(tái)的動(dòng)手實(shí)踐指導(dǎo),各種干貨都被整理成了一份《騰訊云輕量級(jí)工具指南》,可以說(shuō)是非常實(shí)用了,尤其對(duì)于程序員、架構(gòu)師,都是不可或缺的生產(chǎn)利器,能夠助你大大提高生產(chǎn)力,有需要的可以點(diǎn)擊閱讀原文獲取。

        瀏覽 65
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            污污污18禁 | 成人免费视频在线观看入口 | 一级a性色生活片毛片 | 国产三级精品片 | 国产欧美熟妇另类久久久 | 韩国三级少妇高潮 | 全肉乱妇杂乱无遮拦 | 麻豆91麻豆国产传媒的特点 | 色秘 乱码一区二区三区色欲 | 中文无码99 |