主頁 >  其他 > Serverless 應用實踐及典型案例決議

Serverless 應用實踐及典型案例決議

2020-09-18 18:51:54 其他

本文整理自 ServerlessDay · China 大會 - 《Serverless 應用實踐及典型案例決議》的分享,講師為騰訊云 Serverless 高級架構師盧萌凱、獵豹移動前端總監董文梟、江娛互動技術經理董文強、新東方高級工程師李墾,

本文主要分為四部分:

  • Serverless 的優勢和價值
  • 基于 Serverless 構建 REST API
  • Serverless 和服務端渲染的結合
  • Serverless 構建音視頻轉碼方案

Serverless 的優勢和價值

為什么我們投入這么大時間和精力來做 Serverless 呢?因為我們堅信云計算的未來趨勢之一就是 Serverless,因為 Serverless 讓云服務的應用變得更加簡單、高效,比如用云主機部署應用的時候,不僅要搭建和維護環境,同時也要評估業務的資源用量,尤其是對于運營類的活動,如果一旦評估的不準確,要么會造成資源的巨大浪費,要么服務可能會被打爆,甚至停服下線,

而 Serverles 能夠做到按需使用,讓業務完美的彈性伸縮,對于運維同學來講,簡直不能更爽,而且和預付費的實體不同,Serverless 是 pay as you go的模式,只有當業務運行時才會占用資源,只有源被占用了才會計費,簡單來講,就是,我實際用多少就付多少錢,這種計費模式對于存在明顯波峰波谷的服務,優勢相當明顯,

另外,云計算的發展,一定是讓用戶更加專注于業務,而對于運維來講,那些繁瑣的且對業務發展沒有核心價值的資源維護作業,就可以 offload 給云廠商,這樣就能更加專注業務層面的運維,這就是 Serverless 所帶來的價值,他不僅把用戶對云的使用成本降到了最低,也最大程度上的加速了應用的上執行緒序,

我們也可以回顧下云計算出現及發展的這些年里,和自建 IDC 相比,用戶就是越來越聚焦業務,資源的使用效率也越來越高,而 Serverless 在當下把這些優勢做到了極致,

我們再來簡單看下云函式是怎么構成 Serverless 架構,以及Serverless應用具體是怎么運行的,

開發者在實際使用時,可以借助 WEB IDE 或者本地 IDE 完成代碼開發,然后通過在線或者插件、工具的方式把代碼以及所用到的相關依賴,一起打包部署到云函式平臺,在代碼里,我們可以像傳統開發方式一樣去呼叫后端的 BaaS,比如訪問資料庫、物件存盤、訊息佇列、第三方服務介面等,計算邏輯和后端服務共同構成了所謂的 Serverless 應用架構,

而終端用戶根據平臺提供的請求方式,去觸發部署在云函式平臺上的業務代碼,比如發送 http 請求等,平臺會根據用戶的請求量去拉起相應的計算資源去運行用戶代碼,平臺會保障資源的可用性和彈性伸縮,因此用戶只用關注和聚焦業務及其運行情況,

基于 Serverless 構建 REST API

接下來進入今天的正題,首先我們來看下 REST API 這個場景,這里會用到 Serverless Framework 來輔助開發和部署,借助 Serverless Framework 的 SCF 組件,我們可以把本地開發好的 REST API 應用快速部署到云上,我們只需要提前寫好相應的 yaml,Serverless Framwork 會基于 yaml 里的配置資訊,快速創建云函式、API 網關等云資源,

接下來分享江娛互動 Serverless API實踐,將從下面三個方面分享

  • 為什么要遷移到云函式
  • 遷移后的價值
  • 使用云函式后的一些心得

大概將近一年前,江娛互動策劃設計了一個功能,某個服務端的行為會觸發系統通知發送到聊天頻道上,理論上這個設計也沒問題,但是沒有考慮規模,我也不知道上了這么一個功能,上線之后,聊天系統突然來了20倍的請求量沖擊,請求開始大量排隊,玩家發的一句話需要一分鐘后才會送達,

