热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:轻松构建基于Serverless架构的小程序

本文由编程笔记#小编为大家整理,主要介绍了轻松构建基于Serverless架构的小程序相关的知识,希望对你有一定的参考价值。
本文由编程笔记#小编为大家整理,主要介绍了轻松构建基于 Serverless 架构的小程序相关的知识,希望对你有一定的参考价值。




作者 | 吴天龙(木吴) 阿里云函数计算架构师








本文整理自架构师成长系列 2 月 19 日直播课程。


关注“阿里巴巴云原生”公众号,回复 
“219”
,即可获取对应直播回放链接及 PPT 下载链接。






轻松构建基于 Serverless 架构的小程序


前言





自 2017 年第一批小程序上线以来,越来越多的移动端应用以小程序的形式呈现。
小程序拥有触手可及、用完即走的优点,这大大降低了用户的使用负担,使小程序得到了广泛的传播。
在阿里巴巴,小程序也被广泛地应用在淘宝/支付宝/钉钉/高德等平台上。






为了支撑大量的小程序,服务端面临的挑战有:








  • 大量的小程序是不活跃的,传统的至少一台服务器的方式会造成资源浪费;



  • 在活动高峰期小程序的调用量激增,要求服务端能够快速进行弹性伸缩。







而小程序开发者往往是客户端/前端的开发者,更多的精力在开发业务代码与应用的快速上线上,而无心顾暇服务端的运维操作。




阿里云是一个全托管 Serverless 计算服务,让开发者无需管理服务器等基础设施,只需编写和上传代码,就能够构建可靠、弹性、安全的服务。







函数计算弹性、免运维、高效、安全的特性十分适合作为小程序的服务端。






轻松构建基于 Serverless 架构的小程序


解决方案





函数计算封装了一套小程序服务端模板,帮助小程序开发者快速搭建基于函数计算的小程序。






使用这个模板搭建小程序应用具有以下特点:








  • 运维效率高: 无需管理服务器,部署函数即可上线



  • 开发效率高: 基于封装好的数据接口,直接开发业务代码



  • 零费用启动: 服务端基于函数计算,数据库采用表格存储,都是按量付费并且有较大的免费额度







1. 小程序的工作流程



轻松构建基于 Serverless 架构的小程序







一个完整的支付宝小程序需要以下几个元素:










  • 支付宝 App:
    是支付宝小程序的载体,运行在用户手机端



  • 小程序客户端:
    是小程序展现给用户的操作页面



  • 小程序服务端:
    是小程序的逻辑处理单元,比如对用户进行身份认证以及对数据进行存取



  • 支付宝服务端:
    是支付宝 App 的逻辑处理单元,包含用户的身份信息







函数计算封装了一套小程序服务端模板,帮助小程序开发者快速搭建基于函数计算的小程序。
下面介绍服务端模板的工作流程。






2. FC 服务端模板工作流程





除了基础设施的运维问题,服务端主要解决两个通用问题:








  • 身份认证: 服务端提供的 API 如何对客户端的请求进行鉴权?
    客户端的信息如果泄露如何保证数据安全?



  • 数据访问: 客户端如何进行数据库操作和文件操作?







这是每一个小程序开发都会遇到的共性的问题,可以通过一些框架或者模板来避免重复建设。
因此我们基于函数计算开发了一个小程序应用模板,解决了这些通用的问题,让开发者能够专注在业务逻辑上,快速开发上线自己的小程序。




轻松构建基于 Serverless 架构的小程序






  1. 客户端小程序通过支付宝 App 的 API,获得 authCode,这个过程会在 App 中弹出用户授权框;



  2. 小程序客户端向小程序服务端发起 createSession 请求,用于初始化的身份认证;



  3. 小程序服务端将 authCode 传给支付宝服务端,支付宝服务端校验 authCode,返回 accessToken;



  4. 小程序服务端根据收到的 accessToken 生成一个 sessionId 和一个 STS token,在服务端记录这 2 个信息然后把它们返回给客户端。
    STS token 是用于访问服务端函数的凭证,而 sessionId 作为前面认证成功而建立的会话信息,通过这 个sessionId 可以识别当前请求的用户信息;



  5. 小程序客户端再次需要获取数据,带着证明自己身份的 sessionId 向小程序服务端发起获取数据请求;



  6. 小程序服务端首先根据 sessionId 获取用户身份信息,再根据用户信息获取相关数据;



  7. 将用户数据返回给小程序客户端。







轻松构建基于 Serverless 架构的小程序


搭建流程





1. 注册支付宝小程序





准备工作:注册支付宝开发者账号



如果您尚未注册支付宝开发者账号,使用支付宝账号登录,并完成开发者身份注册。详细信息请参见







创建支付宝小程序应用










  • 使用支付宝账号登录创建小程序,填写基本信息,并记录下 APPID;



轻松构建基于 Serverless 架构的小程序


轻松构建基于 Serverless 架构的小程序




  • ,需要在小程序服务端与支付宝服务端配置密钥,对交易数据进行双方校验;


  • 将公钥配置在 【设置】->【开发设置】-【接口加签方式】,并记录私钥



轻松构建基于 Serverless 架构的小程序




2. 搭建小程序服务端





准备工作





开通









部署应用





进入控制台应用中心,选择 Mini App Todo List Server Template 模板,填写刚才记录的 APPID 与 PrivateKey,为 DBInstance/LogProject 取个自定义的名字(如果名字已被占用,会报 Already Exists 的错误),部署应用。






3. 搭建小程序客户端





准备工作





下载并安装支付宝







