认识与设计Serverless(二)
一、设计Serverless的功能模块
第一节讲了Serverless一些概念与特性,废话居多,概念的东西了解过后要有设计与构思,才能学到精髓,一个Serverless平台的形成,涉及到很多模块的架构与搭建,是需要精兵的开发团队才能完成的工作,一个Serverless开发平台涉及的功能模块,大概如下图设计
二、Serverless流程架构设计
Serverless平台函数的运行,需要依赖于第三方平台管理的服务器以及运行时需要的众多能实时拉取的容器,所以成本是比较高的,财力人力物力兼具的大公司,如下展示的是具备以上能力的团队可以考虑的Serverless平台架构方案,以及不具备以上能力时的穷逼架构设计。
土豪版:
用户将开发完成的函数在IDE中保存,代码被存入S3中,用户对函数发起请求时,将请求路由至Serverless管理器中,根据请求的函数从S3中拉取代码,同时拉取一个容器,部署代码,制作镜像,之后启动容器和运行函数,在此过程中,一个函数对应的部署到一个容器中,容器有冷启动和热启动时间,在经过冷启动后,热启动的时间对请求的消耗是能够接受的,但需要有专业的容器管理团队支持。
穷逼版:该方案可以摆脱对容器的依赖,最大化的节约成本,首先在一个VM中部署多个容器,并将容器的IP和端口分配给用户,用户开发完代码后将代码保存在S3,并生成代码对应的uuid,之后发布函数,发布的时候,会将uuid和对应的发布的函数请求url维护在一个路由配置中,同时根据事先分配给用户的IP和PORT将函数发布到对应的Runtime(以Restful的形式暴露),当用户请求时,首先根据请求的url在路由配置中找到代码的uuid,之后经过网关路由到对应的Runtime,Runtime有个前拦截,将传递过来的uuid在S3中找到对应的代码,利用虚拟的代码执行器运行代码,并将获得的结果返回。
最新文章
- ASP.NET Repeater 绑定 DropDownList Calendar 选择日期
- unity3d asset store下载的代码所在位置
- RMAN-06059: expected archived log not found, loss of archived log compromises recoverability
- css3中clip属性
- struts2异常处理及类型转换
- iOS10 资料汇总:值得回看的 10 篇 iOS 热文
- linux系统利用yum安装其他软件或服务
- tr转换或删除字符
- hash冲突随笔
- js实现简单的轮播效果
- SpringBoot 消息转换器 HttpMessageConverter
- HDU4725(KB4-P SPFA+LLL+SLF优化)
- 不能错过的Sketch实用新技巧和资源集锦
- 入坑-DM导论-第一章绪论笔记
- 20145326 《Java程序设计》第7周学习总结
- MFC Windows程序开发究竟是什么?
- Android线程管理(一)——线程通信
- 关于EK Dicnic
- 特别好用的swagger ui 封装
- C/C++:函数的调用约定(Calling Convention)和名称修饰(Decorated Name)以及两者不匹配引起的问题
热门文章
- [ML] I'm back for Machine Learning
- CH7-WEB开发(集成在一起)
- 制作Windows U盘镜像
- oracle 与mysql 的当前时间比较
- 如何在单片机上使用printf函数(printf)(avr)(stm)(lpc)(单片机)(转)
- java运行显示“找不到或无法加载主类”的解决办法(linux)
- poj_1204 Trie图
- jquery.js与sea.js综合使用
- .net asp 在1.asp页面嵌入另一个页面2.asp
- 微信小程序 --- 页面渲染