国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

云開發(fā)初探 —— 更簡便的小程序開發(fā)模式

iKcamp / 1788人閱讀

摘要:年加入騰訊云云開發(fā)團(tuán)隊(duì)。基于,云服務(wù)商發(fā)展出這類更高級(jí)的開發(fā)服務(wù)。小程序云開發(fā)說了這么多無服務(wù)開發(fā)的概念優(yōu)點(diǎn),在小程序無服務(wù)開發(fā)這一塊,騰訊云有什么樣的作品呢。這就是今天要重點(diǎn)介紹的,小程序云開發(fā),這就是騰訊云與微信聯(lián)合研發(fā)后,交出的答卷。

李成熙,騰訊云高級(jí)工程師。2014年度畢業(yè)加入騰訊AlloyTeam,先后負(fù)責(zé)過QQ群、花樣直播、騰訊文檔等項(xiàng)目。2018年加入騰訊云云開發(fā)團(tuán)隊(duì)。專注于性能優(yōu)化、工程化和小程序服務(wù)。微博 | 知乎 | Github

原文鏈接

李成熙,騰訊云高級(jí)工程師。2014年度畢業(yè)加入騰訊AlloyTeam,先后負(fù)責(zé)過QQ群、花樣直播、騰訊文檔等項(xiàng)目。2018年加入騰訊云云開發(fā)團(tuán)隊(duì)。專注于性能優(yōu)化、工程化和小程序服務(wù)。

小程序誕生以來,業(yè)界關(guān)注小程序前端的技術(shù)演進(jìn)較多,因此眾多小程序前端的框架、工具也應(yīng)運(yùn)而生,前端開發(fā)效率大大提高,而后臺(tái)的開發(fā)技術(shù)則關(guān)注不多,痛點(diǎn)不少,具體痛在哪里呢?

小程序后臺(tái)開發(fā)之痛

第一個(gè)是腦袋瓜疼,怎么疼呢?

隨著像騰訊云等的云服務(wù)商提供的云服務(wù)越來越便捷,業(yè)務(wù)上云已經(jīng)是大勢所趨。但是從簡單地在云虛擬機(jī)上部署頁面,到實(shí)現(xiàn)真正全面地上云,還是有很多區(qū)別。要真正實(shí)現(xiàn)全面的上云,要了解的東西非常多,當(dāng)你第一次接觸這些概念的時(shí)候,學(xué)的這些東西是一個(gè)接一個(gè),讓你應(yīng)接不暇,往往分散了你的對(duì)業(yè)務(wù)的專注力。比如我自己,來騰訊云之后,為了對(duì)云服務(wù)有更好地了解,就去報(bào)了個(gè)騰訊云的課程。這課程系列分云架構(gòu)師、云開發(fā)、云運(yùn)維三門課程,還分初級(jí)、中級(jí)、高級(jí),需要花費(fèi)大量時(shí)間才能理清這些知識(shí)概念,并且還要花大量的時(shí)間去上機(jī)做實(shí)驗(yàn)。所以對(duì)于開發(fā)來說,要徹底搞清楚,還真的不是件容易事,絕對(duì)讓你的腦袋疼。

第二是肉疼,尤其是你老板肉疼。

最開始當(dāng)互聯(lián)網(wǎng)還沒有云服務(wù)商的時(shí)候,公司都得自己搭服務(wù),不僅花大價(jià)錢買機(jī)器、買寬帶流量,還得請(qǐng)人過來維護(hù)。如果在這種情況下要搞小程序開發(fā),公司得請(qǐng)一個(gè)維護(hù)服務(wù)器硬件的、一個(gè)維護(hù)網(wǎng)絡(luò)的,一個(gè)數(shù)據(jù)工程師,一個(gè)后臺(tái)還有一個(gè)前端,剛好五個(gè)人。當(dāng)云服務(wù)商開始進(jìn)入變革整個(gè)市場的時(shí)候,我們就不用再自己維護(hù)硬件了,由云服務(wù)商來維護(hù),因此我們可以少請(qǐng)一個(gè)維護(hù)硬件的,但還是得有一個(gè)運(yùn)維去維護(hù)云服務(wù)。當(dāng)云服務(wù)商將數(shù)據(jù)庫、容器服務(wù)都抽象出來上云之后,咱們連專業(yè)的數(shù)據(jù)庫維護(hù)都可以不請(qǐng)了,由后臺(tái)或者云維兼崗就行。云服務(wù)商的不斷發(fā)展,確實(shí)是讓云服務(wù)的成本不斷下降,但投入的錢還是很多呀,要投入的人還是不少,這幾年生意難做,作為老板肯定是想投入成本、試錯(cuò)成本越少越好。

