干货 | 用Serverless快速在APP中构建调研问卷
Serverless 计算将会成为云时代默认的计算范式,并取代 Serverful (传统云)计算模式,因此也就意味着服务器 --
客户端模式的终结。
------《简化云端编程:伯克利视角下的 Serverless计算》
前言
Serverless计算让开发者能够以更高的灵活性和更低的成本构建现代应用程序。开发者无需配置和管理服务器等基础设施,可将全部精力投入核心业务。
Serverless相比传统的serverful开发方式有着本质的区别:
- 计算和存储的解耦;它们独立扩展,独立定价;
- 代码的执行不再需要手动分配资源;
- 按使用量计费。
Serverless快速构建构建APP问卷调查
函数服务作为Serverless架构中的核心计算组件,可应用于各类Serverless架构,主要包括两大类:Web、移动、IoT、AI等无服务器后端和数据处理系统后端。
其中,Web、移动serverless后端的典型场景应用最为广泛,本文介绍如何使用函数服务+API网关分分钟在京东云APP中构建用户问卷调查。
构建APP问卷调查可由两个简单函数完成:获取问卷内容和提交答案。
Step1:创建存储
创建一个用于存储问卷题库及用户答案的数据库或对象存储bucket,本示例创建一个云缓存Redis实例(主从4GB)。
Step2:创建函数
在函数服务中创建并测试两个函数(运行时:Python2.7)
创建函数1
创建函数jcloud-app-survey-topic:请求用户PIN,问卷版本version,从数据库获取问卷内容,将入口文件index.py与依赖库redis SDK打包上传至函数服务。index.py代码如下:
#coding=utf-8
import json
import redis'''下载问卷'''
def handler(event,context):
if not bool(event):
result = {
'statusCode': 200,
'headers': {},
'body': "",
}
return result
body = event['detail']['body']
body = json.loads(body)
pin = body.get('pin', "")
version = body.get('version', "")
print(pin)
print(version)
r = redis.Redis(host='redis-v214pzrgiicq-proxy-nlb.jvessel-open-hb.jdcloud.com', port=6379, db=0)
topic = r.hget('topic_' + version, version)
data = {'pin': pin, 'version': version, 'topic': topic}
data = json.dumps(data)
result = {
'statusCode': 200,
'headers': {},
'body': data,
}
return result
函数测试
创建函数2
创建函数2jcloud-app-survey-submit :请求用户PIN,问卷版本version,用户答案submit,上传至数据库,将入口文件index.py与依赖库redis SDK打包上传至函数服务。index.py代码如下。
#coding=utf-8
import json
import redis'''
上传问卷结果'''
def handler(event,context):
if not bool(event):
result = {
'statusCode': 200,
'headers': {},
'body': "",
}
return result
body = event['detail']['body']
body = json.loads(body)
pin = body.get('pin', "")
version = body.get('version', "")
submit = body.get('submit', "")
print(pin)
print(version)
print(submit)
r = redis.Redis(host='*********.jdcloud.com', port=6379, db=0)
old = r.hget('submit_' + version, pin)
if old != None :
data = {'code': 1, 'desc': 'user have submitted'}
data = json.dumps(data)
result = {
'statusCode': 200,
'headers': {},
'body': data,
}
return result
r.hset('submit_' + version, pin, submit)
data = {'code': 0, 'desc': 'success'}
data = json.dumps(data)
result = {
'statusCode': 200,
'headers': {},
'body': data,
}
return result
函数测试
Step 3:创建发布API
在API网关创建两个API,作为触发器绑定至对应函数,通过function响应API请求,并将API发布至测试环境。jcloud-app-survey-topic函数绑定API触发器如下:
jcloud-app-survey-submit函数绑定API触发器如下:
Step 4:验证上线
通过本地API接口测试工具验证API接口无误,即可与前端H5页面开发联调,测试完成后,可通过函数版本、别名功能管理线上函数迭代发布。
问卷提交页
以上,快速完成APP后端上线,只等活动上线
最终效果
最后,APP调查问卷效果如下:
点击“京东云”了解更多关于队列服务
干货 | 用Serverless快速在APP中构建调研问卷的更多相关文章
- Android TV开发总结(七)构建一个TV app中的剧集列表控件
原文:Android TV开发总结(七)构建一个TV app中的剧集列表控件 版权声明:我已委托"维权骑士"(rightknights.com)为我的文章进行维权行动.转载务必转载 ...
- 技术干货丨如何在VIPKID中构建MQ服务
小结: 1. https://mp.weixin.qq.com/s/FQ-DKvQZSP061kqG_qeRjA 文 |李伟 VIPKID数据中间件架构师 交流微信 | datapipeline201 ...
- Serverless 在编程教育中的实践
说起Serverless这个词,我想大家应该都不陌生,那么Serverless这个词到底是什么意思?Serverless到底能解决什么问题?可能很多朋友还没有深刻的体会和体感,这篇文章我就和大家一起聊 ...
- 在 C# App 中嵌入 Chrome 浏览器使用 CefSharp
介绍 以前曾试过在app中整合一个可靠又快速的web浏览器吗? 在本文中,你会学到如何轻松地将奇妙的CefSharp网页浏览器组件(基于Chromium)集成到你的C# app中. 然后,你可以使用此 ...
- 十九. 想快速开发app,需要找外包吗?
健生干货分享:第19篇 摘要:最近和两位准备开发app的创业者聊天,他们之前没有移动互联网的相关经验,有的是想法和资金.他们在纠结:想快速开发app,需要找外包吗? 最近和两位想开发app的创业者聊天 ...
- 入门系列之Scikit-learn在Python中构建机器学习分类器
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由信姜缘 发表于云+社区专栏 介绍 机器学习是计算机科学.人工智能和统计学的研究领域.机器学习的重点是训练算法以学习模式并根据数据进行预 ...
- 转-使用 CefSharp 在 C# App 中嵌入 Chrome 浏览器
使用 CefSharp 在 C# App 中嵌入 Chrome 浏览器 2016-09-23 分类:.NET开发.编程开发.首页精华0人评论 分享到:更多3 本文由码农网 – 小峰原创翻译,转载 ...
- 如何在移动端app中应用字体图标icon fonts
How to use icon fonts in your mobile apps 在任何APP设计中实现可图形的矢量缩放最完美的方式是使用字体图标. 移动端的设计变的越来越复杂.原因在于多样的屏幕尺 ...
- 干货!JNPF快速开发平台功能一览
JNPF,采用主流的两大技术Java/.Net开发,是一套低代码开发平台,可视化开发环境,有拖拽式的代码生成器,灵活的权限配置.SaaS服务,强大的接口对接,随心可变的工作流引擎,一站式开发多端使 ...
随机推荐
- NO12 useradd-passwd-uname-hostname命令-上传rz下载sz-批量部署- Linux用户相关操作
24 useradd #添加用户 语法:useradd 用户名 例子:ueradd oldboy .25 passwd #为用户设置或修改 ...
- UVA - 12083 Guardian of Decency (二分匹配)
题意:有N个人,已知身高.性别.音乐.运动.要求选出尽可能多的人,使这些人两两之间至少满足下列四个条件之一. 1.身高差>40 2.性别相同 3.音乐不同 4.运动相同 分析: 1.很显然 ...
- Asp.net MVC中ReturnUrl的使用
1.控制器(Controller)[HttpPost][ValidateInput(false)]public ActionResult Add(Article article,string retu ...
- node - 读取cookie
req.headers.cookie
- 12.swoole学习笔记--锁机制
<?php //创建锁对象 $lock=new swoole_lock(SWOOLE_MUTEX);//互斥锁 echo "创建互斥锁\n"; //开始锁定 主进程 $loc ...
- (1)关于PSP寄存器和MSP寄存器的简单描述
由于 Cortex-M3 和 M4 内核具有双堆栈指针, MSP 主堆栈指针和 PSP 进程堆栈指针,或者叫 PSP任务堆栈指针也是可以的.在 FreeRTOS 操作系统中,主堆栈指针 MSP 是给系 ...
- Open_CV 色彩空间
色彩空间: 颜色空间按照基本结构可以分两大类:基色颜色空间 和 色.亮分离颜色空间.前者的典型是 RGB,还包括 CMY.CMYK.CIE XYZ 等:后者包括 YCC/YUV.Lab.以及一批“色相 ...
- JavaScript的函数和对象介绍
一.JavaScript中的函数 1.函数的概述 JavaScript中的函数是一段可执行代码的合集,在需要执行的时候可以在方法名之后添加一对小括号执行方法.是一段可执行的字符串. 2.函数中隐藏的属 ...
- hdu 1277 全文检索 (字典树应用)
全文检索 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- python---函数定义、调用、参数
1.函数定义和调用 下面def test部分的代码块是函数定义:test(2,3)则是函数调用 def test(a,b): print(a) print(b) test(,) 2.必填参数,即函数调 ...