2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

如何使用云开发数据库构建更生动的小程序?

  • 2020-07-13
  • 本文字数:1941 字

    阅读完需:约 6 分钟

如何使用云开发数据库构建更生动的小程序?

长连接服务被广泛应用在消息提醒、即时通讯、推送、直播弹幕、游戏等场景。本篇文章将介绍云开发数据库的长连接服务 - 实时数据推送,使用它来构建更生动的小程序。

什么是实时数据推送?

通过云开发数据库的实时数据推送能力,小程序端可实时监听数据库变更,即它支持根据开发者给定的查询语句进行监听,每当查询语句的结果发生变化时,小程序端就会收到包含更新内容的推送,并对实时数据变化做出响应。


具体示例如下图:客户端 1 修改数据且符合监听条件,当数据库收到变更时,会将客户端 1 的变更内容推送到其它客户端。


提供哪些能力来帮助开发者构建小程序

自建长连接服务,需要设计繁杂的系统架构,并且有大量的开发工作,使得开发成本较高。当长连接服务开发完成投入使用后,将不可避免的会带来额外的维护工作。对于基础设施、服务安全等维护也需要耗费大量的时间成本和人力成本。此时,开发者可以进行小程序的实际开发工作。接入微信鉴权体系来获取用户登录态、使用微信开放接口等,基于长连接服务来实现具体的业务逻辑。


使用实时数据推送有如下优势:


  1. 零开发


使用实时数据推送无需通过编写服务端代码来自建完整服务,降低了开发成本和开发者的使用门槛,可以将精力聚焦在核心业务的设计与开发上。


  1. 免鉴权


使用实时数据推送无需接入微信鉴权体系,天然集成了原生微信能力,与微信的登录无缝整合,开箱即用,免鉴权获取微信用户信息、使用微信开放接口。减少了开发者对鉴权功能的开发和维护工作。


  1. 零维护


使用实时数据推送无需维护基础设施、安全管理等问题,降低维护成本。

整体架构

大家都听过网上段子说哪有什么岁月静好,只是有人替你负重前行。我们刚才了解了实时数据推送的零开发、零维护、免鉴权等天然优势,那么这些能力岁月静好的背后是谁替它们负重前行呢?让我们来揭开实时数据推送技术架构的神秘面纱。



请求从小程序到接入层经过的是 WebSocket 协议,再到安全校验层进行权限验证。安全校验提供简单的 ACL 标记,也支持高级的数据库安全规则语法实现精细化访问权限控制,可以根据业务实际情况进行选择。对于路由层以及监听推送层,将从可用性、可靠性和性能方面来进行介绍。

可用性

对于服务首当其冲是可用性。首先是异常节点自动剔除来确保在部分节点出现问题时,服务正常可用。实时数据推送路由层通过 Tars 的熔断和自动剔除机制来屏蔽掉异常节点。监听推送层使用 ETCD 实时心跳检测,2 秒上报心跳、6 秒检测到异常,立即执行相关处理逻辑来实现异常节点自动剔除。其次通过一致性哈希方案提升性能、保证可用性。每次长轮询请求都有 QueryID,请求从路由层到监听推送层的对应关系由一致性哈希生成算法,使得监听推送层负载均衡。最后还有相同条件对应相同的 QueryID 来提高性能。

可靠性

从小程序到实时数据推送服务是长轮询且无状态,为业务可靠提供保驾护航。事件自增 ID 可以保证收到推送事件是有序的。此外,对事件进行了本地和 Redis 的两级缓存来确保数据安全。支持客户端掉线 3 分钟,事件不丢失,断线重连后仍能正常按序收到事件。

高性能

实时数据推送服务的性能方面,我们做了一些优化工作:


  1. 使用树的数据结构来保存 watch 条件作为索引,对监听条件匹配索引算法进行优化。

  2. 对于变更事件的匹配,采用多协程并发流水线:匹配事件、推送事件、缓存事件。

  3. 当短时间内有多条符合监听条件的事件产生时,多个事件将会在合并后再推送到客户端。减少了多次推送事件的请求网络耗时,性能提升明显。