第三個(gè)是腎疼。

大家都知道,開發(fā)是一個(gè)走腎的工作。比如,這些年流行的前后端分離,雖然讓專人專項(xiàng),但卻引入了聯(lián)調(diào)這個(gè)事,所以也增加了腎的負(fù)擔(dān)。

這里列出了三個(gè)前后端分離帶來的麻煩。

權(quán)責(zé)往往不清晰,有很多臨界的位置,誰管都可以,容易引發(fā)扯皮。

溝通時(shí)間增多,因?yàn)楫吘故莾蓚€(gè)人工作嘛,需要不少的溝通

除了溝通,還需要兩邊的代碼調(diào)試,看看數(shù)據(jù)、展示通不通,這個(gè)時(shí)間也很不可控,尤其是如果環(huán)境特別復(fù)雜,調(diào)起來不僅麻煩重重,還很有挫敗感。

無服務(wù)開發(fā)小程序是未來趨勢

正因?yàn)樾〕绦蚝笈_(tái)開發(fā)的麻煩重重,因此業(yè)內(nèi)都想出了各種各樣的開發(fā)方案,其中一種方案,“無服務(wù)開發(fā)小程序”,我們認(rèn)為,將會(huì)是未來的趨勢。但這個(gè)未來,其實(shí)今天已經(jīng)到來了。

那什么是無服務(wù)開發(fā)呢?無服務(wù),又稱為 ServerlessServerless 還處在一個(gè)比較初期的階段,目前也沒有權(quán)威和官方的定義,不同人不同公司有不同說法,今天我也不打算講太復(fù)雜。顧名思義, Serverless 就是指應(yīng)用的開發(fā)不再需要考慮服務(wù)器這樣的硬件基礎(chǔ)設(shè)施,基于 Serverless 架構(gòu)的應(yīng)用主要依賴于像騰訊云這樣的云服務(wù)商提供的后臺(tái)服務(wù)。比如說無服務(wù)云函數(shù)、云數(shù)據(jù)庫、對(duì)象存儲(chǔ)服務(wù)等等。簡單來說,相當(dāng)于你現(xiàn)在要開個(gè)水果店賣水果,以前你還得要租店面,搞水電、裝修門面。現(xiàn)在這些都不用了,你就在一個(gè)已經(jīng)搭好各種各樣設(shè)施的超市里,租一個(gè)已經(jīng)幫你搞好門面的架子或者箱子,賣得好你就租大一點(diǎn),賣不好就租小一點(diǎn),隨時(shí)隨地隨你的心意,非常靈活。

為什么說無服務(wù)化開發(fā)是趨勢呢?因?yàn)樵品?wù)的進(jìn)程,已經(jīng)從物理機(jī),演進(jìn)到 IAAS,再到 PAASIAAS 就是包括像云虛擬機(jī)、私有網(wǎng)絡(luò)、網(wǎng)絡(luò)專線、負(fù)載均衡等等的基礎(chǔ)服務(wù);PAAS 則更抽象一些,比如像云數(shù)據(jù)庫、網(wǎng)絡(luò)防護(hù)等等。基于 IAASPAAS,云服務(wù)商發(fā)展出 Serverless 這類更高級(jí)的開發(fā)服務(wù)。因此呢,無服務(wù)開發(fā)就會(huì)是今后開發(fā)類似小程序這類輕量應(yīng)用的新的開發(fā)趨勢。

