用戶案例 | 騰訊文檔應(yīng)用 Serverless 架構(gòu)上云最佳實(shí)踐

來(lái)源: 騰訊云原生
作者:騰訊云原生
時(shí)間:2021-09-02
16928
近兩年,國(guó)內(nèi)文檔類SaaS產(chǎn)品層出不窮,協(xié)作云文檔作為云時(shí)代辦公的一種工具和方式。與傳統(tǒng)的離線辦公軟件不同,協(xié)作云文檔更加注重協(xié)作的溝通和效率,同時(shí)作為工具類產(chǎn)品也同樣關(guān)注性能和體驗(yàn)。

近兩年,國(guó)內(nèi)文檔類SaaS產(chǎn)品層出不窮,協(xié)作云文檔作為云時(shí)代辦公的一種工具和方式。與傳統(tǒng)的離線辦公軟件不同,協(xié)作云文檔更加注重協(xié)作的溝通和效率,同時(shí)作為工具類產(chǎn)品也同樣關(guān)注性能和體驗(yàn)。就在不久以前,《一個(gè)救命文檔的24小時(shí)》刷屏朋友圈,在河南暴雨災(zāi)情中,騰訊文檔快速響應(yīng)災(zāi)區(qū)需要,提升穩(wěn)定性,確保產(chǎn)品體驗(yàn)。

騰訊文檔脫胎于QQ家族旗下一款團(tuán)隊(duì)協(xié)作IM軟件TIM的在線文檔模塊,最初基于開(kāi)源軟件搭建的技術(shù)架構(gòu),隨著業(yè)務(wù)的高速發(fā)展,已無(wú)法完全滿足業(yè)務(wù)的需求,且積累下了比較沉重的技術(shù)債務(wù)。團(tuán)隊(duì)經(jīng)過(guò)慎重的討論,決定從底層開(kāi)始,分模塊,逐步重構(gòu)整個(gè)技術(shù)體系。在技術(shù)迭代的過(guò)程中,團(tuán)隊(duì)也在不斷探索和嘗試業(yè)內(nèi)一些先進(jìn)成熟的技術(shù)解決方案。

騰訊文檔整個(gè)技術(shù)體系內(nèi)集成了許多微服務(wù)為騰訊文檔提供業(yè)務(wù)支持,比如圖像識(shí)別、SSR、截圖、文檔預(yù)覽等,這些微服務(wù)需要從效率和成本需求出發(fā)考慮解決方案,以實(shí)現(xiàn)可擴(kuò)展、易維護(hù)、降低開(kāi)發(fā)成本的目標(biāo)。伴隨著公司自研上云的浪潮,在近來(lái)的開(kāi)發(fā)中,團(tuán)隊(duì)在多個(gè)微服務(wù)項(xiàng)目中深入使用騰訊云Serverless架構(gòu),滿足了業(yè)務(wù)的需求,取得了不錯(cuò)的效果。

01.

騰訊文檔x Serverless云函數(shù)

多場(chǎng)景應(yīng)用

1.應(yīng)對(duì)流量高峰低谷

辦公類產(chǎn)品是有明顯的流量潮汐的,比如上午8點(diǎn)到12點(diǎn),下午2點(diǎn)到6點(diǎn)這幾個(gè)時(shí)段是流量比較大的時(shí)候,其他時(shí)間段尤其是凌晨沒(méi)什么流量。隨著用戶量快速增加,這種潮汐規(guī)律尤為明顯,高峰時(shí)期海量用戶的實(shí)時(shí)修改對(duì)服務(wù)器造成巨大的壓力。

傳統(tǒng)架構(gòu)下可以通過(guò)增加虛擬機(jī),實(shí)現(xiàn)應(yīng)用的可擴(kuò)展。但由于預(yù)估容量不足,導(dǎo)致業(yè)務(wù)流量高峰期時(shí),大量用戶出現(xiàn)請(qǐng)求超時(shí)的情況,這意味著品牌聲譽(yù)受損、用戶流失。雖然可以通過(guò)創(chuàng)建虛擬機(jī)實(shí)例的方式進(jìn)行擴(kuò)容,但是仍然要做很多額外的配置。應(yīng)用底層有很多依賴的框架或語(yǔ)言運(yùn)行時(shí)需要安裝,安裝完成之后還需要配置和部署應(yīng)用,這個(gè)周期至少需要1-2個(gè)小時(shí),這種情況下傳統(tǒng)的部署架構(gòu)無(wú)法做到資源與流量的匹配。

Serverless解決方案

