ITPub博客

首页 > 云计算 > 开源云工具 > 干货 | 用Serverless快速在APP中构建调研问卷

干货 | 用Serverless快速在APP中构建调研问卷

原创 开源云工具 作者:京东云技术新知 时间:2019-10-30 14:40:09 0 删除 编辑
Serverless 计算将会成为云时代默认的计算范式,并取代 Serverful (传统云)计算模式,因此也就意味着服务器 -- 客户端模式的终结。 ------《简化云端编程:伯克利视角下的 Serverless计算》

前言

Serverless计算让开发者能够以更高的灵活性和更低的成本构建现代应用程序。开发者无需配置和管理服务器等基础设施,可将全部精力投入核心业务。
Serverless相比传统的serverful开发方式有着本质的区别:
  1. 计算和存储的解耦;它们独立扩展,独立定价;
  2. 代码的执行不再需要手动分配资源;
  3. 按使用量计费。

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
创建函数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

在API网关创建两个API,作为触发器绑定至对应函数,通过function响应API请求,并将API发布至测试环境。jcloud-app-survey-topic函数绑定API触发器如下:
jcloud-app-survey-submit函数绑定API触发器如下:

Step 4:验证上线

通过本地API接口测试工具验证API接口无误,即可与前端H5页面开发联调,测试完成后,可通过函数版本、别名功能管理线上函数迭代发布。
问卷提交页
以上,快速完成APP后端上线,只等活动上线

最终效果

最后,APP调查问卷效果如下:



点击“ 京东云 ”了解更多关于队列服务


欢迎点击“ 京东云 ”了解更多精彩内容




来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69912185/viewspace-2661939/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
京东科技开发者(Developer of JD Technology)是京东科技集团旗下为AI、云计算、IoT等相关领域开发者提供技术分享交流的平台。平台将发布京东产品技术信息、行业技术内容、技术活动及大赛等资讯。拥抱技术,与开发者携手预见未来!

注册时间:2019-03-06

  • 博文量
    509
  • 访问量
    339376