云原生计算基金会CNCF(Cloud Native Computing Foundation, CNCF)Serverless Whitepaper v1.0对无服务器计算作了如下定义:

Serverless computing refers to the concept of building and running applications that do not require server management. It describes a finer-grained deployment model where applications, bundled as one or more functions, are uploaded to a platform and then executed, scaled, and billed in response to the exact demand needed at the moment.

"RightScale 2018 State of the Cloud Report" 中指出, Serverless 的年增长率达到了 75%,已经远超过 Container-as-a service 的 36%,位列第一,是增长速度最快的扩展云服务。

顺应当下容器技术、IoT、AI、5G、区块链等新技术的快速发展,技术上对去中心化、轻量虚拟化、细粒度计算等需求愈发强烈,在此趋势之上,Serverless 必将快速发展并得到应用。

对于开发者而言,Serverless 极大简化了编写代码和应用部署的整个过程,无需关心 DevOps,无需关心代码运行服务器及环境,更无需关心负载均衡,中间件和存储服务可以随时调用。

Q

Serverless 的优势有哪些?

A

  • 无需运维:用户不需要再关心服务器资源及复杂运行环境;
  • 弹性伸缩:根据请求并发量实时自动扩缩资源;
  • 按需付费:为实际消耗资源付费,无占用不收费,运行成本更低;

云上提供一整套serverless FaaS+BaaS服务,帮助用户快速构建应用与服务。

今天,我们会通过快速组合京东云 Serverless + AI,实现一个简单的 API 接口,进行人脸属性识别和简单数据分析。带领大家一起来感受一下Serverless的轻量虚拟化。

关键词

Serverless Service:函数服务+API 网关

人工智能产品:AI 人脸识别

Step1:创建函数

创建 runtime 为 python2.7 的函数,将依赖库 jdcloud_apim_sdk、ai_sdk(京东云AI)和入口文件 index.py 打包上传,index.py 代码如下:

#coding=utf-8

import json
import base64
import os from jdcloud_apim_sdk.core.credential import Credential
from jdcloud_apim_sdk.core.config import Config
from jdcloud_apim_sdk.core.const import SCHEME_HTTPS, SCHEME_HTTP from ai_sdk.apis.ai_face_detect_attr_request import *
from ai_sdk.client.ai_Face_Detect_Attr_client import * '''
AI
''' def handler(event,context):
if not bool(event):
result = {
'statusCode': 200,
'headers': {},
'body': "",
} return result # get request data
print('AI Request')
# get request data
body = event['detail']['body']
body = json.loads(body) if type(body) == unicode:
body = json.loads(body) # request
access_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
secret_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
credential = Credential(access_key, secret_key)
config = Config('aiapi.jdcloud.com', scheme=SCHEME_HTTPS)
client = AiFaceDetectAttrClient(credential, config) header = dict()
parameters = {
'return_landmark':0,
'return_attr':1,
'face_detect_num':0
}
data = body.get('data', "")
imageBase64Data = 'imageBase64=' + data.decode("utf-8")
s = imageBase64Data.encode('utf-8') ai_face_detect_attr_request = AiFaceDetectAttrRequest(parameters, s, header)
AiFaceDetectAttr_response = client.send(ai_face_detect_attr_request) respBody = {'code': 0, 'data': AiFaceDetectAttr_response.json()}
resp = json.dumps(respBody)
result = {
'statusCode': 200,
'headers': {},
'body': resp,
} # statistics
resp = AiFaceDetectAttr_response.json()
if resp['result']['status'] == 0:
attrs = json.loads(resp['result']['result'])
if len(attrs['faces']) > 0:
if attrs['faces'][0]['faceAttribute']['gender'] == 0:
print("lookup ai attr success, this is a woman")
else:
print("lookup ai attr success, this is a man") return result

Step2:测试函数

将任意人脸图片 base64 以 json 格式放入测试事件的 body 中,即可进行在线测试,返回结果如下:

Step3:对接 API 网关

为上面的函数创建一个 API 网关触发器,将 API 发布至测试环境。https://www.jdcloud.com/cn/products/face-detect-and-analysis?utm_source=PMM_Wechat&utm_medium=ReadMore_179&utm_campaign=ReadMore&utm_term=NA

Step4:测试验证上线

接口验证无误后,即可与前端页面开发联调,测试完成后,可通过函数版本、别名功能管理线上函数迭代发布。

现在就点击小程序,看看 AI 眼中的你吧!

人脸魔镜照照照,打开微信扫码试用!

Serverless 联合京东云 AI,还可打包集成人体识别、语音技术、图像理解、OCR 文字识别等一系列 AI 场景,通过函数服务还可进一步进行数据的存储分析处理、灵活应用,点击“阅读”开始探索实践啦!

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

最新文章

  1. Linux操作系统中,*.zip、*.tar、*.tar.gz、*.tar.bz2、*.tar.xz、*.jar、*.7z等格式的压缩与解压
  2. java第六次作业(老师讲过后)
  3. socket 实例化方法
  4. C++关键字:mutable(转)
  5. 在SourceInsight中用快捷键打开文件所在的目录
  6. 自动计算尺寸列表功能案例ios源码
  7. 模块工具类--utils
  8. 【算法系列学习】SPFA邻接表最短路 [kuangbin带你飞]专题四 最短路练习 F - Wormholes
  9. [javascript] postmessage
  10. 通过ajax和spring 后台传输json数据
  11. Ubuntu18.04安装netstat
  12. git中误删提交(commit)后,怎么恢复
  13. 水池问题的lua语言算法(面试题分析:我的Twitter技术面试失败了)
  14. web导出excel文件的几种方法
  15. Git 使用中显示“Another git process seems to be running in this repository...”问题解决
  16. Eval与DataBinder.Eval的区别
  17. 多了解一下Chrome开发者控制台
  18. 浅谈java动态代理
  19. Servlet------>servletDemo 及细节注意
  20. SCU 1029 Humble Numbers (打表处理)

热门文章

  1. Xilinx COE文件格式小记
  2. Eclipse设置jvm参数的三种方式
  3. Phoenix与HBase集成进行数据分析
  4. 编程练习:求某个数的n次方,返回其个位和十位
  5. Day6-T4
  6. 010-PHP输出数组中第某个元素
  7. 关于重定向RedirectAttributes的用法
  8. kali下的截图工具scrot、flameshot和deepin-scrot
  9. #pragma命令详解
  10. (九)微信小程序---for指令