<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)系列“架構(gòu)篇” | 光速入門(mén)函數(shù)計(jì)算

          共 3156字,需瀏覽 7分鐘

           ·

          2021-12-13 16:27

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


          Spring Boot 是基于 Java Spring 框架的套件,它預(yù)裝了 Spring 一系列的組件,開(kāi)發(fā)者只需要很少的配置即可創(chuàng)建獨(dú)立運(yùn)行的應(yīng)用程序。


          在云原生體系中,有大量的平臺(tái)都可以運(yùn)行 Spring Boot 應(yīng)用,例如虛擬機(jī)、容器等。但其中最有吸引力的,是以 Serverless 的方式運(yùn)行 Spring Boot 應(yīng)用。我將通過(guò)《Spring Boot Serverless 實(shí)戰(zhàn)》系列文章,從架構(gòu),部署,監(jiān)控、性能、安全等 5 個(gè)篇章來(lái)分析 Serverless 平臺(tái)運(yùn)行 SpringBoot 應(yīng)用的優(yōu)劣。


          為了讓分析更有代表性,我選擇了 Github 上 star 數(shù)超過(guò) 50k 的電商應(yīng)用 Mall 作為示例。這是該系列文章的第一篇,本文會(huì)從架構(gòu)角度對(duì) Spring Boot 應(yīng)用的 Serverless 化進(jìn)行分析。


          Mall 架構(gòu)簡(jiǎn)介



          Mall 是一套電商系統(tǒng),包括前臺(tái)商城系統(tǒng)及后臺(tái)管理系統(tǒng),基于 Spring Boot + MyBatis 實(shí)現(xiàn)。前臺(tái)商城系統(tǒng)包含首頁(yè)門(mén)戶(hù)、商品推薦、商品搜索、商品展示、購(gòu)物車(chē)、訂單流程、會(huì)員中心、客戶(hù)服務(wù)、幫助中心等模塊。后臺(tái)管理系統(tǒng)包含商品管理、訂單管理、會(huì)員管理、促銷(xiāo)管理、運(yùn)營(yíng)管理、內(nèi)容管理、統(tǒng)計(jì)報(bào)表、財(cái)務(wù)管理、權(quán)限管理、設(shè)置等模塊。


          Mall 的架構(gòu)如下圖所示,分為網(wǎng)關(guān)層,應(yīng)用層,數(shù)據(jù)存儲(chǔ)層。請(qǐng)求首先通過(guò)網(wǎng)關(guān)到達(dá) Spring Boot 應(yīng)用服務(wù)。網(wǎng)關(guān)實(shí)現(xiàn)負(fù)載均衡,流量控制等功能。應(yīng)用層包含 3 個(gè) Spring Boot 應(yīng)用和1個(gè)前端應(yīng)用:



          • mall-admin:后臺(tái)商城管理系統(tǒng)
          • mall-portal:前臺(tái)商城系統(tǒng)
          • mall-search:于Elasticsearch的商品搜索系統(tǒng)
          • Mall-admin-web:mall-admin 的前端展示,基于 Vue+Element 實(shí)現(xiàn)

          Mall 使用了 MySQL,Redis,MongoDB,ElaisticSearch 等多種數(shù)據(jù)庫(kù)。主要業(yè)務(wù)數(shù)據(jù)存儲(chǔ)在 MySQL,緩存數(shù)據(jù)存儲(chǔ)在 Redis,用戶(hù)行為分析數(shù)據(jù)存儲(chǔ)在 MongoDB,搜索數(shù)據(jù)存儲(chǔ)在 ElasticSearch 中。Spring Boot 應(yīng)用服務(wù)間使用 RabbitMQ 實(shí)現(xiàn)異步通信。


          Serverless 計(jì)算平臺(tái)-函數(shù)計(jì)算簡(jiǎn)介



          函數(shù)計(jì)算(Function Compute)是目前國(guó)內(nèi)唯一入選 Forrester 領(lǐng)導(dǎo)者現(xiàn)象的 Faas 產(chǎn)品,是一項(xiàng)事件驅(qū)動(dòng)的全托管 Serverless 計(jì)算服務(wù)。開(kāi)發(fā)者無(wú)需管理服務(wù)器等基礎(chǔ)設(shè)施,用戶(hù)在上傳好代碼包或者容器鏡像后,函數(shù)計(jì)算會(huì)自動(dòng)準(zhǔn)備好計(jì)算資源,并且以彈性、可靠的方式運(yùn)行代碼。


          函數(shù)計(jì)算的產(chǎn)品優(yōu)勢(shì)總結(jié)為:

          • 高效免運(yùn)維:聚焦業(yè)務(wù)邏輯開(kāi)發(fā),無(wú)需關(guān)心服務(wù)器購(gòu)買(mǎi)、自動(dòng)伸縮等運(yùn)維操作
          • 彈性高可用:預(yù)留實(shí)例系統(tǒng)不自動(dòng)回收,可長(zhǎng)駐不銷(xiāo)毀,消除冷啟動(dòng)帶來(lái)的延時(shí)毛刺
          • 按需低成本:按量付費(fèi)模型按實(shí)際使用計(jì)算資源計(jì)費(fèi)、資源利用率高
          • 穩(wěn)定高可靠:函數(shù)計(jì)算分布式集群化部署,支持多可用區(qū)


          函數(shù)計(jì)算提供全面的可觀測(cè)和問(wèn)題診斷能力,但是其最突出的特點(diǎn)還是內(nèi)置了網(wǎng)關(guān)層能力,能夠?qū)崿F(xiàn)縮容到 0,快速的自動(dòng)伸縮。


          函數(shù)計(jì)算的這些特點(diǎn),使其很適合 Spring Boot 這類(lèi) Web 應(yīng)用。使用函數(shù)計(jì)算,開(kāi)發(fā)者只需要專(zhuān)注于 SpringBoot 應(yīng)用邏輯的實(shí)現(xiàn),而不再費(fèi)心應(yīng)用運(yùn)行環(huán)境的搭建、部署、監(jiān)控等無(wú)差別的工作。


          Mall 應(yīng)用 Serverless 架構(gòu)總覽



          Mall 是一個(gè)非常標(biāo)準(zhǔn)的 3 層架構(gòu) Web 應(yīng)用,改造為 Serverless 架構(gòu)非常容易,架構(gòu)如下所示。由于函數(shù)計(jì)算內(nèi)置了網(wǎng)關(guān)服務(wù),自動(dòng)拉起實(shí)例運(yùn)行應(yīng)用,因此開(kāi)發(fā)者只需要上傳應(yīng)用代碼即可。



          應(yīng)用實(shí)例在函數(shù)計(jì)算平臺(tái)上運(yùn)行,能夠自由的訪問(wèn)其他服務(wù),因此和 MySQL,Redis,RabbitMQ 等服務(wù)的訪問(wèn)方式相同。


          函數(shù)計(jì)算內(nèi)置了日志收集和展示能力。開(kāi)發(fā)者為函數(shù)計(jì)算指定阿里云日志服務(wù)的 LogStore,打到標(biāo)準(zhǔn)輸出的日志會(huì)自動(dòng)收集到日志服務(wù)查詢(xún)、展示。開(kāi)發(fā)者也可將日志投遞到自己的日志處理系統(tǒng)中,但需要做一些額外的配置。在本次示例中(見(jiàn)文末阿里云日志服務(wù)網(wǎng)址),我們會(huì)采用阿里云日志服務(wù)來(lái)處理應(yīng)用日志。


          函數(shù)計(jì)算也提供了一系列工具,幫助開(kāi)發(fā)者通過(guò) Jenkins CICD 工具發(fā)布應(yīng)用。我們將在后續(xù)的文章中進(jìn)一步展示。


          在函數(shù)計(jì)算平臺(tái)運(yùn)行 Spring Boot?



          在演示阿里云函數(shù)計(jì)算平臺(tái)上運(yùn)行 Web 應(yīng)用前,先為大家介紹以下幾個(gè)概念:


          1、服務(wù)


          函數(shù)計(jì)算的服務(wù)資源對(duì)應(yīng)微服務(wù)。一個(gè)服務(wù)下可以創(chuàng)建多個(gè)函數(shù),這些函數(shù)共享服務(wù)級(jí)別的配置,包括日志、權(quán)限、VPC 網(wǎng)絡(luò)訪問(wèn)配置等等。一般來(lái)說(shuō),開(kāi)發(fā)者根據(jù)業(yè)務(wù)場(chǎng)景設(shè)計(jì)微服務(wù)架構(gòu),為每一個(gè)微服務(wù)創(chuàng)建函數(shù)計(jì)算的服務(wù)。然后再根據(jù)需求,將微服務(wù)變?yōu)楦?xì)粒度的函數(shù)。比如有些邏輯是計(jì)算密集型的,可以將它拆分為另一個(gè)函數(shù),配置不同的實(shí)例規(guī)格,既滿足性能要求,又優(yōu)化了成本。按照微服務(wù)的理念,一個(gè)服務(wù)下的函數(shù)個(gè)數(shù)不宜太多。


          2、函數(shù)


          函數(shù)是運(yùn)行開(kāi)發(fā)者代碼的基本單位。函數(shù)的粒度可以很細(xì),比如對(duì)應(yīng) 1 個(gè) API,也可以較粗,對(duì)應(yīng)一組 API。不同的函數(shù)配置不同的實(shí)例規(guī)格。函數(shù)計(jì)算提供了各種語(yǔ)言的運(yùn)行時(shí),也提供 custom runtime/custom container 和語(yǔ)言無(wú)關(guān)的運(yùn)行時(shí)。如果只是用函數(shù)計(jì)算實(shí)現(xiàn)片段代碼,可以使用相關(guān)語(yǔ)言的運(yùn)行時(shí)。在我們的場(chǎng)景下,因?yàn)橐獰o(wú)縫遷移 SpringBoot 應(yīng)用,我們會(huì)選擇 custom container 運(yùn)行時(shí)。Mall 項(xiàng)目已經(jīng)支持了將 Mall 應(yīng)用自動(dòng)打包為容器鏡像,因此只需要將鏡像上傳至阿里云容器鏡像倉(cāng)庫(kù),并在函數(shù)上指定相關(guān)信息即可。


          3、HTTP 觸發(fā)器


          為函數(shù)配置 HTTP 觸發(fā)器后,函數(shù)可通過(guò) HTTP 請(qǐng)求的方式調(diào)用。函數(shù)計(jì)算配套的 Serverless Devs 工具會(huì)為 HTTP 觸發(fā)器生成測(cè)試域名,開(kāi)發(fā)者可以方便的調(diào)試和運(yùn)行 Web 應(yīng)用。

          ?

          (更多了解見(jiàn)文末網(wǎng)站)

          至此,閱讀本篇后,相信大家已經(jīng)對(duì) Mall 應(yīng)用架構(gòu)以及 Serverless 平臺(tái)已經(jīng)有了一個(gè)基本的了解。下周同一時(shí)間,我們將在下一篇的《 Spring Boot on FC - 部署篇》中為各位詳解如何將 Mall 應(yīng)用部署到函數(shù)計(jì)算平臺(tái)上。


          文章中官網(wǎng)地址


          SpringBoot:https://spring.io/projects/spring-bootMall:https://github.com/macrozheng/mall函數(shù)計(jì)算:https://help.aliyun.com/product/50980.html阿里云日志服務(wù):https://help.aliyun.com/product/28958.html服務(wù):https://help.aliyun.com/document_detail/74925.htm函數(shù):https://help.aliyun.com/document_detail/52077.htmlHTTP觸發(fā)器概述:https://help.aliyun.com/document_detail/71229.htmlServerless Devs:http://www.serverless-devs.com/

          ?點(diǎn)擊原文,即可查看更多函數(shù)計(jì)算信息!
          瀏覽 49
          點(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>
                  精品欧美色视频网站在线观看 | 操老骚逼视频 | 日本成人三级视频 | 色婷婷激情综合 | 国产男女视频网站 |