一句話概括就是說,有了無服務(wù)開發(fā)之后,你就不用再處理安裝、運(yùn)維,底層了,只管寫接口、寫邏輯就好。總得來說,雖然你管的東西越來越少,但開發(fā)效率卻越來越高,開發(fā)出來的輕應(yīng)用、小程序卻是具備高性能、高可用、高擴(kuò)展的特性。

那無服務(wù)開發(fā),具體怎么去解決剛剛提到的后臺(tái)開發(fā)痛點(diǎn)呢?

第一是讓你更加關(guān)注你的業(yè)務(wù)邏輯。云服務(wù)許多好用但難理解的概念,什么冷備熱備、彈性伸縮、負(fù)載均衡等等,通通都不用管,你只需要寫好你的業(yè)務(wù),服務(wù)好用戶就行。

第二,更省人力更省資金,老板不再肉疼。因?yàn)橛辛藷o服務(wù)開發(fā),運(yùn)維工作也不用操心了,像小程序這類的輕應(yīng)用,有一個(gè)全棧開發(fā),或者一個(gè)前端,半個(gè)后臺(tái)就可以輕松應(yīng)付了,資金和人力的需求可謂大大節(jié)省。

第三,就是前端工程師向全棧工程師的轉(zhuǎn)變。有了無服務(wù)開發(fā),前端工程師其實(shí)也可以安全、高性能地去操作一些以前只有后臺(tái)才敢操作的數(shù)據(jù)和邏輯,如果要開發(fā)的應(yīng)用是像小程序一樣輕量的、簡單的,完全可以由前端工程師完成,除非是特別復(fù)雜的,可能才需要后臺(tái)的介入。這樣也省缺了先前提到的前后端聯(lián)調(diào)的麻煩。

小程序·云開發(fā)

說了這么多無服務(wù)開發(fā)的概念、優(yōu)點(diǎn),在小程序無服務(wù)開發(fā)這一塊,騰訊云有什么樣的作品呢。這就是今天要重點(diǎn)介紹的,小程序·云開發(fā),這就是騰訊云與微信聯(lián)合研發(fā)后,交出的答卷。

云開發(fā),一共提供了三大能力,分別是存儲(chǔ)、數(shù)據(jù)庫、云函數(shù)。簡而言之,就是提供了存文件、存數(shù)據(jù)和運(yùn)行業(yè)務(wù)邏輯的能力。接下來,我會(huì)采取前后對(duì)比的方式,從方方面面去對(duì)比云開發(fā)和舊有的開發(fā)模式的不同。

首先是開發(fā)模式與架構(gòu)上的對(duì)比。在云開發(fā)模式出來之前,舊的小程序后臺(tái)開發(fā)模式就是上面這幅圖,在小程序端發(fā)請(qǐng)求,往往你得引入額外封裝好的 SDK,然后你需要在云服務(wù)這邊配置大量的運(yùn)維產(chǎn)品才能做出性能、可用性非常好的產(chǎn)品。開發(fā)者要關(guān)心的內(nèi)容,從前端、后臺(tái)一直關(guān)心到運(yùn)維這塊。

而云開發(fā)的全新模式,只要調(diào)用小程序原生的接口,就可以操作最基本的三大資源,而云開發(fā)背后又有騰訊云的基礎(chǔ)服務(wù)作為支撐,本身就高可用、高性能、可擴(kuò)展,你要關(guān)心的事情是大大減少了。

其次是資源管理平臺(tái)的對(duì)比。以前你需要管理云資源,你需要在騰訊云的面板里,幾十上百的產(chǎn)品里找到你需要的產(chǎn)品。

而云開發(fā)呢,你在小程序開發(fā)工具里,就可以找到云開發(fā)的控制面板入口。進(jìn)入后,我們將你要關(guān)注的產(chǎn)品,做成一個(gè)獨(dú)立面板供你使用,極為簡潔方便。

第三,我們對(duì)比一下在小程序端調(diào)用資源。以上傳文件為例,舊的開發(fā)模式,小程序端,你需要用 wx.chooseImage 還有 wx.uploadFile 小程序接口,后臺(tái)要部署業(yè)務(wù)框架、路由,還有寫邏輯上傳到騰訊云的對(duì)象存儲(chǔ),你還要考慮這個(gè)后臺(tái)服務(wù)的性能與安全,萬一用戶量峰值很大怎么辦,有黑客攻擊怎么辦。

