初探nodejs,Serverless第二次小小实战

初探nodejs,Serverless第二次小小实战


这两年前端什么最火?也许是React全家桶,Flutter,还有各种小程序的框架等等。但是有一个技术,他好像看不见摸不着,但每个厂商都说自己在做在布局,给予天花乱坠的评价——他就是Serverless。而我们不在大厂工作,该如何接触这项技术呢?答案其实就在身边,不管是腾讯云还是阿里云,都有自己的函数服务,而且基本两年前就开始布局了。这个函数服务本质上就是Serverless。这两天萌生了一个念头,就是以后我的后端都用nodejs来写,Serverless+传统服务混合,而且要加上BFF层做数据清洗之类的。于是昨天开始打开看看阿里云函数计算的文档。很好奇,阿里云的Serverless云函数怎么这么多免费余额?阿里的财大气粗真的令人发指。


image.png


每月100万次免费调用,400000秒的免费执行时长,这相当于什么呢?

经过我的实际测试,通过账号密码登录一次教务系统需要1次请求、约200ms的处理时间。也就是说在免费额度内,一个月可以有100万次请求。。。

这还没完。剩下这么多免费的时间呢?要是请求次数超出100万了怎么办?收费贵不贵?

答案再次亮瞎我的双眼:

image.png
image.png

这里要解释一下,函数计算可以自定义计算资源配置的高低,主要体现在内存大小上。一般的小操作内存128Mb就足够了,在后付费函数资源中128Mb内存对应的实例算力为1vCPU。(实测登录教务只消耗30Mb左右的内存)


从上图我们可以看到具体的价格:

  • 1.33元/百万次请求
  • 按算力为1vCPU计算,每秒价格为0.00016662元


简直是不要钱的感觉!!!

于是,抱着学(bai)习(piao)的心态,我第二次尝试了函数计算服务,尝试Serverless


第一次:莽汉上路


这是一个音乐网站,我在上学期其中完成了前端部分,刚放寒假时完成了后端部分。目前只能通过ip访问到:音乐网站

这是我第一个认认真真一笔一划从设计到实现从html到css到js全部手码的网站(背景跳舞的小人除外,copy自codepen.io)。可以说在这个音乐网站之前,我做页面都是东拼一块西拼一块,一个页面居然能同时用到jQuery、vue、Angular还有BootStrap,想想有多么不忍直视哈哈哈。

自从上学期期中加入明理苑后,我渐渐变得正经了,开始意识到自己之前写的代码是有多么像一坨X。这个音乐网站就是刚进入明理苑的时候做的。这个网站的后台,用到的就是阿里云函数计算,技术栈选择了python。(为毛python?因为当时我只会这个)

服务的逻辑很简单,我只做了两个接口。一个是获取音乐资源的,一个是搜索音乐资源的。处理上和用python寻常的WSGI框架写起来差不多,只不过在数据接收和response的时候不太一样。这里简单介绍一下函数服务上python的API入口(官方文档

image.png

这就是一个很简单的接口了。其中request_body对应的是请求内容,‘世界再见’ 是返回值。
感兴趣的同学可以上手试一下,因为是直接在云上不需要部署,所以成就感来的很快,遇到问题文档里也基本都能解决。
**
但我的问题很快就来了。可能因为是第一次用,很多地方都做的不好,导致这两个接口貌似问题很大,偶尔会有半天没反应或者反应很慢的情况(不清楚是函数服务的问题还是我用python写的问题)。于是这次我灵机一动,为什么不用nodejs写一个呢?正好这段时间尝试了React、Taro、Remax甚至React Native,通过蚂蚁金服体验技术部的博文了解了太多前端的前世今生、当下红人和发展方向。于是我做出了一个决定:来吧nodejs。


第二次:体会到看文档的快乐

吹一波阿里的文档,语言清晰表达准确调理流畅。。。

好了回归正题,我这次的目的是做一个登录学校教务的接口。通过小程序的https请求给自己写的接口,我的接口拿着登录信息去找学校官网的接口,把登录结果打包返回给小程序。这和HFUTonline的流程也是一样的,只不过我省略了很多,仅仅简单实现了功能。接下来是我大体的实现流程。

前端部分我是用Remax写的(一个未来也许会替代Taro的框架),前一天就把一个最简单的登录页面做好了。长这样:

image.png

直接用weui装的,还没做什么设计(Remax里调用weui我可是花了不少功夫)

前端的架子有了,那就差接口了。小程序必需要https,正好我在阿里云有一个备案的域名,于是花了半节离散数学课的时间搞定了SSL证书(第一次弄,遇到一些问题,不过阿里云的服务还有文档满分)。

第一次整函数服务的时候,我是直接在阿里云函数服务的控制台上写代码,然后做测试。这次我仔细看了文档,给电脑上上了docker、vscode上了插件,按照官方文档一步一步实现了本地开发环境。现在我的模式是代码在vscode上写,然后可以一键上传到云上,测试代码打开控制台直接跑就行,还是挺方便的。主要参考链接:使用FUN创建函数

接下来就是写javascript代码啦。用到了一个request包,让我震惊的是这个包的操作简单程度和python的requests有得一拼。在异步这块卡了挺久,最后把request包换成了request-promise包。。。因为promise对象这块我相对熟一点。基础还是太差了哈哈哈。下面是请求学校教务系统的核心代码:

image.png

另外nodejs的入口函数其实和python差不多,跟着文档快速搞定。接下来就是格式化两边request的数据,把登录异常、请求异常这边大概弄了一下。代码略长就不展示了。(nodejs入口函数文档

中间遇到了不少问题,因为是第一次尝试nodejs,对报错等等都不是很熟。不过有python web的一点基础还是有用的,很快这个接口就正常工作了。对自己这一天的效率很满意,就趁热记录一下啦。最后展示一下小程序最终正常工作的样子:

image.png

顺便提一下,在vscode上写代码、写完一键上传到云端测试的开发模式太赞了,感觉生产力不错。具体代码已经上传到我的Github仓库了。路漫漫其修远兮,nodejs还有Serverless也许是个不错的选择。

**

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值