騰訊文檔借助Serverless云函數(shù)搭建文檔頁(yè)面直出服務(wù),將文檔的內(nèi)容渲染能力實(shí)現(xiàn)為函數(shù),部署在云函數(shù)環(huán)境上,當(dāng)文檔業(yè)務(wù)流量激增,由云函數(shù)的負(fù)載均衡系統(tǒng)自動(dòng)分配執(zhí)行環(huán)境,處理海量用戶觸發(fā)的內(nèi)容更新請(qǐng)求負(fù)載,動(dòng)態(tài)擴(kuò)縮容能力為微服務(wù)提供最合理的資源分配。同時(shí)通過(guò)設(shè)置云函數(shù)預(yù)置并發(fā),可預(yù)先啟動(dòng)多個(gè)函數(shù)實(shí)例,保持云函數(shù)的活性,消除冷啟動(dòng),降低在運(yùn)行環(huán)境初始化和業(yè)務(wù)代碼初始化產(chǎn)生的耗時(shí)。

640.webp.jpg

2.SSR前端渲染

騰訊文檔自推出以來(lái),已達(dá)千萬(wàn)月活,為了支持用戶打開(kāi)頁(yè)面時(shí)能快速看到頁(yè)面內(nèi)容,瀏覽器直接解析HTML直出的字符串模版顯示頁(yè)面,流量激增導(dǎo)致集群負(fù)載、前端渲染壓力增加,首屏加載時(shí)間慢等問(wèn)題。SSR團(tuán)隊(duì)需要實(shí)現(xiàn)一套彈性高可用性的直出解析服務(wù)來(lái)處理文檔和表格的頁(yè)面內(nèi)容,滿足可擴(kuò)展、易維護(hù)、降低開(kāi)發(fā)成本的目標(biāo)。文檔的渲染能力幾乎都是前端同學(xué)在負(fù)責(zé),而前端同學(xué)大多服務(wù)端知識(shí)積累比較淺,對(duì)于服務(wù)的開(kāi)發(fā)運(yùn)維經(jīng)驗(yàn)比較少,長(zhǎng)期的運(yùn)維成本是新的架構(gòu)設(shè)計(jì)重要的評(píng)估維度,從而讓前端團(tuán)隊(duì)可以更加聚焦于業(yè)務(wù)邏輯本身。

Serverless解決方案

SSR(Server-Side Rendering)需要依賴Node.js服務(wù)渲染頁(yè)面,顯然會(huì)比僅僅提供靜態(tài)文件的CSR(Client-Side Rendering)應(yīng)用需要占用更多服務(wù)器CPU資源,借助Serverless方案,前端同學(xué)無(wú)需關(guān)注SSR服務(wù)器的部署、運(yùn)維和擴(kuò)容,通過(guò)云函數(shù)對(duì)底層服務(wù)進(jìn)行封裝,極大地減少部署運(yùn)維成本,更加聚焦業(yè)務(wù)開(kāi)發(fā),提高開(kāi)發(fā)效率。

640.webp (1).jpg

全新Serverless Web Funciton服務(wù)開(kāi)發(fā)模式,只需簡(jiǎn)單修改監(jiān)聽(tīng)端口,即可將目前流行的Node.js框架直接部署上云,享受Serverless技術(shù)帶來(lái)的免運(yùn)維、低成本、按需擴(kuò)縮容的眾多優(yōu)勢(shì),歡迎體驗(yàn)。

3.外部服務(wù)調(diào)用-OCR圖像識(shí)別

騰訊文檔幻燈片支持編輯公式的能力,OCR圖像識(shí)別是騰訊文檔幻燈片結(jié)合外部的OCR服務(wù)能力來(lái)完成文檔內(nèi)的公式圖片轉(zhuǎn)換為公式,進(jìn)而方便用戶進(jìn)行公示編輯。問(wèn)題點(diǎn)在于:外部提供的OCR服務(wù)做了限制,不支持前端請(qǐng)求,僅支持服務(wù)端請(qǐng)求。傳統(tǒng)的解決方案需要后臺(tái)同學(xué)接入,進(jìn)而增加了人員排期、對(duì)接等項(xiàng)目管理的復(fù)雜度。

Serverless解決方案

騰訊文檔將外部提供的OCR用云函數(shù)SCF做一層轉(zhuǎn)發(fā),騰訊文檔再對(duì)接聯(lián)調(diào)云函數(shù)的接口。解決了外部服務(wù)的限制,同時(shí)節(jié)省了后臺(tái)開(kāi)發(fā)資源,前端業(yè)務(wù)開(kāi)發(fā)同學(xué)可以自己快速對(duì)接上外部服務(wù),大大提升了開(kāi)發(fā)效率。