而云開發(fā)的例子,則極為簡單,十幾行代碼,就可以寫出安全、性能好的代碼上傳邏輯!

假設(shè)開發(fā)者是一個(gè)菜鳥,只懂 JavaScript 基礎(chǔ),對(duì)比下來,傳統(tǒng)的開發(fā)模式,前端耗時(shí)2分鐘開發(fā),1小時(shí)聯(lián)調(diào),后臺(tái)框架、邏輯和聯(lián)調(diào)一共8小時(shí),運(yùn)維,要花一整天時(shí)間去學(xué),總共要花1142分鐘,對(duì)比只要寫2分鐘就能完成的云開發(fā)模式,足足是云開發(fā)耗時(shí)的571倍!

最后,我們來對(duì)比在服務(wù)端里插入數(shù)據(jù)。這里的服務(wù)端里指的包括有云函數(shù)、還有你自己買的服務(wù)器。舊模式下,小程序端要用一個(gè) wx.request 發(fā)送請(qǐng)求到后臺(tái),后臺(tái)搭建好框架、路由等服務(wù)之后,開始寫插入數(shù)據(jù)到騰訊云MongoDB實(shí)例的邏輯,自然也是需要考慮服務(wù)的性能與安全。

而云開發(fā)的新模式,十幾行代碼,就可以開發(fā)出性能好、安全性高的插入數(shù)據(jù)邏輯。

假設(shè)開發(fā)者是一個(gè)菜鳥,對(duì)比下來,傳統(tǒng)的開發(fā)模式,前端要花31分鐘進(jìn)行開發(fā)與聯(lián)調(diào),后臺(tái)要用6小時(shí)部署服務(wù)開發(fā)邏輯還要30分鐘聯(lián)調(diào),而運(yùn)維的話從學(xué)習(xí)到會(huì)用大概也得10小時(shí),基本上是云開發(fā)模式耗時(shí)的1000多倍。

從代碼、耗時(shí)等多個(gè)方面去對(duì)比新舊兩種開發(fā)模式,我們可以發(fā)現(xiàn),云開發(fā)是絕對(duì)的碾壓。

小程序·云開發(fā)背后的技術(shù)力量

大家現(xiàn)在知道了無服務(wù)開發(fā)是未來的開發(fā)新趨勢,帶有無服務(wù)特性的小程序云開發(fā)帶來的各種各樣的好處,那么騰訊云在背后,做了些什么技術(shù)進(jìn)行支撐呢?

架構(gòu)上,一個(gè)請(qǐng)求操作從小程序端,通過微信后臺(tái),一直到騰訊云這邊的云開發(fā)服務(wù)層,云開發(fā)服務(wù)層調(diào)用的這些數(shù)據(jù)庫、存儲(chǔ)、云函數(shù),其實(shí)都是基于騰訊云的各種基礎(chǔ)服務(wù)。在這個(gè)請(qǐng)求通路上面,微信會(huì)將小程序的用戶 openid, 小程序 appid 直接帶過來,將用戶的信息寫到云函數(shù)、數(shù)據(jù)和文件元信息里面,為更方便的權(quán)限控制打下基礎(chǔ)。

另外,既然是復(fù)用了騰訊云的基礎(chǔ)資源,那自然是具備了云資源的特性。比如存儲(chǔ)自動(dòng)接入了 CDN 加速, 數(shù)據(jù)庫天然就帶有自動(dòng)備份、無損恢復(fù)等功能,云函數(shù)有彈性伸縮、多地可用的特性,能響應(yīng)峰值不同的服務(wù)。而云開發(fā)服務(wù)層,我們也做了負(fù)載均衡、并且與微信后臺(tái)進(jìn)行就近接入,讓性能更好。