因此緊急加服務器分流,扛過了這一波活動,事后復盤如何避免這種突發請求量高峰,硬堆服務器數量肯定不行,方向當時是考慮這么幾個:彈性伸縮、容器化、云函式,

最終選擇云函式是因為它天然適合無狀態 Http 服務的場景,

  • 首先從部署便捷性上講,只需要關注到代碼層面就好了,容器、鏡像、服務器的概念完全不用理會,
  • 其次就是用多少花多少錢,后半夜沒啥請求量的時候,就沒有成本,
  • 最后就是再多的請求量,只要資源上限允許,都可以承載得住,當然,僅限于云函式這一層,因此決定先試試云函式,

團隊大概花了不到一個月時間,理清楚云函式的基本用法并把玩家拉取歷史訊息的介面遷移了過去,非常順利,用起來也沒有什么問題,于是決定整體遷移,

這是一套非常棒的成本和性能兼顧的方案,自從遷移之后,聊天服務的API部分,穩定性非常好,隨著游戲用戶越來越多,也無需考慮承載量的問題,而總體成本始終能維持在比較低的水平,偶爾遇到極端的請求量高峰時,也都能正常撐過去,不會引起雪崩的局面,

另外云函式和其他系統的結合利用,也比較方便,比如訊息佇列和日志系統,還有定時觸發器,直接取代了以往找臺服務器用 crontab 運行一些定時任務的方法,而我們也在把一些其他的外圍系統用云函式的方式來做,盡量減少游戲服務端的復雜度,

從程式員的角度看,使用云函式可以讓開發者更加專注于代碼本身的優化,可以去重新思考需求的本質,重新整理自己的思路,比如回圈里要做什么,查詢資料庫時是不是要優化一下SQL,大型的資料明確不用時,是不是先手動把記憶體釋放掉等等,這對于開發者技術水平的提升,是有很大的好處的,而且帶來的正反饋,就是成本上明顯的減少,

Serverless 和服務端渲染的結合

接下來再來看下 SSR 場景,最早的時候前端應用其實就是 SSR,由服務器端生成 Html 頁面送到瀏覽器端,后來為了提升工程化效率,在前端引入了組件和 MVVM 的開發模式,然后就有了 CSR,典型的如單頁應用,通過在瀏覽器端加載 JS 和 CSS 來完成渲染,但是我們也發現單頁應用對 SEO 不夠友好,另外,單頁應用的首屏加載時間也會比較久,尤其是網路越差的情況就越明顯,

Serverless

所以一些公司為了優化用戶體驗,或者優化 SEO,就又開始轉向 SSR,但是對于前端同學來說,需要跑后端,我就得運維一個 node 服務器集群,這個是很頭疼的一件事,還需要了解很多后端的知識,如負載均衡和高并發等,借助 Serverless 可以完美解放前端同學的負擔,

獵豹移動前端團隊在 2016 年的時候開始使用 React,2017 年就開始研究并嘗試 React Server Render,同期 Facebook 的網站已經采用 Isomorphic 技術實作,性能非常好,為了滿足公司業務需求和技術傳承,團隊自研了獵豹的前端技術框架 Koot.js,目前已成為獵豹前端的主要技術方案,

Koot.js 是基于 React、Koa、Webpack 來架構的,其中用 Koa 搭建的 Node 作為開發服務和部署時候的 SSR 服務,頁面渲染主要是用 React+Redux 完成的一套代碼在瀏覽器環境和 Node 環境通用,利用 Webpack 可編程性動態生成配置并執行,打包出多場景(開發、測驗和線上環境等)多端代碼(前端、服務端)部署,

具體落地的時候,獵豹移動團隊將自研的 Koot.js 使用 Serverless Framework 進行了封裝,做了一個 Serverless 組件,這樣在其他業務場景需要用的時候就可以直接復用,可以節省不少成本,避免了重復造輪子,降低了出錯的概率,

