Serverless 计算将会成为云时代默认的计算范式,并取代 Serverful (传统云)计算模式,因此也就意味着服务器 -- 客户端模式的终结。 ------《简化云端编程:伯克利视角下的 Serverless计算》
前言
计算和存储的解耦;它们独立扩展,独立定价;
代码的执行不再需要手动分配资源;
按使用量计费。
Serverless快速构建构建APP问卷调查
Step1:创建存储
Step2:创建函数
创建函数
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
jcloud-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
jcloud-app-survey-topic函数绑定API触发器如下:
jcloud-app-survey-submit函数绑定API触发器如下:Step 4:验证上线
最终效果
点击“京东云”了解更多关于队列服务
点击“京东云”了解更多精彩内容