640.webp (2).jpg

4.插件中心-第三方服務(wù)接入

騰訊文檔插件1.0的方案是基于對(duì)文檔前端封裝到前端插件SDK的方案,在內(nèi)部插件業(yè)務(wù)嚴(yán)重耦合文檔實(shí)現(xiàn)的前提下,無(wú)法將文檔能力以安全、成體系的方式對(duì)外提供,持續(xù)去開(kāi)放前端文檔的編輯的能力,會(huì)使前端SDK和文檔側(cè)的實(shí)現(xiàn)逐步變得臃腫,最后有可能會(huì)在變成巨石應(yīng)用上長(zhǎng)期存在的技術(shù)債務(wù)。

Serverless解決方案

插件2.0方案的核心是基于后臺(tái)內(nèi)容編輯的能力開(kāi)放,利用文檔的數(shù)據(jù)響應(yīng)式的更新機(jī)制,云函數(shù)便成為前端-云函數(shù)-后臺(tái)內(nèi)容編輯中關(guān)鍵環(huán)節(jié),將開(kāi)放的實(shí)現(xiàn)從前端剝離,通過(guò)云函數(shù)承載進(jìn)行開(kāi)放。同時(shí),不同服務(wù)的調(diào)用量級(jí)不同,云函數(shù)帶有天然的服務(wù)隔離和動(dòng)態(tài)修復(fù)能力,可針對(duì)不同服務(wù)相互隔離,分別進(jìn)行升級(jí)拓展,避免服務(wù)間的影響。

640.webp (3).jpg

5.灰度發(fā)布&環(huán)境隔離

在進(jìn)行應(yīng)用版本更新及切換時(shí),為了保證線上整體系統(tǒng)業(yè)務(wù)穩(wěn)定,及時(shí)發(fā)現(xiàn)業(yè)務(wù)代碼的問(wèn)題,研發(fā)團(tuán)隊(duì)會(huì)采取灰度發(fā)布的方式測(cè)試迭代。通過(guò)云函數(shù)針對(duì)特定的版本進(jìn)行逐步的流量切換,可以實(shí)現(xiàn)某個(gè)版本的平滑灰度,保證新上線的版本能夠在可控的范圍能進(jìn)行發(fā)布迭代。

通過(guò)云函數(shù)版本隔離測(cè)試環(huán)境和生產(chǎn)環(huán)境,線上通過(guò)對(duì)$LASTEST進(jìn)行版本的固化,可以把測(cè)試環(huán)境的API網(wǎng)關(guān)對(duì)接到TEST版本,將生產(chǎn)環(huán)境對(duì)接都固化的版本上,保證生產(chǎn)環(huán)境的代碼質(zhì)量安全。

640.webp (4).jpg

02.

Serverless架構(gòu)方案優(yōu)勢(shì)

·研發(fā)效率提升

本地開(kāi)發(fā)測(cè)試后,觸發(fā)CI/CD流程,就可以完成部署流程。同時(shí),云函數(shù)提供了日志監(jiān)控、灰度、發(fā)布回滾等能力,可以通過(guò)接口或者插件實(shí)現(xiàn)完全自動(dòng)化的流程。云函數(shù)基于騰訊云專業(yè)的保障集群,自帶負(fù)載均衡和彈性伸縮,開(kāi)發(fā)同學(xué)基本不需要再關(guān)心運(yùn)維等問(wèn)題,可以有更多的時(shí)間聚焦業(yè)務(wù)的優(yōu)化。服務(wù)端經(jīng)驗(yàn)較少的前端開(kāi)發(fā)工程師也可以較為輕易的開(kāi)發(fā)維護(hù)服務(wù)。

·成本節(jié)約

云函數(shù)實(shí)現(xiàn)1ms計(jì)費(fèi)粒度,按實(shí)際用量計(jì)費(fèi),幫忙用戶獲得顯著的成本優(yōu)勢(shì),在沒(méi)有訪問(wèn)量時(shí)實(shí)現(xiàn)自動(dòng)縮容,節(jié)約部署成本。

·靈活度高

憑借騰訊云函數(shù)的多版本能力,可以靈活部署多個(gè)在線版本,通過(guò)和網(wǎng)關(guān)的配合的,輕松做到多版本共存,提供定制化的處理能力。

·加速業(yè)務(wù)迭代

