看华为云Serverless 4大特性如何让软件架构更丝滑
摘要:Serverless可以看作是一种云计算服务模型,它允许开发者在不需要管理服务器的情况下通过事件驱动的方式运行应用代码。
软件架构的发展从原先的单体架构到近十几年的微服务架构,再到现在新兴的Serverless架构。单体架构通常把应用的逻辑和功能耦合在一起,部署在BMS裸金属机或VM上,耦合模式使得一些通用功能或通用逻辑无法灵活复用,经常出现重复造轮子的现象,架构整体上是相对封闭的。
微服务时代对应用做了拆分,组件服务化,诞生了一系列优秀的设计原则,如接口标准化、CS/CD自动化,使得应用初步具备了弹性和自动容错的能力。
在Serverless的框架下,应用的粒度更细,例如以函数为粒度进行管理和开发迭代,应用通过事件驱动的方式触发运行。
Serverless可以看作是一种云计算服务模型,它允许开发者在不需要管理服务器的情况下通过事件驱动的方式运行应用代码,主要解决资源托管、调度、运维管理等一系列平台型问题,可以看作是DevOps的进一步延伸。
从传统微服务向Serverless演进的过程中,资源管理的边界逐步上移。在微服务时代,虚机/容器时代,开发者发布应用,需要管理虚拟化层或更向上的运行时细节;而从IaaS到Serverless,抽象度越来越高,底层细节的屏蔽度也越来越高,对于开发者而言,云的易用性性也在增强,门槛在降低。
Serverless将是下一代的云计算范式,得益于它在按因付费、自动弹性、免运维等方面的显著优势。通用全场景的Serverless能够帮助企业解决更广泛的计算和运行交付的问题。实际上,Serverless也在过去几年的发展中,逐步增长成为下一代云上交付、运行与交付标准的框架。
Serverless平台的应用托管流程
Serverless的特点是按用计费、按需计费,如果终端没有流量,平台会自动回收应用资源,不需要为空闲时间付费,需要再次使用时,通过重新启动的方式再次加载。
冷启动或进一步延伸到高并发下的弹性问题,用户侧应用托管到Serverless平台上,如果频繁经历冷启动,应用的QoS下降,最直观体现在终端用户页面的Web 应用响应很慢,有超时的风险,导致用户侧体验下降。对云平台侧,冷启动和弹性关系着资源利用率,例如多租户进行混合部署时,预热效率的提升问题,以及平台多用户多应用流量并发上涨时的弹性问题。因此,冷启动和弹性问题是Serverless领域广泛关注的技术重点。
为了解决上述问题,华为云Serverless做了一系列的探索。
链路加速:通过高性能解压缩转换与共享内存加速技术,能够把性能提升2-11倍;通过公共依赖包分离、预解压与动态按需 link 技术,加速应用冷启动 5- 10 倍。
池化预热、弹性调度:通过资源池化预热、分层预加载与弹性水位控制,实现毫秒级 (< 10 ms) 弹性。
智能预热:以智能、分层资源预热实现负载感知,自适应池化水位控制;采用负载、资源压力预测框架,实现良好扩展性、数据驱动、以及工程师经验的规则注入。
预留实例智能推荐策略:通过建模的方式推算给定时间段大概需要的实例数量,提供高性能、平衡、低成本三种预留实例配置策略。
案例一:Mock 服务接入 Serverless
客户Mock服务可以模拟接口的响应,常用于服务打桩,避免由于依赖服务的不稳定,造成自身开发和测试进度的阻塞。在华为云Serverless 的帮助下,从手动扩缩容变成毫秒级的自动弹性,提升开发、上线效率 100%,资源成本降低 50%
案例二:视频业务基于函数实现 BFF (Backends For Frontends) 模式
使用函数BFF架构后,华为视频登录速度提升0.6~1s,相比原有方案快30%~40%。
案例三:基于 Serverless 构建的视频转码服务
基于Serverless构建的视频转码服务,函数编排的能力,由多个函数协同提供完整的功能,比如一个视频处理业务下,有多个视频处理的算子,能够自动弹性伸缩。完整改造后,整个成本降低了80%。
未来,边缘、中间件、托管、大数据将全面Serverless化,最底层是Serverless的BaaS的资源、资源池的自动化管理和快速弹性的能力。在底座之上,是跟业务相关的函数计算、容器和托管,三种共存。Serverless容器将下沉到Serverless底座,只需要对底座资源进行管理。在边缘端,传统的容器或是虚机可能无法支撑,采用Serverless + WASM是更可行的方案。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
GaussDB(DWS)字符串处理函数返回错误结果集排查
摘要:在使用字符串处理函数时,有时会出现非预期结果的场景。在排除使用问题后,应该从encoding和数据本身开始排查。 本文分享自华为云社区《GaussDB(DWS)字符串处理函数返回错误结果集排查》,作者: -CHEN111- 。 在使用字符串处理函数时,有时会出现非预期结果的场景。在排除使用问题后,应该从encoding和数据本身开始排查。 直接从案例出发。 (一)案例背景 客户执行instr查空格下标,子查询中查询结果与将子查询的结果粘出来单独执行结果集不一致。 SELECT instr((SELECT a FROM t1), ' ') xxxxx; SELECT a FROM t1; 的结果是a -> SELECT instr(a, ' '); 假设当前select a from t1;通过数据库连接客户端查询后显示结果集为“测试测 试 测试” SELECT instr((SELECT a FROM t1), ' '); --结果为6 SELECT instr('测试测 试 测试', ' '); --结果为4 (二)问题排查 从上述结果集中可以看出,如果把SELEC...
- 下一篇
如何为 Databend 添加新的系统表
作者:尚卓燃(PsiACE) 澳门科技大学在读硕士,Databend 研发工程师实习生 Apache OpenDAL(Incubating) Committer https://github.com/PsiACE Databend 的系统表x位于query/storage目录下,当然,如果因为一些特殊的构建原因无法放在这个位置的话,也可以考虑临时放到service/databases/system这个目录(不推荐)。 系统表的定义主要关注两个内容:一个是表的信息,会包含表名、Schema 这些;另一个就是表中数据的生成/获取。刚好可以对应到SyncSystemTable和AsyncSystemTable这两个 Trait 中的get_table_info和get_full_data。到底是同步还是异步,取决于在获取数据时,是否涉及到异步函数的调用。 实现 本文将会以credits表的实现为例,介绍 Databend 系统表的实现,代码位于 https://github.com/datafuselabs/databend/blob/main/src/query/storages/syst...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用
- Linux系统CentOS6、CentOS7手动修改IP地址
- 2048小游戏-低调大师作品
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7,8上快速安装Gitea,搭建Git服务器