简单易用的 API

实时数据推送提供了便捷的 API 供使用。开发者可根据实际场景,按指定集合、查询条件、排序方式、限制返回数量等来实现业务逻辑。更详细的说明可参考微信开放文档 - 云开发实时数据推送。


丰富的应用场景

实时数据推送可以应用到许多实际业务场景中,如即时通信、状态同步以及团队协作等方面。无论是小程序或小游戏都可以使用云数据库的实时数据推送来实现相关场景的实际业务功能。


  1. 即时通信

  2. a. 小程序:直播聊天室、弹幕等

  3. b. 小游戏:区服聊天、房间聊天、私信功能、动态消息等


成语偷菜小游戏就是一个经典的即时通信客户案例,它利用实时数据推送实现了偷菜的动态消息提醒。



下图是在线聊天室 Demo 演示,可在微信开发者工具中开通云开发体验。



  1. 状态同步

  2. a. 小程序:聊天提示状态好友正在输入、好友 1V1 问答 PK 等

  3. b. 小游戏:五子棋等


微信读书每日一答小程序的问答 PK 环节也使用到了实时数据推送,在对答游戏中即时同步双方答题的倒计时、分数、结果等状态。



下图是使用实时数据推送实现的五子棋小游戏,推送服务主要用于同步黑白两手棋子的状态。



  1. 团队协作

  2. a. 在线共享文档

  3. b. 项目管理协作

结语

以上是给大家分享的内容,希望能帮助到各位开发者们更好地应用实时数据推送,为小程序锦上添花。最后,欢迎关注云开发公众号,不定时推送最新功能以及云开发实战高质量技术文章。


2020-07-13 10:191931

评论 1 条评论

发布
用户头像
类似rethinkdb的做法?
2020-07-13 11:32
回复
没有更多了
发现更多内容

周末见!RTE Open Day@AGI Playground 游园攻略

声网

Python 抽奖程序限定次数详解

霍格沃兹测试开发学社

开个技术外挂|数字孪生技术如何成为美洲杯帆船赛成功的关键?

Altair RapidMiner

人工智能 数据分析 数字孪生 仿真

搭建数据分析系统 Grafana 详细指南

霍格沃兹测试开发学社

如何制定测试团队的绩效考核

老张

团队管理 OKR KPI 绩效考核

云桌面系统的运用优势有哪些?

青椒云云电脑

云桌面 云桌面系统 虚拟云桌面系统

图形工作站的应用,相比传统工作站优势有哪些?

青椒云云电脑

图形工作站 移动图形工作站

Python 遍历文件每一行判断是否只有一个换行符详解

霍格沃兹测试开发学社

搭建服务端性能监控系统 Prometheus 详细指南

霍格沃兹测试开发学社

如何解决虚拟仿真教学中的设备限制和卡顿问题?|点量云流技术解决方案

点量实时云渲染

WebGL 虚拟仿真 实时云渲染 实时渲染云虚拟仿真 虚拟仿真教学

性能分析系统级别指标详解:IO、CPU、内存和网络

霍格沃兹测试开发学社

华为云开源邀您共赴华为开发者大会2024,精彩议题抢先看

华为云开源

华为云开源 华为开发者大会2024

PikiwiDB(Pika) 混合存储之批量查询

apache/dubbo-go

redis Pika

深入解析Nginx配置文件

霍格沃兹测试开发学社

云桌面GPU技术方案

青椒云云电脑

云桌面 云桌面方案

律所优选管理软件排名:Alpha法律智能操作系统领先行业

科技汇

什么是iPaaS?

谷云科技RestCloud

数字化转型 数据集成 ipaas

使用Playwright进行键盘操作的详细指南

霍格沃兹测试开发学社

如何使用云开发数据库构建更生动的小程序?_服务革新_刘国玮_InfoQ精选文章