搭建应用





  • 在小程序项目根目录下,安装





npm install git://github.com/aliyun/fc-nodejs-sdk.git#mini-app --save




  • TODO LIST 客户端代码在修改 server.js 开头定义的变量,这些值会在部署成功后自动输出;


  • |信息|说明|



轻松构建基于 Serverless 架构的小程序




由于

使用了 ES6 语法,在发布小程序时,需要在小程序项目的根目录下,新建一个文件 mini.project.json,填入以下内容:






{
  "node_modules_es6_whitelist": [
     "@alicloud/fc2"
  ]
}







至此,开发工作已经完成,您可以调试、上线您的小程序啦。






轻松构建基于 Serverless 架构的小程序


总结





小程序上线后随着访问量的增加或者活动期间的访问突增,对后端服务的稳定和弹性也是一个很大的考验。
函数计算上传代码即可运行,极大地提高了后端服务的开发效率;
混合模式的弹性伸缩,轻松应对负载变化。
服务端模板与客户端模板可以快速搭建基于函数计算的小程序应用,这些特点使得函数计算成为支撑小程序很好的选择。






如果你对函数计算的能力还不是很了解,欢迎加入钉钉交流群:






轻松构建基于 Serverless 架构的小程序






架构师成长系列文章






◆ 


◆ 













戳原文,立即试用函数计算!


推荐阅读
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 微信小程序实现类似微博的无限回复功能,内置云开发数据库支持
    本文详细介绍了如何利用微信小程序实现类似于微博的无限回复功能,并充分利用了微信云开发的数据库支持。文中不仅提供了关键代码片段,还包含了完整的页面代码,方便开发者按需使用。此外,HTML页面中包含了一些示例图片,开发者可以根据个人喜好进行替换。文章还将展示详细的数据库结构设计,帮助读者更好地理解和实现这一功能。 ... [详细]
  • 设计实战 | 10个Kotlin项目深度解析:首页模块开发详解
    设计实战 | 10个Kotlin项目深度解析:首页模块开发详解 ... [详细]
  • MySQL的查询执行流程涉及多个关键组件,包括连接器、查询缓存、分析器和优化器。在服务层,连接器负责建立与客户端的连接,查询缓存用于存储和检索常用查询结果,以提高性能。分析器则解析SQL语句,生成语法树,而优化器负责选择最优的查询执行计划。这一流程确保了MySQL能够高效地处理各种复杂的查询请求。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • Unity与MySQL连接过程中出现的新挑战及解决方案探析 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 触发器的稳态数量分析及其应用价值
    本文对数据库中的SQL触发器进行了稳态数量的详细分析,探讨了其在实际应用中的重要价值。通过研究触发器在不同场景下的表现,揭示了其在数据完整性和业务逻辑自动化方面的关键作用。此外,还介绍了如何在Ubuntu 22.04环境下配置和使用触发器,以及在Tomcat和SQLite等平台上的具体实现方法。 ... [详细]
  • 尽管我们尽最大努力,任何软件开发过程中都难免会出现缺陷。为了更有效地提升对支持部门的协助与支撑,本文探讨了多种策略和最佳实践,旨在通过改进沟通、增强培训和支持流程来减少这些缺陷的影响,并提高整体服务质量和客户满意度。 ... [详细]
  • 能够感知你情绪状态的智能机器人即将问世 | 科技前沿观察
    本周科技前沿报道了多项重要进展,包括美国多所高校在机器人技术和自动驾驶领域的最新研究成果,以及硅谷大型企业在智能硬件和深度学习技术上的突破性进展。特别值得一提的是,一款能够感知用户情绪状态的智能机器人即将问世,为未来的人机交互带来了全新的可能性。 ... [详细]
  • Java 点餐系统源代码附带管理后台(免费提供)
    本项目提供了一套基于 Java 的点餐系统,包括前端小程序和后端管理平台。采用 Spring Boot 和 SSM 框架,结合 MySQL 和 Redis 数据库技术,适用于学习和二次开发。有需要源代码的开发者可以通过私信联系,免费获取下载链接。 ... [详细]
  • HBase Java API 进阶:过滤器详解与应用实例
    本文详细探讨了HBase 1.2.6版本中Java API的高级应用,重点介绍了过滤器的使用方法和实际案例。首先,文章对几种常见的HBase过滤器进行了概述,包括列前缀过滤器(ColumnPrefixFilter)和时间戳过滤器(TimestampsFilter)。此外,还详细讲解了分页过滤器(PageFilter)的实现原理及其在大数据查询中的应用场景。通过具体的代码示例,读者可以更好地理解和掌握这些过滤器的使用技巧,从而提高数据处理的效率和灵活性。 ... [详细]
  • 为了评估精心优化的模型与策略在实际环境中的表现,Google对其实验框架进行了全面升级,旨在实现更高效、更精准和更快速的在线测试。新的框架支持更多的实验场景,提供更好的数据洞察,并显著缩短了实验周期,从而加速产品迭代和优化过程。 ... [详细]
  • 深入解析微信小程序开发中的全局配置文件设置与优化技巧
    本文深入探讨了微信小程序开发中全局配置文件的设置与优化技巧,详细解析了 `app.js`、`app.json`、`app.wxss` 和 `project.config.json` 的功能与最佳实践。通过合理配置这些文件,开发者可以显著提升小程序的性能和用户体验。文章还介绍了如何利用这些配置文件进行模块化开发和调试,帮助开发者更好地管理和维护小程序项目。 ... [详细]
author-avatar
mobiledu2502930043
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有