搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > R的码码屋 > 如何用阿里云函数计算结合API网关构建自己的serverless服务

如何用阿里云函数计算结合API网关构建自己的serverless服务

R的码码屋 2018-12-15

Serverless是什么?

serverless是一个新的部署概念,并不是字面意义的没有服务器承载计算,而是对于开发者来说,屏蔽服务器相关的细节,只需关注业务逻辑,代码的运行环境,运行硬件地点均由serverless服务提供商进行管理。

组件介绍

API网关

API 网关(API Gateway),提供API托管服务,涵盖API发布、管理、运维、售卖的全生命周期管理。API网关有很多后端可以对接,此处选择了函数计算作为后端。

函数计算

阿里云函数计算(Function Compute)是一个事件驱动的全托管计算服务。通过函数计算,您无需管理服务器等基础设施,只需编写代码并上传。函数计算会为您准备好计算资源,以弹性、可靠的方式运行您的代码。

技术细节

函数计算对接API网关

对接API网关时,函数计算的主函数需要接受两个参数:

 
   
   
 
  1. Event event: 入参

  2. Context context: 请求上下文

Event是API网关转发到函数计算的请求信息。

 
   
   
 
  1. // Event

  2. {

  3.    "path":"/some/path",

  4.    "httpMethod":"GET",

  5.    "headers":{

  6.    },

  7.    "queryParameters":{

  8.    },

  9.    "pathParameters":{

  10.    },

  11.    "body":"this is body",

  12.    "isBase64Encoded":false

  13. }

Context是函数计算运行时的上下文,可以从中获取一些身份信息,函数信息以及日志实现。

 
   
   
 
  1. // Context

  2. {

  3.    "requestId":"requestId",

  4.    "executionCredentials":{

  5.        "accessKeyId":"akid",

  6.        "accessKeySecret":"aks",

  7.        "securityToken":"st"

  8.    },

  9.    "functionParam":{

  10.        "functionName":"fn",

  11.        "functionHandle":"fh",

  12.        "execTimeLimitInMillis":1000,

  13.        "memoryLimitInMB":1000

  14.    },

  15.    "logger":{

  16.        "info":"info",

  17.        "warning":"warning"

  18.        ...

  19.        etc

  20.    },

  21. }

函数计算可以在Event对象中获取来自前端的信息并进行处理并返回,返回时的对象是Output。

 
   
   
 
  1. // Output

  2. {

  3.    isBase64Encoded:false,

  4.    statusCode:200,

  5.    headers:{

  6.    },

  7.    body:"this is body"

  8. }

函数计算的权限

函数计算的权限来自于函数创建时的配置,当函数需要操作oss时,就需要对该角色赋予oss操作的权限。但是并不需要硬编码到代码中,因为Context对象会将这些权限数据传入到函数中,开发者只需要在代码中直接获取即可。

简单的实例

在小程序中,需要生成小程序码的功能,基于这种serverless架构,开发出了一个简单便捷的可缓存的serverless二维码获取API。 

点击原文可以到github中看示例代码。

总结

在这个小程序中,所有API和获取图片的接口都使用了这一种解决方案,由此大幅度的降低了独立开发带来的压力,也减少了支出成本。

  1. 使用serverless方案后,可以极大的降低开发者的运维压力,只需要专注于开发业务逻辑就可以了。什么八个明星同时出轨的事情,如果扛不住,那就不是我的事情了,阿里云能为我完成这方面的优化了【笑

  2. 使用serverless方案后,请求按需收费,进一步可以降低成本。

  3. 使用API网关后,对于接口的管理变得更加轻松,但是还有一个问题就是函数计算对于测试的支持不是很好,结合API网关之后很容易翻车。

  4. 目前函数计算支持python2、python3、node6、node8、java8、php7进行开发,对于除了Java外的编程语言支持http触发器(不需要API网关直接调用函数)


版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《如何用阿里云函数计算结合API网关构建自己的serverless服务》的版权归原作者「R的码码屋」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注R的码码屋微信公众号

R的码码屋微信公众号:be_funny_with_rebie

R的码码屋

手机扫描上方二维码即可关注R的码码屋微信公众号

R的码码屋最新文章

精品公众号随机推荐