目录
背景
为哔哩哔哩天猫旗舰店添加类似泡泡玛特盲盒抽奖的淘宝小程序,也叫淘宝轻店铺。
由于淘宝不允许直接在轻店铺中发起对第三方服务的请求,只能通过云函数转发,详见:淘宝轻店铺官方说明
轻店铺客户端调用哔哩哔哩服务要经过的链路:轻店铺云函数->轻店铺云服务->奇门→SLB→ECS→OpenApi→哔哩哔哩后端服务。轻店铺云服务必须使用轻店铺奇门,奇门必须使用阿里SLB,阿里SLB只支持阿里ECS。所以我们的方案必须使用到阿里云配套方案。
名词解释
轻店铺:淘宝APP小程序。轻店铺控制台: https://miniapp.open.taobao.com/#/
盲盒:盒子上没有标注,只有打开才会知道自己抽到了什么。
抽盒机:进行抽奖、发货、订单展示的应用。
奇门:淘宝小程序网关,轻店铺请求bilibili服务先通过奇门,https://open.taobao.com/doc.htm?docId=106847&docType=1 (对于非标准化的场景对接,提供网关基础能力,支持服务商做自己的服务开放). 奇门控制台:https://qimen.taobao.com
SLB:阿里的负载均衡。 轻店铺对应的奇门接口必须使用SLB,SLB只支持阿里云(ECS) 。轻店铺只支持内网SLB,配置阿里SLB的时候要选择免费的私网实例。云控制台:https://console.cloud.tmall.com/#/index
ECS:云主机,部署自定义服务,关联到SLB。 云控制台:https://console.cloud.tmall.com/#/index
RDS: 阿里云数据库,阿里云增值服务,里面聚合了哔哩哔哩淘宝店铺的所有订单。
云函数:轻店铺客户端通过云函数调用哔哩哔哩提供的第三方服务。 云函数控制台: https://console-snipcode.taobao.com/miniapp/index
Serverless 云开发:小程序前后端服务。
云服务: Serverless云函数服务端。
整体业务流程
轻店铺共有两种订单:抽奖次数订单、邮费订单。
由于淘宝不允许上架虚拟货币,抽奖次数通过抽盒次数订单购买转换,抽奖之后,根据抽盒次数订单地址,购买运费订单实现发货。
如图是抽盒机若干页面,通过购买抽奖次数订单转换为抽盒机会,消费抽盒机会实现盲盒抽奖,抽奖看到商品,选择商品后发货。淘宝抽奖次数订单转换为抽盒机抽奖次数采用了前端异步刷新,后端Job轮询方式。前端把抽奖用户Id传递给后端,后端根据用户Id实时拉取用户订单,转换为对应的次数,同时后台Job轮询订单实现兜底。
整体业务序列图
技术实现
调用链路
如下是购买抽奖订单转换为抽奖次数的一个请求链路,可以看到很长。
云开发( Serverless )
小程序基于淘宝小程序SDK,后台基于云Serverless。
云开发(Serverless) 提供以下三种功能:
数据存储服务是基于 MongoDB 托管在云端的数据库,数据以 JSON 格式存储。数据库中的每条记录都是一个 JSON 格式的对象。一个数据库可以有多个集合(相当于关系型数据中的表)。
文件存储服务支持文本、图片和其他由用户生成的内容存储到云端。开发者可以在小程序端和控制台使用云存储功能。图片上传成功后,系统会自动生成一个