首页
免费后端云服务
关于
Search
1
小程序后端入门系列视频教程【一-微信开发工具介绍】
9,812 阅读
2
微信小程序三级联动之多列选择器
9,710 阅读
3
小程序开发免费后端之神秘利器分享
9,632 阅读
4
Golang-开发企业级资源权限管理【第一步表设计】-1
9,174 阅读
5
学会微信服务端开发第一步
9,049 阅读
日常记录
日常
随笔
Bmob后端云
从零开始学物联网
Serverless实战驾校小程序
心邮
Serverless
向量数据库
登录
Search
Typecho
累计撰写
124
篇文章
累计收到
22
条评论
首页
栏目
日常记录
日常
随笔
Bmob后端云
从零开始学物联网
Serverless实战驾校小程序
心邮
Serverless
向量数据库
页面
免费后端云服务
关于
搜索到
1
篇与
的结果
2024-02-09
Serverless_Faas_采集数据到小程序数据库
Serverless代表无服务器计算技术崛起,是微服务的一种表现形式。传统paas喜欢把FaaS(Function as a service) 就称之为Serverless,其实是不对的。单纯的Faas 能做的事是很有限的,一个微服务的应用没法完全依靠FaaS 运行起来, 必须得配合一些其他的服务,例如应用常见的文件、数据库、推送等服务。作者更认为 Faas+Baas\=Serverless ,Serverless架构是BaaS实现的进一步升级,让应用适用于更多的场景。目前国内推动Serverless 主要是阿里云、腾讯云、华为云等云厂商,大家看到国外 AWS Lamdba 做的比较成功,纷纷推出对应产品。虽然大家对Serverless 技术看法不一样,但大家对他的优点认同是一样的。免运维、低成本、弹性应对流量。最大的缺点与厂商平台绑定,这个是所有Serverless都没法避免的。即使厂商平台想不绑定也不行,所以选择信誉好、企业成立时间长的平台尤为重要。到今天(2018-05-23)为止我们看国内阿里云、腾讯云、华为云三大云厂商Serverless 已经逐渐成熟,但是还是没什么人用。什么原因? 我觉得是应用开发配套不够,要开发一个应用不是缺这个就是那个服务。目前这三家做的最好是阿里,他们的服务在不断完善中。这里我就拿阿里举例,其他2个厂商也差不多是这样。看下图 Faas 支持多功能首先推出Faas ,把他定位为 Serverless 解决应用开发中的问题。Faas 推出来后,不能只是输出个hello world! 或者说我这函数计算能力有多强吧这时推出函数图像处理服务,像裁剪、压缩、分发等文件处理, 这个是因为阿里本身有文件服务,带API,所以云函数整合API即可调用。顺便把公司内其他带API服务的产品,也整合,所以你看像敏感语音检测、对象存储(OSS)、转码、API网关等带API 调用服务也整合进来,这样Faas 就有了他的一些价值这样Faas 写的代码,可以操作一些服务。这些API服务,曾经我们都需要在自己应用或者自己服务端操作,如果能写到Faas ,可以一定程度减少工作量。大家可以看出,阿里这种他是从Faas发展出一些能力,慢慢增加,例如文件服务、网关服务、短信服务、云数据库服务、支付服务等等文件服务、网关服务、短信服务、云数据库服务、支付服务等等这些是什么? 这就是Baas 是为APP提供整个配套的Baas , 最终不管是否叫Baas平台,但从Faas 的发展,逐渐完成了把这些服务整合为一个Baas服务。 目前函数FaaS(Function as a service)服务大家都有了,Serverless是否实用,就看大家把应用后端开发相关服务,需要的BaaS(后端即服务:Backend as a Service)相关功能,整合的是否易用,如果做到了,那Serverless就达到了厂家所宣称的低成本开发 , 否则按照目前这三家企业Faas的技术使用成本,是超过我自己购买云主机用后端语言写我需要的业务的成本。这里我们看下Baas厂商是怎么做的 BaaS(后端即服务:Backend as a Service)+Faas(函数即服务 Function as a service)+SDK 形成一套应用服务。 有Baas+faas为什么还要一套SDK,没有SDK,一样是可以调用后端服务。这里举个例子。在小程序里面,同样是需要给一个客户发送一条验证码短信。不用SDK的代码:wx.request({ url: '[http://api.bmob.cn/sms](http://api.bmob.cn/sms)', //仅为示例,并非真实的接口地址 data: { phone: '1388888888' , }, header: { 'content-type': 'application/json' // 默认值 'appid':'1' }, success: function(res) { console.log("短信发送成功") } fail:function(res){ console.log("短信发送失败") } })使用SDK的代码Bmob.requestSmsCode(1388888888).then(function (res) { console.log('短信发送成功'); }) .catch(function (error) { console.log('短信发送失败'); });下面代码明显简单易读一些,更麻烦的是小程序是这样发起请求的,快应用是另外的,H5又是ajax的,他们虽然传的参数一样,但请求写法完全不一样。这时如果你是用SDK, 微信小程序、H5、支付宝小程序、快应用、游戏Cocos、混合App等平台都是这一份代码调用。没SDK需要关心平台变化,代码又得重新,大量节约开发周期。这就是SDK的价值,提升开发效率。也是 Serverless 必不可少的一环。大家都在讲Serverless效率更快,企业支付成本更低。成本我们先不谈,因为目前都是函数没运行不收费,虽然实用性还不够,前期有补贴,Faas相比docker实例暂时价格优势很明显。这个在未来还有待观察。我们讲Serverless 开发产品效率这个链接,是阿里Serverless的一个真实例子,10分钟构建微信小程序。[https://yq.aliyun.com/articles/435430?spm\=a2c4e.11153959.teamhomeleft.198.591748f2cvDStU](https://yq.aliyun.com/articles/435430?spm\=a2c4e.11153959.teamhomeleft.198.591748f2cvDStU)代码开源在[https://github.com/awesome-fc/wx-demo](https://github.com/awesome-fc/wx-demo)大家觉得可能吗,如果你能用Faas 10分钟对接好微信支付,已经是够快了。就这页代码[https://github.com/awesome-fc/wx-demo/blob/master/server/weixin/pay.py](https://github.com/awesome-fc/wx-demo/blob/master/server/weixin/pay.py) 10分钟能写出这一页代码,都是神一样的人物。何况还是构建整个微信小程序服务端。这个例子最大的作用是告诉大家,Faas 也可以做出你之前PHP、JSP、.net 等后端语言做出一样强的功能,并且我是无需自己去部署服务端运行环境, 弹性伸缩计算。 单纯从开发的角度上来说, 使用自己熟悉PHP或其他后端语言开发效率,目前肯定比Faas 开发效率高。什么情况会比自己写后端语言效率更高,这个我前面讲过,当整合整套Baas 服务后,个别功能服务,会比自己用后端语言写更高效率。这里我拿Bmob举个栗子:我要每小时采集一次IT之家接口数据,并且写入到数据库[https://apiquan.ithome.com/api/post?categoryid\=0\&type\=0\&orderTime\=1526981875455\&visistCount\=\&pageLength\=](https://apiquan.ithome.com/api/post?categoryid\=0\&type\=0\&orderTime\=1526981875455\&visistCount\=\&pageLength\=)Serverless Faas 服务代码:function onRequest(request, response, modules) { var http \= modules.oHttp; var url \= '[https://apiquan.ithome.com/api/post?categoryid\=0\&type\=0\&orderTime\=1526981875455\&visistCount\=\&pageLength\=](https://apiquan.ithome.com/api/post?categoryid\=0\&type\=0\&orderTime\=1526981875455\&visistCount\=\&pageLength\=)' http(url, function(error, res, body) { //结果转为对象类型 var results \=JSON.parse(body); var arr \= []; //循环更新数据 for (var i in results) { newdata \= { "method": "post", "path": "/1/classes/post", "body":results[i] }; arr.push(newdata) } //获取数组对象 var bat \= modules.oBatch; //批量操作 bat.exec({ "data": { "requests": arr } }, function (err, data) { //回调函数 response.end(data); return; }); response.end(JSON.stringify(results.length)); }); }Faas 在线写入这个代码,执行一次即可采集一次数据到数据库。当然这个方法也是支持链接访问,链接地址: curl -X GET [http://cloud.bmob.cn/8b46e79dd49843f6/caiji](http://cloud.bmob.cn/8b46e79dd49843f6/caiji) 或者SDK加密调用。定时任务也是完全没问题的 更多这篇教程,可以看这里[https://www.jianshu.com/p/e6ef296261c8](https://www.jianshu.com/p/e6ef296261c8) 。如果熟悉nodejs,几分钟写出来,绝对不成问题。虽然阿里不会直接面对中小团队去做SDK,或者小程序、快应用的Faas功能封装,但其他后端方案,跟随着时间推移,相信阿里的Faas 会整个更多后端开发的服务功能,形成好用一套Serverless 解决方案,目前能调用的服务有限,操作有些复杂,大家可以去尝尝鲜。
2024年02月09日
50 阅读
0 评论
0 点赞