首页
免费后端云服务
关于
推荐
免费图床源码
Search
1
小程序后端入门系列视频教程【一-微信开发工具介绍】
9,722 阅读
2
微信小程序三级联动之多列选择器
9,606 阅读
3
小程序开发免费后端之神秘利器分享
9,536 阅读
4
Golang-开发企业级资源权限管理【第一步表设计】-1
9,081 阅读
5
学会微信服务端开发第一步
8,979 阅读
日常记录
日常
随笔
Bmob后端云
从零开始学物联网
Serverless实战驾校小程序
心邮
Serverless
向量数据库
登录
Search
Magic
累计撰写
124
篇文章
累计收到
71
条评论
首页
栏目
日常记录
日常
随笔
Bmob后端云
从零开始学物联网
Serverless实战驾校小程序
心邮
Serverless
向量数据库
页面
免费后端云服务
关于
推荐
免费图床源码
搜索到
124
篇与
的结果
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日
7 阅读
0 评论
0 点赞
2023-11-14
Serverless架构小程序云实现原理分析
【Serverless架构】小程序云实现原理分析 小程序基于最新的Serverless架构,无论官方称之为什么,特征都属于Baas或者Serverless服务。整个小程序云服务,包含了,客户端嵌入SDK,封装云函数上传命令,服务端主要在Faas云函数内部封装了openid、文件存储请求全局系统对象,方便大家请求微信与腾讯云接口, 云函数数据库操作,沿用了客户端SDK,由于JavaScript跨平台特性,js代码可以直接放到node里面执行,云函数里的wx-server-sdk,其实就是客户端的SDK。 客户端wx.cloud, 相当于微信开发工具写入了全局变量wx.cloud\=wx-server-sdk库。我们从客户端到服务端的顺序分析客户端-》中间层-》数据库1.客户端SDK 目前客户端大家是不需要自己引入的,直接写入开发工具对象,只要微信基础库版本到达 2.2.3 或以上的就可以使用其实还有个服务端SDK,在云函数。看不见的wx.cloud对象,cloud对象,是一个js SDK,通过jssdk赋值给全局对象, 由于云函数的数据库操作方法写法与客户端一致,我们可以猜测,客户端SDK,与云函数的wx-server-sdk库 是同一个库。我们对比下2者的代码客户端 (小程序开发工具)db.collection('todos').doc('<some-todo-id>').get().then(res => { // res.data 包含该记录的数据 console.log(res.data) }) 服务端 (Faas)const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() exports.main = async (event, context) => { try { return await db.collection('todos').doc('<some-todo-id>').get() } catch(e) { console.error(e) } } 核心代码客户端 db.collection('todos').doc('<some-todo-id>').get() 服务端 return await db.collection('todos').doc('<some-todo-id>').get() 可以看到2者操作是相同的,只不过服务端用了es7的await异步对象,可以return 拿到结果集合。而客户端使用了 Promise风格,如果反编译微信开发工具,在wx.cloud对象里面,一定是可以找到大量与wx-server-sdk一模一样的代码。2. 中间层封装 当我们开发登陆的时候,第一步需要拿到openid,客户端会请求云函数,云函数请求微信接口,最终返回openid,可我们看到云函数里面并不需要我们去请求微信的接口,而是直接event.userInfo.openId返回了openid。看代码exports.main = (event, context) => { console.log(event) console.log(context) // 可执行其他自定义逻辑 // console.log 的内容可以在云开发云函数调用日志查看 return { openid: event.userInfo.openId, } } 这里帮我们省略了很多代码,原本的流程是需要通过客户端code换区openid接口地址:https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code 抓包看下,测试出来,只要访问这个地址,即可访问openidhttps://servicewechat.com/wxa-qbase/qbasecheckresult?event_id=HKnup_IMP8wWCsHwx0UyYsJMU0YPQm7u8eERg7Ll0wGB9CMSBtppMnu4P6Ytr6DFG2Vl_EGZS3nyEBw15OPCERLEi4Ok0HWC6g 返回结果{ "base_resp": { "ret": 0 }, "status": 1, "content": "{\"openid\":\"oWPQH0WVoCkpiw3ErLYAIVnudjfA\"}", "service_errcode": 0, "service_errmsg": "", "func_req_id": "0f9c7a3f-b63c-11e8-b8ac-525400e8849e" }可以看到, 只要带一个参数event\_id,就可以拿到openid, 云函数return的内容,会在返回的content字段表现。在请求从客户端,到达服务器之后,服务器获取到openid,记得这个openid比较特殊里有个情况是, 任何请求到服务器,都会获取openid, 第一次会从微信接口获取,写入到内存,第二次会直接从内存取。 这里用redis的情况可能性比较大。第二次请求直接取redis 值就可以了。 取到后写入event.userInfo对象。所以在任何云函数里,只要event.userInfo.openId,你都可以拿到openid。授权后,event.userInfo还包含头像等其他信息。其他云函数的操作,都封装在wx-server-sdk 这个代码,大家可以在每个云函数的依赖node\_modules目录找到, 大家开发时遇到错误,也不要急,这里有个看错误技巧。以 6 开始的是由微信服务器侧产生的错误码 以 5 开始的是由腾讯云侧产生的错误码 以 4 开始的是本地 SDK 产生的错误3.数据库 文档很多地方使用了,文档,集合概念,操作数据库传入参数也是mongodb的风格,很明显的使用了非关系类型,Mongodb数据库。 每个应用一个Collection。 云数据相当于Mongodb UI控制台。连显示结构也没改。相比之前的Wafer套件,可以说这次是一个全新的解决思路。跟Bmob一样实现一个人全栈小程序开发,唯一效率比Bmob低的是,这个人必须掌握nodejs,Bmob的服务如果做小程序,相比小程序云,大部分需求是不需要掌握nodejs。总结: 整套可以理解为mongodb+Faas的结合,封装了数据存储操作SDK。 与阿里的Serverless服务一样,以Faas为核心, Faas目前内置只封装了openid,去掉了定时任务,网关等功能,任何功能自己通过faas去实现,但只限定小程序内调用。相比阿里的Serverless 更贴地气,因为这次有了客户端SDK,再加云函数SDK,让Serverless找了到落地的可能。最后脑洞问题:能否自己用阿里云Serverless 搭建一个小程序云?答案是可以的mongodb+Faas目前阿里的都有,并且目前阿里Faas功能更强大,唯一差个小程序客户端操作数据库的SDK。未来有机会,可以出个教程如何使用Faas实现一套自己的小程序-云
2023年11月14日
12 阅读
0 评论
0 点赞
2023-11-08
快应用使用教程
快应用使用教程Bmob 简介提供完整的后端解决方案,我们提供轻量级的SDK开发包,让开发者以最小的配置最快的速度,开发自己所想的应用。账号信息网址:https://www.bmob.cn账号:zhongguovu@gmail.com密码:123456应用信息应用名称:快应用演示Application ID:069d5548a354cc9eff9161fdbdd126d7REST API Key:e9c907e7bcd09680e3621dc7afed1386开发文档地址https://github.com/bmob/hydrogen-js-sdk/开源SDK地址https://github.com/bmob/hydrogen-js-sdk/压缩SDK下载地址https://github.com/bmob/hydrogen-js-sdk/blob/master/dist/Bmob-1.6.1.min.hap.js基于实现账号密码登陆Demo 地址运行效果:https://github.com/bmob/quick-app核心代码文件:quick-app/src/Demo/index.ux//引入SDK import Bmob from '../assets/js/Bmob-hap.1.1.1.min.js' //初始化 Bmob.initialize( '39ee83f92ff3a195130596a4eaec5ddf', 'a1223fca87f5d229953817f5c2493446' ) //点击登陆执行 Bmob.User.login(this.u, this.p).then(res => { if (res.code) { console.log('登陆失败', JSON.stringify(res)) return } console.log('登陆成功,并跳转...') router.push({ uri: '/DemoDetail' }) }).catch(err => { console.log('登陆失败', err) });快速测试为了大家快速测试,上面测试账号帮大家建好应用(快应用)与表(test),大家也可以用上面账号自己建立实现功能输出表所有数据准备操作:打开华为快应用开发工具,新建一个项目,下载SDKBmob-1.6.1.min.hap.js。步骤一:引入SDK//这里目录按照自己实际目录 import Bmob from '../assets/js/Bmob-1.6.1.min.hap.js'步骤二:初始化Bmob.initialize("069d5548a354cc9eff9161fdbdd126d7", "e9c907e7bcd09680e3621dc7afed1386");步骤三:输出Test表,title与content字段const query = Bmob.Query("test"); query.find().then(res => { console.log(res) });按照这三部操作即可看到效果,更多的数据库增删改查,文件上传等等操作,请看文档,有任何问题,请联系我,微信:zhongguovuhttps://bmob.github.io/hydrogen-js-sdk/
2023年11月08日
416 阅读
0 评论
3 点赞
2023-11-04
普及小程序-Serverless-云开发【二】
暂无简介
2023年11月04日
5,091 阅读
0 评论
8 点赞
2023-10-21
Serverless实战驾校小程序【数据导入】五
题目数据库导入教程1.打开网址www.bmob.cn2.登陆账号xxxxx@qq.com3.进入题目表question 表,右侧更多,点击导入数据4.准备好导入的数据文件打开提供的模板 模板.csv题目表(question)名称类型描述titlestring题目名称choseListArray选择列表 [{"item":"选选一"},{"item":"选选二","isChose":true}]typeint类型 1.单选 2.多选 3.判断picstring图片地址helpstring帮助描述bSubjectssting所属科目 1.科目一 2.科目四bModelssting所属车型 1.小车 2.货车 3.客车 4.摩托车bTypestring所属类别 关联类别表,具体看类别表(questionType)paysting付费类型 0.无需付费题 1.付费题mediaUrlstring媒体材料urlmediaTypestring媒体材料类型 video:视频 audio:音频举例,添加一个科目一题目标题:车辆因故障等原因需被牵引时,以下说法正确的是什么?选项A.前后车均应打开报警灯 b.所有车辆都应让行c.两车尽量快速行驶d.不受交通信号限制例如正确答案是A,choseList 字段就填写一下内容[{"item":"前后车均应打开报警灯","isChose":true},{"item":"所有车辆都应让行"},{"item":"两车尽量快速行驶"},{"item":"不受交通信号限制"}]Title填写 车辆因故障等原因需被牵引时,以下说法正确的是什么?截图看填写的效果如果有100道题一样的,复制100行就好了。5.格式转换由于execl 打开的默认是GBK模式,导入需要UTF8 , 保存的时候我们选另存为 ,这里有篇教程https://jingyan.baidu.com/album/f7ff0bfc33d00f2e26bb13af.html?picindex=2也可以看这截图另存为怎么操作另存为这样保存就好了。6.Bmob控制台点击上传7.点击确定,3秒左右看到数据
2023年10月21日
196 阅读
0 评论
2 点赞
1
...
5
6
7
...
25