SSR 專案落地的時候通常不是很順暢,專案部署的時候需要具備服務器技術能力才能和運維順暢溝通,所以專案落地不僅要前端同學掌握后端開發能力還要對運維技術、并發等問題多方面考慮,這對前端技術同學的技術全面行有較高要求,

在這種情況下,去年我們開始接觸 Serverless 技術,Serverless 技術可以降低前端對服務端和運維的技術能力但要求,更適合大部分要做 SSR 的前端團隊,團隊調研了幾大云廠商 Serverless 服務,綜合比較后,選擇了騰訊云作為實作 SSR 的 Serverless 服務支持,

騰訊云 Serverless 提供了比較全面的組件支持,與 Serverless Framework 基本是無縫結合,周邊社區和生態支持也比較到位,使用程序會少踩一些坑,在選定了平臺之后就比較順暢了,因為 Serverless Framework 提供了很多標準化的介面,在封裝 Koot.js Serveless 組件的程序中也比較省心,

Serverless 構建音視頻轉碼方案

最后是音視頻轉碼場景,云函式和物件存盤 COS 的結合,可以很方便的把上傳到 COS 的音視頻,進行自動化的轉碼處理,云函式里可以基于 ffmpeg 實作自定義的轉碼邏輯,并且對于轉碼后回傳 COS 的檔案,還可以自動觸發 CDN 預熱,

憑借云函式(SCF)的強大聯動能力,將視頻上傳、視頻處理、圖片處理、存盤場景有機地整合為一體,用戶可以自定義轉碼函式,幫助客戶快速搭建定制化任務處理能力,彌補當前單獨云服務的功能盲點,可以把 ffmpeg 業務方便地從物理機、云主機或容器中移植到云函式,云函式提供豐富的計量方式,幫助用戶獲得顯著的成本優勢,

在每年暑期的時候,都會有大量的學生在新東方的平臺學習,以前我們都是在自建的機房里基于服務器和 NFS 來實作音視頻課程的存盤和轉碼邏輯,但是由于暑期流量比較大,IDC 里的服務器不一定能滿足計算需求,同時自建服務的硬體采購周期較長,這里期望尋找一種彈性的方法,既能夠支持快速業務部署,又能高效的完成轉碼功能,

經過對比和選型,最終選定騰訊云的云函式,在云上采用云函式+ COS 的方式,可以支持彈性伸縮,即使把本地流量全部切到云上,也能有全部承載,那么新的業務流程,就會加入任務調度模塊,當業務流量過來的時候,可以自動或者手動把流量分別匯入自研服務和云上服務,并在流程里加入了很多高可用的技術,比如通過任務 TraceID 進行全鏈路追蹤、云端計算失敗本地重新計算一次等,新的方案里,云端服務開發起來很簡單,且不需要投入太多的運維精力,費用相對也很低,用多少付多少,

Serverless 是云計算的必然趨勢,也是云原生的應用場景之一,期待大家能夠有更多的嘗試和分享,

One More Thing

3 秒你能做什么?喝一口水,看一封郵件,還是 —— 部署一個完整的 Serverless 應用?

復制鏈接至 PC 瀏覽器訪問:https://serverless.cloud.tencent.com/deploy/express

3 秒極速部署,立即體驗史上最快的 Serverless HTTP 實戰開發!

傳送門:

  • GitHub: github.com/serverless
  • 官網:serverless.com

歡迎訪問:Serverless 中文網,您可以在 最佳實踐 里體驗更多關于 Serverless 應用的開發!


推薦閱讀:《Serverless 架構:從原理、設計到專案實戰》

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/75848.html

標籤:其他

上一篇:青云QingCloud與陜中二院聯手打造智慧醫院范本

下一篇:使用Thanos實作Prometheus指標聯邦

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more