前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于微信小程序的云函数压测

基于微信小程序的云函数压测

原创
作者头像
cailynyu
修改2021-10-26 20:24:19
1.4K0
修改2021-10-26 20:24:19
举报

在某项目压测过程中,需对微信小程序云函数进行压测,但云函数是通过微信小程序调用而非http请求,无法通过压测工具模拟用户进行访问,那么如何对云函数进行压测呢?

何为云函数?

微信小程序官方文档是这么描述的:

云函数即在云端(服务器端)运行的函数。无需购买、搭建服务器,只需编写函数代码并部署到云端即可在小程序端调用,同时云函数之间也可互相调用。

我们看一个云函数的例子:

代码语言:txt
复制
// ...
exports.main = async (event, context) => {
  // ...
  return {
    sum: event.a + event.b
  }
}

上述代码实现的是:将传入的 a 和 b 相加并作为 sum 字段返回给调用端。

在小程序中调用这个云函数前,需要先将该云函数部署到云端。部署完成后,可以在小程序中调用该云函数:

代码语言:txt
复制
wx.cloud.callFunction({
  // 云函数名称
  name: 'add',
  // 传给云函数的参数
  data: {
    a: 1,
    b: 2,
  },
  success: function(res) {
    console.log(res.result.sum) // 3
  },
  fail: console.error
})

这样就成功创建了一个简单的云函数,并在小程序中成功调用。

如何实现云函数压测?

从上述部分可以看出,云函数是通过微信小程序调用的,而一般压测追求共通性,都会基于http请求进行压测。那云函数有没有可能通过http请求给到第三方(非微信小程序)去调用呢?

以下有三种方案可进行尝试:

方法一 根据appid和secret获取access_token去触发云函数

Step 1 :调用auth.getAccessToken接口,根据小程序唯一凭证appid和 小程序唯一凭证密钥secret获取小程序全局唯一后台接口调用凭据access_token( appid 和 secret 在小程序注册时即可获取)

请求地址:GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

请求参数:

返回值:

通过 postman 调用接口可获取access_token

详见:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/access-token/auth.getAccessToken.html

Step 2 :调用invokeCloudFunction接口, 以 https 方式请求云函数

请求地址:POST https://api.weixin.qq.com/tcb/invokecloudfunction?access_token=ACCESS_TOKEN&env=ENV&name=FUNCTION_NAME

请求参数:

返回值:

通过 postman 调用接口即可触发云函数

详见:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-http-api/functions/invokeCloudFunction.html

这种访问云函数的方法的卡点在于:

云开发的云函数是与微信登录鉴权的无缝整合的。当小程序端调用云函数时,云函数的传入参数中会被注入小程序端用户的 openid,而通过http api 方式触发云函数不包含用户信息,所以,这种方法不可行

详见:https://developers.weixin.qq.com/minigame/dev/wxcloud/guide/functions/userinfo.html

方法二 手动实现并发压测、计算结果的逻辑

压测分为压测端(以下简称A端),被压测服务(以下简称B端)。

过程实现待更新...

方法三 新建云函数的http触发路径

在腾讯云的云开发模块添加云函数的触发路径,获取云函数所对应的http请求URL,用于jmeter等压测工具配置脚本对云函数进行压测,具体步骤如下:

  1. 进入云开发CloudBase模块,点击云函数
  1. 以云函数/test为例,如果要对test云函数进行压测:请求参数:
  2. 进入http访问服务界面:
  3. 选择“点击跳转”
  4. 点击“新建”
  5. 新建所需压测云函数的触发路径:
  6. 建立完触发路径,点击对应的函数,即可在浏览器触发请求云函数:
  7. 复制浏览器地址栏的URL,即可获得云函数的http请求URL,用于jmeter脚本配置。

对比之下,采取方法三能较快实现云函数压测。

总结

若需要对云函数进行压测,可以在腾讯云云函数模块新增需压测云函数的触发路径,获取http请求实现对云函数的压测。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 何为云函数?
  • 如何实现云函数压测?
    • 方法一 根据appid和secret获取access_token去触发云函数
      • 方法二 手动实现并发压测、计算结果的逻辑
        • 方法三 新建云函数的http触发路径
        • 总结
        相关产品与服务
        云函数
        云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码。您只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。云函数是实时文件处理和数据处理等场景下理想的计算平台。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档