阿里云-Serverless-探究
2021-12-21 18:10:39 90 举报
AI智能生成
阿里云函数流的研究
作者其他创作
大纲/内容
前言
1.Serverless - 无服务器的计算服务(狭义为以函数进行部署,资源的分配可以细粒度到函数的维度)
2.部门对于平台的选型->华为云《函数工作流》
https://www.huaweicloud.com/product/functiongraph.html
优点
函数以弹性、免运维、高可靠的方式运行,按函数实际执行资源计费,不执行不产生费用<br>
缺点(个人认为)
与平台强耦合,对java不够友好
八、九月份目标
1.跑个demo.
helloWord
触发器<br>
定时器
免费
APIG
部门未购买
kafka
VPC
EPS-GZ-VPC-01(10.211.0.0/18)<br>
EPS-AZ02-SIT-MIDDLEWARE-01(10.211.13.0/24)
委托名称:vpc-test
kafka配置
hq-eps-dmw-core-sit-kafka<br>
topic-serverless-test
入门博客
https://blog.csdn.net/qq_33591055/article/details/106737548
2.集成aop,mysql,redis<br>(SpringBoot项目迁移)
博客
https://bbs.huaweicloud.com/forum/thread-11618-1-1.html<br>
处理依赖包
本地安装依赖
mvn install:install-file -Dfile=D:\software\java\huaweiSDK\RunTime-1.1.2.jar -DgroupId=RunTime -DartifactId=RunTime -Dversion=1.1.2 -Dpackaging=jar<br><br>mvn install:install-file -Dfile=D:\software\java\huaweiSDK\ServerlessSpringBoot2-1.0.0.jar -DgroupId=ServerlessSpringBoot2 -DartifactId=ServerlessSpringBoot2 -Dversion=1.0.0 -Dpackaging=jar
上传华为云仓库
pom和jar需要同名
ServerlessSpringBoot2-1.0.0.jar
ServerlessSpringBoot2-1.0.0.pom
<groupId>com.huawei.fgs.ext</groupId><br> <artifactId>ServerlessSpringBoot2</artifactId><br> <version>1.0.0</version><br> <packaging>jar</packaging>
依赖包zip上传至OBS
https://itim-ms-hq-orsp-sit-obs-orspbucket.obs.cn-south-1.myhuaweicloud.com/test-serverless-9ca3c0b9-ce60-4d57-8067-e1309c32e07e.zip
触发器
定时器
注入的Service空指针
代码图示
APIG
kafka
使用kafka触发器
测试
kafkaTestReqVo<br>
The specified resource was not found.<br>
kafkaTestVo
userService 空指针<br>
com.example.fg.ExampleFgApplication.kafkaTest
3.了解函数编排技术: 1.亚马逊的Step,华为云的 Yuan Kong
小结
1.华为云对kafka触发器的支持还是不很完善,没有demo,也没有API,碰到问题,华为云技术支持客服处理结果也就只是提供一个APIG触发器的demo供参考。
2.提供的APIG触发器demo,技术栈还是使用JDBC,如果想要与主流技术栈接轨,需要做大量的重构开荒。<br>
3.而且目前部门里面没有能直接上serverless的项目,所以个人感觉没有必要专门购买APIG服务来继续研究serverless<br>
【订单中心】项目
1.使用到华为云的APIG服务
2.主要是以接口的形式对外提供服务
3.甚至不用持久化数据,纯函数计算的服务
4.综上所述,所以订单中心天生适合上serverless。也许会困难重重,但是非常渴望能够完成该项目上serverless验证是否真的能节省成本,进一步为其他项目或模块上serverless奠定基础。
十、十一月份目标
1.线程池,压测并发
2.集成事务、AOP
3.尝试把某些耗资源的接口放到函数工作流中测试
阿里云 - Serverless
0基础Serverless入门课
https://developer.aliyun.com/learning/topic/serverless
初识Serverless
挑战与机遇
冷启动问题
解决办法:单实例多并发等
各个云厂商的标准不一致问题
阿里开源的Adapter,为兼容做努力
应用场景
异步的并发,组件可独立部署和扩展
应对突发或者服务使用量不可预测
短暂、无状态的应用,对冷启动时间不敏感
需要快速开发迭代的业务,因为无需提前申请资源,因此可以加快业务上线速度
头部云厂商的产品以及优势
AWS - LAMBDA
实时文件处理、实时流处理、机器学习、loT后端、移动应用后端、Web应用程序
阿里云 - 函数计算
Web应用、实时数据处理、AI推理、视频转码
华为云 - 函数工作流
实时文件处理、实时数据流处理、Web/移动应用后端、人工智能场景
腾讯云 - 云函数
实时文件处理、数据ETL处理、Web/移动应用后端、AI推理预测
阿里Serverless架构图
架构模式及演进
技术维度
计算、数据存储、消息通信
衡量维度
可运维性、安全性、可靠性、可扩展性、成本
阿里云的FaaS架构设计
基于ECS的FaaS
ECS/Container+负载均衡的劣势
1.多应用配比部署资源浪费
2.镜像升级替换繁琐
3.弹性扩容缩容速度慢
架构图
多租户多应用部署的支持
快速水平弹性扩容
镜像分发下载
容灾、防止雪崩
基于神龙高密部署的FaaS
高密部署
技术难题
1.单机多租户隔离安全风险
2.高并发下启动速度问题
3.单机多租户VPC网络打通以及安全隔离问题<br>
4.技术容灾方案
总结
未来的发展与挑战
Serverless下的微服务实践
前言
微服务将曾经单体时代的(通常是在编译时确定的)静态通信关系,通过拆分编程了动态运行时,
因此服务之间的通信与协同需要单独管理,而这样一个座位每个服务的通用功能,通常微服务框架帮我们进行了抽象与实现。
但是不同的微服务框架的实现方式是不一样的,默认情况下是,不同框架之间的服务无法直接调用,而类似上述异构的情况,正式云原生想要支持与解决的,并且 容器、Pod这些抽象就很好的提供了一个解决思路
流量治理
请求驱动
图示
请求驱动模型
图示
尝试解决原微服务的问题:<br>1.请求管理与请求处理耦合,当大量请求到达微服务实例时,已无法分发处理任务以实现负载均衡<br>2.不同微服务框架都得自己实现一套请求管理逻辑<br>
Serverless=请求标准化+请求路由+处理管理
发展进程
图示
2015年短暂顶峰,后来就沉静了,因为大家会发现函数式开发与大家原来的开发模式有较大的出入,而且比较适合重前端(请求的处理)而不是长时间运行的应用,所以传统的应用架构就不太可能享受到Serverless带来的弹性以及成本带来的红利<br>
2017年,阿里云的SAE公测,更适合不想改变开发模式的用户使用<br>
市场概况
市场概况
容器与K8S自身复杂性
微服务架构的痛点 - 稳定性<br>
理想状态-Serverless应用引擎
微服务体系在不同时代的实践
Serverless架构在前端应用领域的价值<br>
前端的发展历史
1990年第一个web浏览器诞生
1991年万维网诞生,标志前端技术的开始<br>
1993年 HTML、CSS 1996年、JavaScript 1995年<br>
1994年 网景公司的第一款商业浏览器 Navigator<br>
前端的应用场景变迁
2009年nodejs之前都是主要专注于web浏览器页面
PC+移动web+小程序、手机App、IoT、服务端<br>
Serverless又给前端带来了什么<br>
Serverless跟前端的关联在什么地方
关联
能力加强
Serverless跟做客户端的开发有什么关系<br>
关联
带来新的客户端访问方式
Serverless带给web开发的改变是什么<br>
传统web站点
开发流程
痛点
耗时长<br>
从设计开发测试部署上线往往经历数周甚至数月才能上线
访问体验一般<br>
SEO,站点加速等都需要单独专项做,一般新手不容易搞定<br>
更新迭代慢
每次更新重新部署上线的周期长,更新内容如果是动态的,研发时间也会比较长
现代化Web站点构建<br>
建站演示
准备工作:<br>1.www.serverless-devs.com 下载开发工具<br>2.申请注册阿里云账号,开通阿里云函数计算产品(免费)<br>
下载 start-jamstack - deploy执行<br>
点击 VScode小图标 - npm i - npm start - npm run build
回到工具的配置中心,重新点击 deploy执行
不需要特别频繁更新的动态数据,可以通过 cli kv put [键名称] [文件所在的本地相对路径]<br>
如何通过函数使用数据库
工具 - 配置信息 - 右侧代码中 service.api下面的内容放开<br>
需要单独对api这个服务进行单独部署 - deploy执行
36-41行代码放开,并且把proxyUrl替换成项目的<br>
总结
Serverless架构在软件工程的研发实践<br>
JAMStack
是什么
优势
原理
能力
Serverless时代 DevOps的最佳方式<br>
部署工具
支持任意厂商任意云端服务
丰富的应用模板
DevOps简析
Serverless开发运维体验
传统标准的电商系统架构
SAE整体解决方案
高效闭环的DevOps体系
部署态最佳实践
一键启停
应用发布三板斧
金丝雀发布
全方位可观测
在线调试
权限隔离
端云联调
云原生体系下Serverless的探索与实践<br>
探索
Serverless简介
弹性的价值
Iaas弹性伸缩
k8s弹性伸缩
应用画像弹性伸缩
弹性模式
弹性发展方向
Serverless应用引擎简介
效率
分析
原地升级
镜像预热
镜像加速
Dragonwell加速
自动扩缩
能力
架构
场景丰富度
稳定性
实践
伸缩准备
配置
过程
可观测
客户案例
Serverless在阿里集团的大规模落地
阿里云 - Serverless 技术图谱<br>
建立Serverless思维
架构的演进
单体架构
初级单体
用户 -> 服务器 ->数据库
水平伸缩
用户 -> 负载均衡 -> 服务器(多个) -> 数据库<br>
微服务
用户 -> 网关 -> 子模块+数据库,子模块+数据库 ...<br>
云原生
基于云产品架构<br>
应用生命周期托管<br>
价值
1.不用关心服务器
2.自动弹性
3.按实际资源使用计费
4.更少的代码,更快的交付速度
架构与选型
Serverless计算= FaaS + BaaS
更多serverless计算形态涌现,FaaS类服务出现预留形态
越来越多的serverful托管服务出现Serverless形态
收藏
0 条评论
下一页
为你推荐
查看更多