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

          Spring Boot Serverless 實(shí)戰(zhàn) | Serverless 應(yīng)用的監(jiān)控與調(diào)試

          共 3634字,需瀏覽 8分鐘

           ·

          2022-01-13 18:45

          點(diǎn)擊上方藍(lán)字關(guān)注我們




          作者 | 西流(阿里云函數(shù)計(jì)算專家)

          關(guān)注公眾號,后臺(tái)回復(fù)“學(xué)習(xí)” 即可獲得 Serverless 技術(shù)資源包!

          “?
          導(dǎo)讀:
          Spring Boot 是基于 Java Spring 框架的套件,它預(yù)裝了 Spring 的一系列組件,讓開發(fā)者只需要很少的配置就可以創(chuàng)建獨(dú)立運(yùn)行的應(yīng)用程序。在云原生的環(huán)境中,有大量的平臺(tái)可以運(yùn)行 Spring Boot 應(yīng)用,例如虛擬機(jī)、容器等。但其中最有吸引力的,是以 Serverless 的方式運(yùn)行 Spring Boot 應(yīng)用。


          我將通過一系列文章,從架構(gòu),部署,監(jiān)控、性能、安全等 5 個(gè)方面來分析 Serverless 平臺(tái)運(yùn)行 Spring Boot 應(yīng)用的優(yōu)劣。為了讓分析更有代表性,我選擇了 Github 上 star 數(shù)超過 50k 的電商應(yīng)用 mall?作為示例。通過上一篇《Spring Boot Serverless 實(shí)戰(zhàn) | 部署篇》,相信大家已經(jīng)感受到 Serverless 應(yīng)用上線的便捷。這是該系列文章的第三篇,本文將向大家展示怎樣監(jiān)控、調(diào)試 Serverless 應(yīng)用。


          實(shí)時(shí)日志



          對運(yùn)行在遠(yuǎn)端云平臺(tái)上的應(yīng)用而言,日志是調(diào)試的主要手段。分布式應(yīng)用下有多個(gè)實(shí)例,日志的收集和分析是很有挑戰(zhàn)性的。雖然有很多成熟的開源產(chǎn)品,但要搭建和持續(xù)運(yùn)維這些軟件,成本并不小。函數(shù)計(jì)算內(nèi)置了對日志收集/分析的完整支持。用戶只需要在應(yīng)用邏輯中輸出日志,這些日志便可被自動(dòng)收集,通過多種方式聚合,查詢,并支持實(shí)時(shí)查看。


          在前面的文章中,我們通過 Serverless Devs 工具,已經(jīng)為應(yīng)用自動(dòng)創(chuàng)建創(chuàng)建了日志倉庫,可以在函數(shù)計(jì)算控制臺(tái)查看請求,應(yīng)用級別的日志,也可使用 SQL 語言進(jìn)行高級查詢。除此之外,Serverless Devs 工具還提供了實(shí)時(shí)日志功能,對于應(yīng)用調(diào)試非常有幫助。

          在項(xiàng)目根目錄下,即 s.yaml 所在的目錄,執(zhí)行下面的命令,將輸出 s.yaml 中定義的所有服務(wù)的日志。


          sudo -E s logs


          用戶也可查看指定服務(wù)的日志。


          sudo -E s mall-admin logs

          通過 -t 參數(shù),用戶也可以進(jìn)入觀察模式實(shí)時(shí)查看日志。


          sudo -E s mall-admin logs -t

          此時(shí) Serverless Devs 工具會(huì)實(shí)時(shí)監(jiān)聽 mall-admin 應(yīng)用下所有實(shí)例的日志,將新產(chǎn)生的日志實(shí)時(shí)展示。此后,當(dāng)我們通過瀏覽器或者 curl 等方式給 mall-admin 應(yīng)用發(fā)送請求,就能看到對應(yīng)的請求處理日志輸出。



          Serverless Devs 也支持根據(jù)關(guān)鍵詞查詢?nèi)罩尽1热缥覀兛梢詧?zhí)行下面的命令,查看 mall-admin 應(yīng)用 ERROR 級別的日志。

          s mall-admin logs -t --keyword=ERROR


          指標(biāo)多維查詢展示



          除了 Serverless Devs 的命令行工具,用戶也可以在函數(shù)計(jì)算控制臺(tái)上從函數(shù)、實(shí)例、請求等多個(gè)維度查看日志。

          mall-admin 為例,在函數(shù)計(jì)算控制臺(tái)左側(cè)導(dǎo)航欄,點(diǎn)擊 “服務(wù)及函數(shù)”,選擇 mall-admin 服務(wù),再選擇該服務(wù)下的同名函數(shù),進(jìn)入 mall-admin 函數(shù)詳情頁。點(diǎn)擊 監(jiān)控指標(biāo)?標(biāo)簽頁。

          如下圖所示,請求列表展示了請求的執(zhí)行情況,包括成功/失敗,是在什么函數(shù)版本上執(zhí)行的,執(zhí)行時(shí)長,內(nèi)存用量,在哪個(gè)實(shí)例上執(zhí)行等等。也可以方便地查詢請求相關(guān)的日志。



          下圖展示了實(shí)例維度的信息。除了指標(biāo),用戶也可以到滾動(dòng)到頁面下方,查看對應(yīng)的實(shí)例列表,以及登錄到實(shí)例上執(zhí)行相關(guān)的操作。


          注意:函數(shù)計(jì)算的按量實(shí)例完全由系統(tǒng)管理,實(shí)例在閑置一段時(shí)間后就會(huì)被系統(tǒng)回收。被回收的實(shí)例不再被使用,不能登錄。在下圖中以灰色顯示。



          通過函數(shù)計(jì)算平臺(tái)提供的日志收集和查詢能力,用戶的開發(fā)流程被無縫銜接起來。修改代碼,使用 Serverless Devs 工具部署應(yīng)用,查看日志,整個(gè)流程絲般順滑。


          本地調(diào)試



          在將應(yīng)用部署到云平臺(tái)之前,我們通常希望能在本地部署應(yīng)用,進(jìn)行調(diào)試。Serverless Devs 工具提供了本地運(yùn)行應(yīng)用的功能。


          在項(xiàng)目根目錄(s.yaml 所在目錄),執(zhí)行命令,即可啟動(dòng)對應(yīng)的服務(wù)。auto 參數(shù)是指自動(dòng)為實(shí)例生成和 Web 框架兼容的測試域名。例如執(zhí)行下述命令:


          sudo -E s mall-admin local start auto


          工具會(huì)在本地啟動(dòng)函數(shù)實(shí)例,并提供一個(gè)可供調(diào)用的 url。這樣我們可以在本地調(diào)試 Web 應(yīng)用,提高效率。


          注意:每次啟動(dòng)本地實(shí)例,監(jiān)聽端口是隨機(jī)生成的。


          端云聯(lián)調(diào)



          很多時(shí)候,構(gòu)成應(yīng)用的微服務(wù)/函數(shù)需要和其他服務(wù)相互調(diào)用。除了在本地進(jìn)行簡單的單元測試,聯(lián)調(diào)或者集成測試必須要把代碼部署到云端,這樣的方式使得開發(fā)調(diào)試的流程比較長,云端的復(fù)雜環(huán)境也增大了問題診斷的難度。比如:


          • 要平遷原有的應(yīng)用,函數(shù)實(shí)例需要訪問云端環(huán)境中的其他服務(wù),遇到實(shí)例啟動(dòng)不起來時(shí),該怎么排查原因?
          • 應(yīng)用采用微服務(wù)架構(gòu),涉及到多個(gè)服務(wù)。能否在本地代碼開發(fā)完成后快速進(jìn)行端對端測試?
          • 事件驅(qū)動(dòng)的應(yīng)用,通過事件源觸發(fā)函數(shù),環(huán)節(jié)多,鏈路長,能不能在本地快速測試整個(gè)鏈路?
          • ……


          為了解決上述問題,Serverless Devs 提供了端云聯(lián)調(diào)功能。開發(fā)者通過端云聯(lián)調(diào)能在本地啟動(dòng)實(shí)例,和云端環(huán)境無縫連通,快速進(jìn)行測試和問題調(diào)試。端云聯(lián)調(diào)能幫助開發(fā)者:


          1. 變更代碼,實(shí)時(shí)查看結(jié)果,調(diào)試迭代的閉環(huán)最短。
          2. 能夠復(fù)用本地豐富的開發(fā)調(diào)試工具,效率最高。


          端云聯(lián)調(diào)在本地開發(fā)機(jī)和云端應(yīng)用的 VPC 環(huán)境間建立一條安全的隧道連接。訪問云端應(yīng)用的流量將自動(dòng)轉(zhuǎn)發(fā)到本地開發(fā)機(jī)上;同時(shí)本地實(shí)例對外訪問的網(wǎng)絡(luò)流量也被自動(dòng)轉(zhuǎn)發(fā)到云端應(yīng)用的 VPC 環(huán)境中。比如在本地實(shí)例訪問云端的 RDS 數(shù)據(jù)庫實(shí)例,傳統(tǒng)方式開發(fā)者只能放開 RDS 實(shí)例的公網(wǎng)訪問。而使用端云聯(lián)調(diào),不需要任何配置的改變,可以直接以內(nèi)網(wǎng)的方式訪問 RDS 實(shí)例。


          以 mall 應(yīng)用為例,整個(gè)應(yīng)用由 mall-admin-web,mall-admin,mall-portal,mall-search 等多個(gè)服務(wù)構(gòu)成。服務(wù)之間有上下游依賴,比如 mall-admin-web 會(huì)向下游的 mall-admin 服務(wù)發(fā)送請求。

          假設(shè)我們已經(jīng)在測試環(huán)境部署了一整套 mall 應(yīng)用的服務(wù),現(xiàn)在想在開發(fā)機(jī)全鏈路調(diào)試 mall-admin 服務(wù),需要把 mall-admin-web 等整套服務(wù)和數(shù)據(jù)庫都部署到開發(fā)機(jī),或者通過公網(wǎng)與云端 VPC 內(nèi)的服務(wù)和數(shù)據(jù)庫交互,這是非常繁瑣甚至不現(xiàn)實(shí)的。端云聯(lián)調(diào)能讓我們在本地開發(fā)機(jī)環(huán)境啟動(dòng) mall-admin 服務(wù)的實(shí)例,安全的與云端 VPC 環(huán)境的其他服務(wù)和數(shù)據(jù)庫無縫交互。用戶不需要做任何設(shè)置。


          首先在 s.yaml 所在的目錄執(zhí)行下述命令,針對 mall-admin 服務(wù)啟動(dòng)端云聯(lián)調(diào)。


          sudo -E s mall-admin proxied setup

          然后在控制臺(tái)訪問 mall-admin-web 應(yīng)用,可以看到相關(guān)的請求已經(jīng)被轉(zhuǎn)發(fā)到了本地的 mall-admin 函數(shù)實(shí)例上。而且本地實(shí)例可以無縫的訪問云端 VPC 內(nèi)的數(shù)據(jù)庫或者其他服務(wù)。


          注意:當(dāng)使用了端云聯(lián)調(diào)后,所有的流量都會(huì)發(fā)送到本地的實(shí)例上。要讓流量恢復(fù)到函數(shù)計(jì)算上的實(shí)例,需要執(zhí)行?s deploy?重新部署相關(guān)的函數(shù)。


          總結(jié)



          從下圖的兩個(gè)報(bào)告中, 我們可以看出, 在 Serverless 領(lǐng)域, 調(diào)試和可觀測一直是 Serverless 開發(fā)實(shí)踐者最大的兩個(gè)痛點(diǎn)。


          函數(shù)計(jì)算這個(gè) Serverless 產(chǎn)品始終踐行開發(fā)者第一的理念, 在調(diào)試和可觀測方面探索和落地走在所有云廠商的前面, 在調(diào)試方面,Serverless Devs 工具支持本地調(diào)試、端云聯(lián)調(diào)甚至是遠(yuǎn)程調(diào)試;而在可觀測方面, 推出了其他廠商不具備的秒級監(jiān)控、實(shí)例指標(biāo)以及實(shí)例登錄等,極大提高了 Serverless 開發(fā)者的工作效率和幸福感, Server Less, Value More!


          文中網(wǎng)址匯總(可滑動(dòng))


          Spring Boot:https://spring.io/projects/spring-bootMall:https://github.com/macrozheng/mallServerless Devs 安裝文檔:http://serverless-devs.com/zhcn/docs/installed/cliinstall.html函數(shù)計(jì)算:https://www.aliyun.com/product/fc




          ?點(diǎn)擊原文,即可跳轉(zhuǎn) Serverless Devs~
          瀏覽 54
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(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>
                  色婷婷国产视频 | 影音先锋av成人电影 | 成人黄色毛片视频 | 成人激情婷婷五月天 | 13一16女处被毛片视频 |