目前云開發(fā)正式上線5天(注:9月10日深夜發(fā)布,掘金技術(shù)大會(huì)是在9月16日),我們的服務(wù)所支撐的 API 日調(diào)用量最大的單個(gè)小程序,已經(jīng)達(dá)到 1000W+ 的調(diào)用量了,這個(gè)調(diào)用量是什么概念呢?一般只有BAT,一些高頻使用的獨(dú)角獸開發(fā)的小程序才能達(dá)到這個(gè)調(diào)用量級(jí)。因此90%以上的小程序用我們這個(gè)服務(wù)都是沒有問題的。

推薦實(shí)踐

講一項(xiàng)技術(shù),除了講功能、講底層,其實(shí)更重要地說講怎么去用這門技術(shù)去實(shí)踐。接下來,我會(huì)介紹一些我們推薦的實(shí)踐方式,但我只會(huì)是點(diǎn)到為止,我們其實(shí)更希望社區(qū)能基于云開發(fā),做出更多更好的實(shí)踐。

第一點(diǎn)是資源操作的推薦實(shí)踐。

在小程序端操作資源方面,我們是使用小程序的原生接口進(jìn)行操作,而在小程序端操作資源,由于安全的考慮問題,基本上操作存儲(chǔ)、數(shù)據(jù)庫等的資源只能寫用戶自己的數(shù)據(jù),而讀數(shù)據(jù)則根據(jù)規(guī)則來判斷是否有權(quán)限。在服務(wù)端操作資源方面,我們使用 wx-server-sdk 或者 tcb-admin-node 來處理,前者是基于后者的能力進(jìn)行了封裝。在服務(wù)端使用這兩個(gè) SDK 去操作資源,所擁有的權(quán)限是管理級(jí)的,就是意味著可以操作一切的資源。

左邊的圖是數(shù)據(jù)庫的權(quán)限控制,右邊的圖是存儲(chǔ)的權(quán)限控制。這兩個(gè)控制面板都有各自不同權(quán)限的一些推薦的使用場景,大家可以打開控制去讀下面每個(gè)權(quán)限的灰色的解釋。

第二點(diǎn),是數(shù)據(jù)庫的推薦實(shí)踐。這里以騰訊乘車碼為例,像這種交通的小程序,可能會(huì)面對(duì)弱網(wǎng)或者無網(wǎng)的情況,開發(fā)初期為了省事,將大量的配置信息都寫在小程序端中。但隨著向更多城市的推進(jìn),配置文件越來越大,小程序的包體積越來越大。正好這個(gè)時(shí)候云開發(fā)推出了,騰訊乘車碼就采用云開發(fā)的數(shù)據(jù)庫,將一些不一定要在離線環(huán)境使用的配置遷移到云開發(fā),另外還采用云開發(fā)的存儲(chǔ)服務(wù)來存放靜態(tài)資源。這就大大壓縮了乘車碼小程序的體積,為其它新增功能騰挪了空間。

第三點(diǎn),推薦使用云開發(fā)的存儲(chǔ)存放小程序中所需要的靜態(tài)資源。因?yàn)樵崎_發(fā)的存儲(chǔ)天然自帶 CDN 加速。比如在控制面版的存儲(chǔ)中,文件的詳情里獲取的下載地址,就是 CDN 已經(jīng)加速的地址。

第四點(diǎn),是云函數(shù)的使用。目前云函數(shù)暫時(shí)不支持過于耗時(shí)、太復(fù)雜的操作,目前的超時(shí)時(shí)間為20s,函數(shù)包大小控制在20M左右。但其實(shí)這也已經(jīng)能滿足超過80%的需求,隨著服務(wù)的逐步穩(wěn)定,我們會(huì)考慮將這些限制進(jìn)一步放寬。

云函數(shù)另一種用法就是,我們可以將相同的一些操作,比如用戶管理、支付邏輯,按照業(yè)務(wù)的相似性,歸類到一個(gè)云函數(shù)里,這樣比較方便管理、排查問題以及邏輯的共享。甚至如果你的小程序的后臺(tái)邏輯不復(fù)雜,請(qǐng)求量不是特別大,完全可以在云函數(shù)里面做一個(gè)單一的微服務(wù),根據(jù)路由來處理任務(wù)。

