介绍
长连接服务广泛应用于消息提醒、即时通讯、推送通知、直播、游戏等场景。本文将介绍云开发数据库的长连接服务——实时数据推送,并利用它来构建更加生动的小程序。
什么是实时数据推送?
通过云开发数据库的实时数据推送能力,小程序可以实时监控数据库变化,即支持根据开发者给出的查询语句进行监控。每当查询语句的结果发生变化时,小程序都会收到包含推送更新并响应实时数据变化。
具体示例如下: 客户端1修改数据,满足监控条件。当数据库收到更改时,客户端 1 所做的更改将被推送到其他客户端。
云开发提供哪些能力?
构建自建长连接服务需要设计复杂的系统架构,并且伴随着大量的开发工作,开发成本较高。当长连接业务开发并投入使用后,不可避免地需要进行额外的维护工作。基础设施的维护、服务安全等也需要大量的时间和人力成本。
此时,开发者就可以对小程序进行实际的开发工作了。接入微信认证系统获取用户登录状态、使用微信开放接口等,基于长连接服务实现具体业务逻辑。
具体来说,使用实时数据推送有以下优点:
使用实时数据推送,无需通过编写服务器端代码来构建完整的服务,降低了开发成本,也降低了开发人员专注于核心业务设计和开发的门槛。
使用实时数据推送不需要接入微信认证系统。天然集成了微信原生能力,与微信登录无缝集成。开箱即用,无需认证即可获取微信用户信息,使用微信开放接口。减少了开发者对认证功能的开发和维护工作。
使用实时数据推送,消除了维护基础设施、安全管理等问题,降低了维护成本。
实时数据推送总体架构
流行一句话:“世上没有安静的时光,只是有人替你负重前行”。上面提到的零开发、零维护、无需认证等实时数据推送的天然优势,那么这些“安静的岁月”背后是谁有能力为他们“挑起重担”呢?我们来揭秘实时数据推送技术架构。
请求从小程序经过协议到达接入层,再到达安全验证层进行权限验证。安全验证提供简单的ACL标签,同时支持先进的数据库安全规则语法,实现精细化的访问权限控制,可根据实际业务情况进行选择。
对于路由层和监听推送层,下面将从可用性、可靠性和性能方面进行介绍:
对于一项服务来说,其可用性是首要考虑的问题。首先,当部分节点出现问题时,自动剔除异常节点,保证服务正常可用。实时数据推送路由层利用 Tars 的熔断和自动淘汰机制来筛选异常节点。监控推送层采用ETCD实时心跳检测。 2秒内报告心跳,6秒内检测到异常。立即执行相关处理逻辑,自动排除异常节点。其次,采用一致性哈希方案来提高性能并保证可用性。每次有长轮询请求时,通过一致性哈希算法生成路由层到监听推送层的请求的对应关系,从而使监听推送层实现负载均衡。最后,相同的条件对应相同的条件,以提高性能。
从小程序到实时数据推送服务,服务都是长轮询、无状态的,保证了业务的可靠性。增加事件ID可以保证推送事件按顺序接收。另外,事件在本地进行两级缓存,保证数据安全。支持客户端断线3分钟不丢失事件,断线重连后仍能按顺序接收事件。
在实时数据推送服务的性能方面,云开发做了一些优化工作:
(1)利用树形数据结构将条件保存为索引,优化监听条件匹配索引算法。
(2)对于变更事件的匹配,采用多协程并发管道:匹配事件、推送事件、缓存事件。
(3)当短时间内产生多个满足监听条件的事件时,会将多个事件进行合并,然后推送到客户端。多个推送事件所需的网络时间减少,性能显着提升。
简单易用的API和丰富的应用场景,实时数据推送为开发者使用提供便捷的API。开发者可以根据实际场景,通过指定集合、查询条件、排序方式、限制返回次数等方式实现业务逻辑。更详细的说明请参考微信开放文档-云开发实时数据推送。文档链接:
实时数据推送可以应用于很多实际业务场景,例如即时通讯、状态同步、团队协作等。无论是小程序还是小游戏,都可以利用云数据库的实时数据推送来实现相关场景的实际业务功能。
即时通讯
1.小程序:直播间、弹幕等。
2.小游戏:服务器聊天、房间聊天、私信功能、动态消息等。
成语偷菜游戏是一个经典的即时通讯客户案例。它利用实时数据推送,实现偷菜动态消息提醒。
状态同步
1.小程序:聊天提示状态好友正在打字、好友1V1问答PK等。
2、小游戏:五子棋等。
微信读书日报小程序的问答PK环节也采用实时数据推送,即时同步竞猜游戏中双方答案的倒计时、分数、成绩等状态。
团队合作
1. 在线共享文档
2. 项目管理协作
结论
希望以上内容能够帮助开发者更好的应用实时数据推送,让小程序变得更好。最后,欢迎关注云开发公众号,公众号将不定期推送云开发实践的最新能力和优质技术文章。