免费建设论坛网站,关键词优化推广公司哪家好,广东东莞直播基地,网络技术就业方向欢迎大家前往腾讯云社区#xff0c;获取更多腾讯海量技术实践干货哦~ 黄文俊#xff0c;现任腾讯云SCF无服务器云函数高级产品经理#xff0c;多年企业级系统开发和架构工作经验#xff0c;对企业级存储、容器平台、微服务架构、无服务器计算等领域均有涉猎。今天讲的是怎么… 欢迎大家前往腾讯云社区获取更多腾讯海量技术实践干货哦~ 黄文俊现任腾讯云SCF无服务器云函数高级产品经理多年企业级系统开发和架构工作经验对企业级存储、容器平台、微服务架构、无服务器计算等领域均有涉猎。 今天讲的是怎么使用Serverless做后端技术分享。我的职业偏向是后端可能不是写前端不是使用Node.js更多是使用CR做后端语言今天关注的微信小程序我这一块的分享更多是怎么实现它的后端。我所使用的是Serverless技术也是在近两年新出来的一种架构。讲Serverless这个架构之前我也给大家讲一下小程序和传统的后台技术。 小程序的后台技术 小程序是一种全新的连接用户与服务的方式它可以在微信内被便捷地获取和传播同时具有出色的使用体验。它的加载方式比传统的APP方式更快速上线体验也不差除了它本身的界面展示和刷新之外小程序里面的数据获取通过微信和后端进行交互小程序的运行实际上是一个类前端的运行方式整个运行是在微信内它和后端的交互实际上通过微信进行转发的运行起来之后它会提出一个api的请求这个请求首先给到微信微信再通过网络apr转到你自己的服务器上服务器拿到这个请求以后进行数据的处理然后再响应到前端这就是小程序和后台交互的一种架构。 对于后端服务这张图是大家传统做的方式暴露api这些都可以用来开发业务应用业务应用之后需要有相应的存储文件结构化的数据存储或者是非结构化的数据存储需要有数据库和缓存为了实现这一套架构且不会由于某一块的服务器宕掉或者有一些漏洞等等我们通常的实现是一个较为复杂的过程。比如说我们为了保证的Serverless和服务器不会垮掉需要建立一个集群我们要对外提供服务需要LB的请求请求到之后分到某一台服务器上。比如说文件存储如果单纯只用一台设备这台设备挂了整个文件服务就挂了所以我们要使用分布式存储来解决文件存储的问题。数据库和缓存也是一样的需要构建集群无论是两台还是三台还是多台构建集群以后能确保不会由于某一个单点的问题导致整个服务不可用从而导致服务瘫痪。 如果作为一个小程序开发者这套架构在互联网公司已经搭建了作为个人来说这一道太重了需要了解这里面的某一块和它的配置比如说数据库的集群怎么配让大家没法把精力集中到你的业务和小程序本身而是过多耗在运维和支撑上。 Serverless架构 我下面要介绍的Serverless架构采用无服务器的方式主要会介绍无服务器和云怎么结合怎么利用云的服务减轻架构化的工作。介绍它的架构之前我介绍一下Serverless架构英文称之为Serverless中文称之为无服务器大家不用购买服务器不用购买虚拟机或者物理机这一块怎么运行呢它使用计算托管的方式在Serverless这里我们可以看成两块第一块就是函数即服务它真正实现了你业务的托管计算。另外一种是后端即服务包括对象存储大家不用自己构建分布式存储不用担心数据的丢失和安全性问题同时在云上提供的数据库消息队列和对象存储都是一样的不用购买服务器自己搭建在购买使用的过程当中我们可以称之为Serverless。因为这些都是托管型的使用的时候不用关心它的安全性不用关心可能服务器宕机导致的故障。 Serverless的计算托管式云在服务函数内下面来讲一下云函数的架构。大家看到这个架构以后我们后面在拿一个实际案例来看怎么把具体的api服务落地。云服务器架构本身是计算托管型的计算托管意味着把真正的业务代码托管到云上面然后在云上面运行它的运行方式有一个特点是触发式运营跟各个产品打通以后各个产品产生的事件后面的案例就是和API网关进行结合从api网关来的事件就是api事件当这个请求到达api网关时我们就认为是一个事件然后再运行。大家最初进行托管的时候把代码和触发期的配置提交到云上面来并不是说提交之后代码就运行起来而是事件到达才运行起来代码对这个事件进行处理。在这个过程中对于每一次的事件每一个代码拉起的过程实际上都是单独处理一个事件为什么呢因为我们在这儿使用并发的模式如果你有上万个用户同时访问你的小程序要同时对上万的用户进行服务启动上万的实例它是在事件时运行起来没有事件不能运行这与微信小程序本身点开即用、用完即走的概念是符合的有请求时才运行没有请求时不运行。产品的计费模式也是根据实际运行的时间计费的。 Serverless的使用 怎么使用Serverless呢传统的架构就是前面说的web服务然后是使用存储、缓存我们对外服务以后有对外暴露相应的api实际上用户的业务逻辑都是放在云函数内需要结构化存储需要进行缓存或者对象存储我们需要数据服务或者云缓存服务等其他的服务都可以直接在线服务这些服务直接通过代码调用。 前面讲了Serverless的架构介绍后面是对于这个后台开发的介绍后面也是基于这个方式进行详细案例的说明。 小程序除了本身的页面启动后续与网络的交互都是由小程序发起经过微信本身以后首先请求到达api网关对于对外的api的管理把这个api暴露到官网上可以被要程序访问得到。它本身也能够提供api的发布和版本的切换能力api网关之后就是云函数。云函数就是实际处理业务的逻辑如果你需要使用数据库就在代码内发数据库的连接需要存储文件就调用相应的窗口写文件。 基于这个方案我们来看一下传统提供的是中间的一块因为前端是用户的小程序后端是微信本身提供的接口服务中间建议的是开发者自己的服务器。我们现在要展示的一个案例也就是怎么把中间的开发者服务器替换掉用Serverless的方案落地我们使用了api网关加云数据库实现开发者服务器所能够做到的事情不需要购买服务器而落地我们的api。 首先从最前面的小程序来看这个案例也是小程序开发者上面的demodemo的前端包括登陆端口以及session展示我们在小程序这端首先获取一个talk开发者拿到以后再跟微信交互验证合法以后我们这里选择了记录到云数据库这就是小程序界面提供点击登陆的位置后面的业务会发送请求到云上面来。 对于这个小程序的核心我们在某一个api上面的路径就是在hos的login url上发起GET操作根据Wx.login构造请求的头部body内容发送获取到的code及加密数据到后台。 api网关 我们看一下api网关做的事情它对外以一个api的接口呈现出来我们直接提供了对外访问的域名用户基于这个域名绑定自己所拥有的域名这种情况下可以实现发布的要求微信小程序的开发者要求域名要备案把自己的域名绑定到api的服务上面来对外提供在右侧api的网关上配一个/login Get在后台还未实现之前可以配置为mock方法解耦前后端小程序可以基于api构造的mock数据开发。实现云函数后对接api到云函数并更新发布api避免开发的同时影响到在线业务。 云函数的处理流程 从云函数的方面来说用户会承载计算业务。按照我们最开始用户给的官方图拿到api的请求以后解析请求内容根据规范连接微信认证服务器获取认证情况并记录session返回session信息给到请求端。拿到微信服务器的返回以后可以判断用户的登陆过程是成功还是失败如果成功以后可以拿到用户相应的值这个地方我们发起到数据库的连接建立一个masico的连接完成session的记录。 云函数的处理流程之后下面展示的是我们怎么和数据库建立连接登陆信息的细节流程创建连接并可复用连接拼装SQL语句并执行。 数据库的配置 这个地方就是我们购买以后数据库启动并且做了登陆以后可以进入到数据库里面查看数据查看session的记录。 实操案例——用户登陆及session展示 创建并初始化实例按照mysql标准化使用方式操作计算托管式的优势用户关心核心的代码不用关心周边的运维由于托管式业务无论是个人请求个人开发者的小程序很有可能你的一个小程序就成为爆款爆款以后可能访问量就是突增的形式。 我们利用session的架构实现小程序而且不用去担心运维秒级启动弹性计算能力满足用户上万的并发。核心点关注业务代码而不用关注web这就是快速的应用实现小程序的落地的方法。 Q/A Q在api网关部署HTTPS证书吗A对这个证书是腾讯云提供的绑定你自己域名的时候可以实现HTTPS的支持。 Q我们在生产环境的时候由腾讯云提供的证书A对。 Q在生产环节需要腾讯云提供的证书上线我们的服务A对这是小程序方面的要求因为小程序要求必须使用自有域名和小程序打通。 Q小程序即用即删如果手机里面有很多会很卡如果小程序用过在微信上面的页面会显示出来如果上万个对微信本身有什么影响A可以从一些限制可以看到现在对于微信小程序的大小有限制的它本身的大小是要求目前我记得是5兆包2兆包的大小如果是上千个对于你手机来说可能是多存储了一些数据每个包最大用满可能就是5兆本身小程序页面的加载都是有限制的这个限制从微信角度来考虑都是为了保证小程序的流畅运行不会对用户的手机造成很大的冲击这一块要微信的同学介绍我是偏后端的。 Q我再举个例子小程序进入的时候加载速度比较快的举一个比较极端的比如说跳一跳第一次使用的时候它的加载速度比如说今天用完了删掉过一段时间再进去相比来说加载速度有差别吗或者第二次用的时候快一些吗原因是什么A这个要由微信的同学解答比较好一些因为这些都是小程序本身的体现或者说速度的一种体现。 Q你好我是做后端开发的什么样的模型不是用Serverless来做的。AServerless它本身的一些特性也限制了它的使用场景比如说对于内存的配置cpu的配置运行时间的限制不是所有场合都适用它本身对运行时间有限制的不能长时间的运用包括内存的使用包括cpu的应用比如说动画的渲染长时间的批量计算这些都不适合api的服务由于它的请求到达以后必须快速响应用户api比较适合的。 更多分享资料请戳下面的链接使用 serverless 构建小程序后台.pdf 问答 微信小程序如何与数据库交互相关阅读 朱展腾讯云小程序解决方案 施德来有赞电商小程序的实践 邹伟如何开发一款小游戏 此文已由作者授权腾讯云社区发布原文链接https://cloud.tencent.com/dev...