部署Rust工程到阿里云函数计算FC

本文涉及的产品
函数计算FC,每月15万CU 3个月
简介: 阿里云函数计算目前支持C#、Java、Python、Go等大部分语言,对于Rust没有直接支持,不过可以通过Custom Runtime和Custom Container模式部署。

阿里云函数计算目前支持C#、Java、Python、Go等大部分语言,对于一些定时任务是非常适合的。最近有一些工程使用Rust重写了也想部署到阿里云函数计算上,这里来看可以使用Custom Runtime/Container。

Custom Runtime/Container模式

这个模式本质上是自定义脚本启动一个http服务,然后Serverless平台转发请求到你的http服务,这个请求header中有一些特殊信息,极端的将不考虑启动速度和性能等等,其实是可以无障碍迁移大部分服务的(存储和数据库可能需要改造)。

这个运行环境默认包含了Python3,Java 8等常见依赖,对于Rust这种编译成二进制文件的就更简单了。最终产物是一个zip包,包含启动文件bootstrap和其他依赖即可。

Custom Container模式可以理解成增强模式,如果Custom Runtime不可用,一般是由于特殊的本地依赖导致,Custom Container模式的产出是一个镜像,不过由于镜像的大小比代码包大,所以计费上要多一些,包含拉取镜像的费用。所以这两者需要根据情况来决策,尽可能使用Runtime模式。这样费用和速度上都好一些。

代码改造

这里使用的是funcraft工具专门用于部署,template.yml文件包含描述信息,代码放在code目录。

在Cargo.toml中新增两个依赖

tokio = { version = "1.12.0", features = ["full"] }
warp = "0.3.0"

修改main.rs用warp启动一个http服务

async fn main() {

pretty_env_logger::init();  
// POST /invoke  
let route = warp::path!("invoke")  
    .and(warp::post())  
    .and_then(handler::run);  

info!("Starting server ...");  
warp::serve(route).run(([0, 0, 0, 0], 9000)).await;  

}

其中handler:run就是原来代码入口,签名如下

