<kbd id="5sdj3"></kbd>
<th id="5sdj3"></th>

  • <dd id="5sdj3"><form id="5sdj3"></form></dd>
    <td id="5sdj3"><form id="5sdj3"><big id="5sdj3"></big></form></td><del id="5sdj3"></del>

  • <dd id="5sdj3"></dd>
    <dfn id="5sdj3"></dfn>
  • <th id="5sdj3"></th>
    <tfoot id="5sdj3"><menuitem id="5sdj3"></menuitem></tfoot>

  • <td id="5sdj3"><form id="5sdj3"><menu id="5sdj3"></menu></form></td>
  • <kbd id="5sdj3"><form id="5sdj3"></form></kbd>

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

    共 6369字,需瀏覽 13分鐘

     ·

    2022-07-04 15:52

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

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

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

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

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

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

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

    Serverless 到底是什么?

    Serverless 介紹

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

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

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

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

    來看 Spring Serverless 的一張圖就明白了:

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

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

    Serverless 優(yōu)勢

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

    我們來看下面這張圖:

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

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

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

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

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

    等等……

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

    Serverless 經(jīng)常不會單獨(dú)出現(xià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ù)) 更小的載體,每一個函數(shù)就是一個服務(wù),函數(shù)之間相互獨(dú)立。

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

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

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

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

    Backend as Service(BaaS)

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

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

    騰訊云 Serverless

    基本介紹

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

    官方文檔:

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

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

    棧長了解到的情況如下:

    • 按量付費(fèi): 沒有用戶訪問時不花錢,可節(jié)約服務(wù)器開銷 30%;

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

    • 彈性伸縮: 自動彈性伸縮,上不封頂,下可到 0;

    • 超高并發(fā): 每秒最高支持 10 萬并發(fā)請求數(shù);

    整個請求邏輯如下:

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

    解決方案

    通用解決方案

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

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

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

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

    所以,用上云函數(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)提供敏捷開發(fā)、靈活部署和高擴(kuò)展性的同時,也增加了服務(wù)治理和運(yùn)維的復(fù)雜度,提高了技術(shù)門檻。

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

    產(chǎn)品地址:

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

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

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

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

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

    安裝 TCCLI

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

    官方文檔:

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

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

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

    yum install python3 -y

    安裝 Python3 會同時安裝一些相關(guān)的依賴包,比如 pip。

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

    sudo pip3 install tccli

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

    tccli --version

    TCCLI 安裝成功了。

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

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

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

    開通云函數(shù)

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

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

    配置 TCCLI

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

    進(jìn)入訪問管理控制臺,找到【訪問密鑰】- 【API密鑰管理】,并在其中新建一個訪問密鑰:

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

    tccli configure

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

    tccli cvm DescribeInstances

    OK,配置成功了。

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

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

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

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

    部署云函數(shù)

    現(xiàn)在開始部署上面的云函數(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"

    部署成功后,會有 Success 的返回。

    管理云函數(shù)

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

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

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

    測試云函數(shù)

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

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

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

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

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

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

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

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

    創(chuàng)建成功了。

    部署云函數(shù)

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

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

    Java 云函數(shù)的核心代碼其實(shí)就是一個基于 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);
       }
    }

    測試云函數(shù)

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

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

    云函數(shù)的魅力

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

    下面我們來看幾個配置頁面。

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

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

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

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

    總結(jié)

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

    當(dāng)然,這也會產(chǎn)生一定的費(fèi)用,但都是按量付費(fèi)的,并且可以按需要自動彈性調(diào)整,肯定要比自己全套搞要劃算,畢竟連運(yùn)維和服務(wù)器都省了,最重要的是省心、省時間。

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

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

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

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

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

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

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

    手機(jī)掃一掃分享

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

    手機(jī)掃一掃分享

    分享
    舉報(bào)

    <kbd id="5sdj3"></kbd>
    <th id="5sdj3"></th>

  • <dd id="5sdj3"><form id="5sdj3"></form></dd>
    <td id="5sdj3"><form id="5sdj3"><big id="5sdj3"></big></form></td><del id="5sdj3"></del>

  • <dd id="5sdj3"></dd>
    <dfn id="5sdj3"></dfn>
  • <th id="5sdj3"></th>
    <tfoot id="5sdj3"><menuitem id="5sdj3"></menuitem></tfoot>

  • <td id="5sdj3"><form id="5sdj3"><menu id="5sdj3"></menu></form></td>
  • <kbd id="5sdj3"><form id="5sdj3"></form></kbd>
    超碰日本无码 | 大香蕉网|伊人在线大香蕉|大香蕉|大香蕉网站 | 亚洲爽爆av| 欧美另类巨大 | 欧美性猛交XXXX免费看久久久 |