如何使用雲開發數據庫構建更生動的小程序?

長連接服務被廣泛應用在消息提醒、即時通訊、推送、直播彈幕、遊戲等場景。本篇文章將介紹雲開發數據庫的長連接服務 - 實時數據推送,使用它來構建更生動的小程序。

##什麼是實時數據推送?

通過雲開發數據庫的實時數據推送能力,小程序端可實時監聽數據庫變更,即它支持根據開發者給定的查詢語句進行監聽,每當查詢語句的結果發生變化時,小程序端就會收到包含更新內容的推送,並對實時數據變化做出響應。

具體示例如下圖:客戶端1修改數據且符合監聽條件,當數據庫收到變更時,會將客戶端1的變更內容推送到其它客戶端。

提供哪些能力來幫助開發者構建小程序

自建長連接服務,需要設計繁雜的系統架構,並且有大量的開發工作,使得開發成本較高。當長連接服務開發完成投入使用後,將不可避免的會帶來額外的維護工作。對於基礎設施、服務安全等維護也需要耗費大量的時間成本和人力成本。此時,開發者可以進行小程序的實際開發工作。接入微信鑑權體系來獲取用戶登錄態、使用微信開放接口等,基於長連接服務來實現具體的業務邏輯。

使用實時數據推送有如下優勢:

  1. 零開發

使用實時數據推送無需通過編寫服務端代碼來自建完整服務,降低了開發成本和開發者的使用門檻,可以將精力聚焦在覈心業務的設計與開發上。

  1. 免鑑權

使用實時數據推送無需接入微信鑑權體系,天然集成了原生微信能力,與微信的登錄無縫整合,開箱即用,免鑑權獲取微信用戶信息、使用微信開放接口。減少了開發者對鑑權功能的開發和維護工作。

  1. 零維護

使用實時數據推送無需維護基礎設施、安全管理等問題,降低維護成本。

整體架構

大家都聽過網上段子說哪有什麼歲月靜好,只是有人替你負重前行。我們剛纔瞭解了實時數據推送的零開發、零維護、免鑑權等天然優勢,那麼這些能力歲月靜好的背後是誰替它們負重前行呢?讓我們來揭開實時數據推送技術架構的神祕面紗。

請求從小程序到接入層經過的是WebSocket協議,再到安全校驗層進行權限驗證。安全校驗提供簡單的ACL標記,也支持高級的數據庫安全規則語法實現精細化訪問權限控制,可以根據業務實際情況進行選擇。對於路由層以及監聽推送層,將從可用性、可靠性和性能方面來進行介紹。

可用性

對於服務首當其衝是可用性。首先是異常節點自動剔除來確保在部分節點出現問題時,服務正常可用。實時數據推送路由層通過Tars的熔斷和自動剔除機制來屏蔽掉異常節點。監聽推送層使用ETCD實時心跳檢測,2秒上報心跳、6秒檢測到異常,立即執行相關處理邏輯來實現異常節點自動剔除。其次通過一致性哈希方案提升性能、保證可用性。每次長輪詢請求都有QueryID,請求從路由層到監聽推送層的對應關係由一致性哈希生成算法,使得監聽推送層負載均衡。最後還有相同條件對應相同的QueryID來提高性能。

可靠性

從小程序到實時數據推送服務是長輪詢且無狀態,爲業務可靠提供保駕護航。事件自增ID可以保證收到推送事件是有序的。此外,對事件進行了本地和Redis的兩級緩存來確保數據安全。支持客戶端掉線3分鐘,事件不丟失,斷線重連後仍能正常按序收到事件。

高性能

實時數據推送服務的性能方面,我們做了一些優化工作:

  1. 使用樹的數據結構來保存watch條件作爲索引,對監聽條件匹配索引算法進行優化。
  2. 對於變更事件的匹配,採用多協程併發流水線:匹配事件、推送事件、緩存事件。
  3. 當短時間內有多條符合監聽條件的事件產生時,多個事件將會在合併後再推送到客戶端。減少了多次推送事件的請求網絡耗時,性能提升明顯。

簡單易用的API

實時數據推送提供了便捷的API供使用。開發者可根據實際場景,按指定集合、查詢條件、排序方式、限制返回數量等來實現業務邏輯。更詳細的說明可參考微信開放文檔 - 雲開發實時數據推送。

豐富的應用場景

實時數據推送可以應用到許多實際業務場景中,如即時通信、狀態同步以及團隊協作等方面。無論是小程序或小遊戲都可以使用雲數據庫的實時數據推送來實現相關場景的實際業務功能。

  1. 即時通信
    a. 小程序:直播聊天室、彈幕等
    b. 小遊戲:區服聊天、房間聊天、私信功能、動態消息等

成語偷菜小遊戲就是一個經典的即時通信客戶案例,它利用實時數據推送實現了偷菜的動態消息提醒。

下圖是在線聊天室Demo演示,可在微信開發者工具中開通雲開發體驗。

  1. 狀態同步

    a. 小程序:聊天提示狀態好友正在輸入、好友1V1問答PK等
    b. 小遊戲:五子棋等

微信讀書每日一答小程序的問答PK環節也使用到了實時數據推送,在對答遊戲中即時同步雙方答題的倒計時、分數、結果等狀態。

下圖是使用實時數據推送實現的五子棋小遊戲,推送服務主要用於同步黑白兩手棋子的狀態。

  1. 團隊協作

    a. 在線共享文檔
    b. 項目管理協作

結語

以上是給大家分享的內容,希望能幫助到各位開發者們更好地應用實時數據推送,爲小程序錦上添花。最後,歡迎關注雲開發公衆號,不定時推送最新功能以及雲開發實戰高質量技術文章。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章