pub async fn run() -> Result {
为了方便自动部署,代码构建用了Docker (FROM rust:1),加一个Makefile如下

build-img:

docker build -t fc-rust-runtime  -f build-image/Dockerfile build-image  

build: build-img

docker run --rm -v $$(pwd):/tmp fc-rust-runtime bash -c "cd /tmp/code/ && cargo build --release && mv target/release/code bootstrap && chmod +x bootstrap && rm -rf target/"  

deploy: build

fun deploy -y  

这样直接执行make deploy即可。

优化代码包大小

因为代码包是需要拉取的,特别是冷启动时间,所以尽可能降低大小是有必要的。

首先是看下除了bootstrap以外其他文件是否可以删除,比如源文件(*.rs)就不需要,一般来说必要的文件常见的有log4rs.yml还有migration文件夹等,也可能只需要一个bootstrap就行了。

其次就是优化生成物本身的大小,cargo build –release本身包含了一些优化,但是为了更小的体积一般还会配置这些

[profile.release]
opt-level = "z"
lto = true
codegen-units = 1

最后就是strip,目前nightly可以直接使用,但是stable还是需要手动执行下,也可以使用cargo-strip。nightly配置如下

cargo-features = ["strip"]

[profile.release]
strip = "symbols"

参考

除了Rust以外,我还有一些Golang的函数,从体验上看部署流畅度和内存消耗Rust有一定优势,但是也不算很大,因为目前的计费方式上,内存最小是128M,相同功能的Golang函数平均比Rust多10M到20M,对于实际费用影响不大,定时任务对于时间敏感度也没有那么高。

参考文档:

https://help.aliyun.com/document_detail/132044.html

https://help.aliyun.com/document_detail/179367.html

https://github.com/htynkn/faas-collections/tree/master/update-forked-repo-rust

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
4天前
|
人工智能 JSON 自然语言处理
一键生成毛茸萌宠形象,基于函数计算极速部署 ComfyUI 生图系统
本次方案将帮助大家实现使用阿里云产品函数计算FC,只需简单操作,就可以快速配置ComfyUI大模型,创建出你的专属毛茸茸萌宠形象。内置基础大模型+常用插件+部分 Lora,以风格化图像生成只需用户让体验键配置简单方便,后续您可以根据自己的需要更换需要的模型、Lora、增加插件。
|
24天前
|
JSON 人工智能 Serverless
一键生成毛茸萌宠形象,基于函数计算极速部署ComfyUI生图系统
通过阿里云函数计算FC 和文件存储NAS,用户体验 ComfyUI 和预置工作流文件,用户可以快速生成毛茸茸萌宠等高质量图像。
一键生成毛茸萌宠形象,基于函数计算极速部署ComfyUI生图系统
|
13天前
|
存储 人工智能 安全
函数计算助您 7 分钟极速部署开源对话大模型
本方案利用函数计算的无服务器架构,您可以在函数计算控制台选择魔搭(ModelScope)开源大模型应用模板;同时,我们将利用文件存储 NAS ,为应用服务所需的大模型和相关文件提供一个安全的存储环境;最终通过访问提供的域名进行模型的调用与验证。仅需三步,即可玩转目前热门 AI 大模型。
|
13天前
|
存储 人工智能 Serverless
7分钟玩转 AI 应用,函数计算一键部署 AI 生图大模型
人工智能生成图像(AI 生图)的领域中,Stable Diffusion WebUI 以其强大的算法和稳定的输出质量而闻名。它能够快速地从文本描述中生成高质量的图像,为用户提供了一个直观且高效的创作平台。而 ComfyUI 则以其用户友好的界面和高度定制化的选项所受到欢迎。ComfyUI 的灵活性和直观性使得即使是没有技术背景的用户也能轻松上手。本次技术解决方案通过函数计算一键部署热门 AI 生图大模型,凭借其按量付费、卓越弹性、快速交付能力的特点,完美实现低成本,免运维。
|
5天前
|
弹性计算 运维 监控
阿里云 Serverless 助力盟主直播:高并发下的稳定性和成本优化
通过阿里云的 Serverless 产品和技术,盟主直播实现了核心直播平台的云原生架构升级,不仅解决了盟主直播现有业务面临的挑战,还面向未来为盟主直播的平台扩展性提供了技术基础,有效提升了行业竞争力。
|
1月前
|
弹性计算 Cloud Native Serverless
阿里云 SAE 邀您参加 Serverless 高可用架构挑战赛,赢取精美礼品
阿里云 SAE 邀您参加 Serverless 高可用架构挑战赛,赢取精美礼品。
|
4天前
|
人工智能 运维 物联网
云大使 X 函数计算 FC 专属活动上线!享返佣,一键打造 AI 应用
如今,AI 技术已经成为推动业务创新和增长的重要力量。但对于许多企业和开发者来说,如何高效、便捷地部署和管理 AI 应用仍然是一个挑战。阿里云函数计算 FC 以其免运维的特点,大大降低了 AI 应用部署的复杂性。用户无需担心底层资源的管理和运维问题,可以专注于应用的创新和开发,并且用户可以通过一键部署功能,迅速将 AI 大模型部署到云端,实现快速上线和迭代。函数计算目前推出了多种规格的云资源优惠套餐,用户可以根据实际需求灵活选择。
|
4月前
|
人工智能 自然语言处理 Serverless
阿里云函数计算 x NVIDIA 加速企业 AI 应用落地
阿里云函数计算与 NVIDIA TensorRT/TensorRT-LLM 展开合作,通过结合阿里云的无缝计算体验和 NVIDIA 的高性能推理库,开发者能够以更低的成本、更高的效率完成复杂的 AI 任务,加速技术落地和应用创新。
204 13
|
30天前
|
人工智能 Serverless API
尽享红利,Serverless构建企业AI应用方案与实践
本次课程由阿里云云原生架构师计缘分享,主题为“尽享红利,Serverless构建企业AI应用方案与实践”。课程分为四个部分:1) Serverless技术价值,介绍其发展趋势及优势;2) Serverless函数计算与AI的结合,探讨两者融合的应用场景;3) Serverless函数计算AIGC应用方案,展示具体的技术实现和客户案例;4) 业务初期如何降低使用门槛,提供新用户权益和免费资源。通过这些内容,帮助企业和开发者快速构建高效、低成本的AI应用。
74 12
|
5月前
|
Serverless API 异构计算
函数计算产品使用问题之修改SD模版应用的运行环境
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。