比如這里就是傳統(tǒng)的云函數(shù)用法,一個(gè)云函數(shù)處理一個(gè)任務(wù),高度解耦。

第二幅架構(gòu)圖就是嘗試將請(qǐng)求歸類,一個(gè)云函數(shù)處理某一類的請(qǐng)求,比如有專門負(fù)責(zé)處理用戶的,或者專門處理支付的云函數(shù)。

最后一幅圖顯示這里只有一個(gè)云函數(shù),云函數(shù)里有一個(gè)分派任務(wù)的路由管理,將不同的任務(wù)分配給不同的本地函數(shù)處理。

云函數(shù)還有一種用法就是,可以作為中間路由,然后將 appid, openid,轉(zhuǎn)發(fā)給原有的服務(wù)。這里以騰訊相冊為例。具體怎么操作呢。比如騰訊相冊之前將評(píng)論功能接入了云開發(fā),但一些敏感操作,像刪除、編輯評(píng)論,這個(gè)請(qǐng)求發(fā)送到云函數(shù),然后云函數(shù)會(huì)將用戶信息轉(zhuǎn)發(fā)給相冊原本的后臺(tái),然后再將該用戶是否有權(quán)限返回來告訴云函數(shù),如果有權(quán)限,就在云函數(shù)里刪除評(píng)論。

最后,如果你們想在云函數(shù)調(diào)用 AI 服務(wù),還有一些微信相關(guān)的操作,可以使用我封裝的這兩個(gè) SDK。第一個(gè) image-node-sdk 覆蓋面比較全,覆蓋了全部的騰訊云智能圖像服務(wù),下面的 wx-js-utils,也提供了微信支付、模板消息、用戶信息獲取等幾個(gè)常用的接口。

可以關(guān)注我的微博或者 Github 獲取最新云開發(fā)的資訊或者技術(shù)資料。

我的微博

我的github

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/108501.html

相關(guān)文章

  • 初識(shí)函數(shù)

    摘要:云函數(shù),就是模式的具體實(shí)現(xiàn)。比如一個(gè)廣告微服務(wù),至少可以拆分出實(shí)時(shí)競價(jià)展示計(jì)數(shù)報(bào)表查詢等云函數(shù)。也就是說,云函數(shù)和微服務(wù)中的是同一粒度的。但不同于,每個(gè)云函數(shù)都是獨(dú)立部署,按需執(zhí)行。可以用適合用,需要衡量改造的代價(jià)云函數(shù)帶來的收益。 可訪問誰明浪子心-ShiYis Blog,獲得更好的閱讀體驗(yàn)。 什么是云函數(shù) 云函數(shù)提供了一種直接在云上運(yùn)行,無狀態(tài)的、短暫的、由事件觸發(fā)的代碼的能力。 ...

    charles_paul 評(píng)論0 收藏0
  • sublime text3 - 打造成小程開發(fā)神器

    Sublime Text:一款具有代碼高亮、語法提示、自動(dòng)完成且反應(yīng)快速的編輯器軟件,插件在手,界面可以很華麗,代碼可以很優(yōu)雅,操作可以更簡便,如果你是個(gè)喜歡折騰(喜新厭舊)的人,它絕對(duì)值得你擁有,花式玩轉(zhuǎn)代碼 最討厭廢話,直接上步驟 !!!!!!!!伸手黨福利 1. 安裝包管理器 打開網(wǎng)址 https://packagecontrol.io/installation 在其中找到 SUBLIM...

    summerpxy 評(píng)論0 收藏0
  • sublime text3 - 打造成小程開發(fā)神器

    Sublime Text:一款具有代碼高亮、語法提示、自動(dòng)完成且反應(yīng)快速的編輯器軟件,插件在手,界面可以很華麗,代碼可以很優(yōu)雅,操作可以更簡便,如果你是個(gè)喜歡折騰(喜新厭舊)的人,它絕對(duì)值得你擁有,花式玩轉(zhuǎn)代碼 最討厭廢話,直接上步驟 !!!!!!!!伸手黨福利 1. 安裝包管理器 打開網(wǎng)址 https://packagecontrol.io/installation 在其中找到 SUBLIM...

    dailybird 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<