使用Serverless方案之后,極大減少了運(yùn)維和監(jiān)控的負(fù)擔(dān),開(kāi)發(fā)同學(xué)可以把更多的精力放在方案的優(yōu)化和技術(shù)迭代中,快速驗(yàn)證產(chǎn)品特性,推動(dòng)團(tuán)隊(duì)技術(shù)業(yè)務(wù)的發(fā)展。

03.

騰訊文檔x Serverless架構(gòu)

更多場(chǎng)景探索

當(dāng)下瀏覽器環(huán)境是有性能瓶頸的,對(duì)于較為復(fù)雜的異步邏輯可以考慮使用云函數(shù)將邏輯服務(wù)化,接下來(lái),騰訊文檔計(jì)劃對(duì)前端瀏覽器邏輯FaaS化,可以從前端分離到服務(wù)端,進(jìn)而降低瀏覽器性能壓力。

在協(xié)作辦公的賽道上,團(tuán)隊(duì)業(yè)務(wù)還在快速的成長(zhǎng),面對(duì)快速變化的技術(shù)迭代,低成本、快速開(kāi)發(fā)、快速部署、快速上線的Serverless解決方案成為了團(tuán)隊(duì)在微服務(wù)技術(shù)選型中優(yōu)先考慮的架構(gòu)。借助云函數(shù)SCF的能力,團(tuán)隊(duì)不用再擔(dān)心后臺(tái)計(jì)算資源的問(wèn)題,可以更加有信心應(yīng)對(duì)更多突如其來(lái)的事件。未來(lái),隨著騰訊文檔開(kāi)放平臺(tái)的建設(shè),會(huì)有更多的使用云函數(shù)SCF的微服務(wù)跑在騰訊文檔的業(yè)務(wù)中,為廣大用戶提供更好的服務(wù)。

·GitHub:github.com/serverless

·官網(wǎng):cloud.tencent.com/product/serverless-catalog

立即登錄,閱讀全文
版權(quán)說(shuō)明:
本文內(nèi)容來(lái)自于騰訊云原生,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
相關(guān)文章
騰訊云數(shù)據(jù)庫(kù)PostgreSQL全面支持PG 17
騰訊云數(shù)據(jù)庫(kù)PostgreSQL全面支持PG 17
即日起,騰訊云PostgreSQL全面支持PostgreSQL 17.0。所有用戶可使用大版本升級(jí)能力升級(jí)至最新的PostgreSQL 17.0進(jìn)行體驗(yàn),也可以在產(chǎn)品購(gòu)買(mǎi)頁(yè)直接購(gòu)買(mǎi)。
騰訊云
云服務(wù)
2024-12-152024-12-15
高可用這個(gè)問(wèn)題,加機(jī)器就能解決?
高可用這個(gè)問(wèn)題,加機(jī)器就能解決?
互聯(lián)網(wǎng)服務(wù)的可用性問(wèn)題是困擾企業(yè)IT人員的達(dá)摩克利斯之劍:防于未然,體現(xiàn)不出價(jià)值。已然發(fā)生,又面臨P0危機(jī)。就更別提穩(wěn)定性建設(shè)背后顯性的IT預(yù)算問(wèn)題與隱性的人員成本問(wèn)題。
騰訊云
云服務(wù)
2024-11-252024-11-25
TDSQL TDStore引擎版替換HBase:在歷史庫(kù)場(chǎng)景中的成本與性能優(yōu)勢(shì)
TDSQL TDStore引擎版替換HBase:在歷史庫(kù)場(chǎng)景中的成本與性能優(yōu)勢(shì)
HBase憑借其高可用性、高擴(kuò)展性和強(qiáng)一致性,以及在廉價(jià)PC服務(wù)器上的低部署成本,廣泛應(yīng)用于大規(guī)模數(shù)據(jù)分析。
騰訊云
云服務(wù)
2024-11-042024-11-04
復(fù)雜查詢性能弱,只讀分析引擎來(lái)幫忙
復(fù)雜查詢性能弱,只讀分析引擎來(lái)幫忙
隨著當(dāng)今業(yè)務(wù)的高速發(fā)展,復(fù)雜多表關(guān)聯(lián)的場(chǎng)景越來(lái)越普遍。但基于行式存儲(chǔ)的數(shù)據(jù)庫(kù)在進(jìn)行復(fù)雜查詢時(shí)性能相對(duì)較弱。
騰訊云
云服務(wù)
2024-11-022024-11-02
掃碼登錄
打開(kāi)掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊(cè)
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊(cè)
個(gè)人VIP
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家