哔哩哔哩淘宝小程序盲盒抽奖实践

目录

背景

名词解释

整体业务流程

技术实现

调用链路

云开发( Serverless )

云开发的限制

编写云函数

怎么拿到授权查询轻店铺用户订单

轻店铺云网关

数字签名网关

网关技术选型

Vert.x介绍

同步和异步

阻塞和非阻塞

I/O 多路复用

Netty

网关实现

反应式和非阻塞编程

总结



背景

为哔哩哔哩天猫旗舰店添加类似泡泡玛特盲盒抽奖的淘宝小程序,也叫淘宝轻店铺。

由于淘宝不允许直接在轻店铺中发起对第三方服务的请求,只能通过云函数转发,详见:淘宝轻店铺官方说明

轻店铺客户端调用哔哩哔哩服务要经过的链路:轻店铺云函数->轻店铺云服务->奇门→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:阿里的负载均衡。 轻店铺对应的奇门接口必须使用SLBSLB只支持阿里云(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 格式的对象。一个数据库可以有多个集合(相当于关系型数据中的表)。

文件存储服务支持文本、图片和其他由用户生成的内容存储到云端。开发者可以在小程序端和控制台使用云存储功能。图片上传成功后,系统会自动生成一个

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值