< 返回版块

johnmave126 发表于 2021-02-02 13:54

Tags:cloud,runtime

repo地址

Github: https://github.com/johnmave126/tencent_scf

出发点

想给bilibili-helper写个小代理,部署在国内的云上。发现腾讯云的云函数有免费quota就去试用了一下。发现没有Rust就只能先用nodejs写了一个,但是浑身不得劲儿。想到腾讯的scf无非就是AWS Lambda改了个名,而AWS Lambda是有运行时的。那当然就是掏出vim开始造轮子...

lambda_runtime的不同之处

  • 去掉了整套async系统。云函数这种东西本来就是同步的,在一个请求完成之前是不会接受下一个请求的,并行靠的是启动很多实例。如果用户真的需要异步,并发,完全可以自己套一个tokio/async_std::block_on。因此依赖变得轻量了一些。
  • 由于去掉了async系统,和云进行网络请求用的是ureq而不是hyper。同样是减轻了依赖的大小。
  • 加入了panic处理,使用了catch_unwind来捕获用户函数运行的panic。好处是保证了用户函数panic后一定会立即通知云,而不是等到超时。大多数纯函数自然是UnwindSafe的,这部分函数panic以后运行时保证不崩溃,可以减少重复启动实例的初始化开销。
  • 原生支持腾讯云上的触发器。目前只支持了Web API,以后会加入全套支持。

其他

  • 例子和测试目前还有点少,慢慢加
  • 最后当然是写了代理,放在了examples里,和node版本比,大大大量降低了内存开销。运行速度由于主要还是网络瓶颈,所以暂时看不出来。之后搞个计算密集的例子来对比一下。
  • 欢迎试用,提issue,搞pr

Ext Link: https://github.com/johnmave126/tencent_scf

评论区

写评论
Mike Tang 2021-02-02 15:56

膜~

1 共 1 条评论, 1 页