用 Docker 构建 Serverless 应用

本文涉及的产品
函数计算FC,每月15万CU 3个月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介:

Serverless 不意味着没有服务器,而是从应用可以在一个抽象层上忽略它的存在,而只关注在功能实现上和自身的请求处理上;每一个功能实现在不是单纯的业务逻辑处理的代码,相反每个功能调用具有了 Server 的特质,进化成为了一个具有自省、自知和自治的工作负载单元;他们更像是能够衍生出其它新功能单元的生物体。这样整个 Serverless 应用架构之内,每个生命可以衍生下去,子子孙孙无穷匮也。

处在这技术日新月异的时代里,新的技术浪潮经常对当前的技术产生着威胁和颠覆。在编写应用的时候我们目前经常谈论到“Serverless”技术。它的核心思想是把应用作为一系列的功能/function来部署,这些功能在需要的时候被按需部署。服务器管理应该是不需要去操心的事情,所有功能被按需调用,被运行在群集之上。

但是 Serverless 里不意味着没有 Docker,事实上 ”Docker 就是 Serverless”。你可以用 Docker 来容器化这些功能,然后按需地运行在 Swarm 群集上。Serverless 是一种构建分布式计算的应用的方法,而 Docker 是完美的构建和运行他们的平台。

从 Server 到 Serverless

那么我们如何来编写 Serverless 的应用?让我们先看下这个例子:“一个有5个子服务组成的投票应用”:

子服务

它的结构如下:

1. 两个 Web 前端

2. 一个后台的处理投票的 Worker 服务

3. 一个处理投票的消息队列

4. 一个数据库

那个后台处理投票的进程是非常容易成为转换为 Serverless 架构的目标。在投票应用内,我们可以运行一点类似于下面的代码,来执行后台任务:

Worker 和消息队列能用按需在 Swarm 上运行的容器来替换,并自动地按需扩容。

代码

我们甚至可以消除掉 Web 前端。我们可以这么做:用 Docker 容器来相应每一个HTTP 请求,每个 HTTP 请求都用一个自生长的跑着轻量 HTTP 服务器的容器来处理。之前使用的是长时间持续运行的 HTTP 服务器,现在变成了具有 HTTP 相应和处理能力的按需跑起来的容器,而且他们能自动地扩容来支持所有访问请求。

我们新的架构大概如下图所示:

架构

其中红色的方块是需持续长期运行的服务,而绿色方块成了按需被调用的 Docker容器。这样这个应用变成了只有少数几个需要被管理的 long-running 服务,在相应请求的时候使用原生的 Swarm 扩容能力,处理能力的上限是 Swarm 群集的上限。

具体如何实现

这里有三个有用的技巧,可以在你的程序中使用:

1. 把你代码中的 function 作为按需拉起的 Docker 容器

2. 使用 Swarm 在群集上运行这些容器

3. 从容器里面运行这些功能容器,绕过了一个 Docker API socket

使用以上技术的组合,程序执行负载发生的可能性将和您如何架构你的应用相关。运行后台任务就是一个非常适合的例子,但是整个应用中的其它工作负载也是有可能的,例如:

1.考虑到延迟,用启动一个容器来服务所有用户的 HTTP 请求可能是不现实的。可是你可以写一个内置的负载均衡逻辑,让它知道何时需要主动地自动扩容 Web 前端自身,通过在 Swarm 群集上运行更多 web 处理容器。

2.一个 MongoDB 容器可以在 Swarm 上成为一个具有自省能力的架构,它能自动地运行出正确数量的 shard 和 replica 容器。

接下来

我们已经得到了这些激进的新工具,用做构建应用的抽象层,我们隐约看到了如何深入下去的可能性。我们依然像长时间以来在一堆服务器上构建应用一样,而以后可以来利用 Swarm 能按需地在基础架构里的任何地方执行功能代码的能力。

希望这些能够给您一些如何构建应用的新思路,但是我们还需要你们的帮助。我们已经有的是一些构建 Serverless 应用的基础功能,然而他们依然不是很完备,我们需要更好的工具、库、样例程序,文档等等。


本文作者:佚名

来源:51CTO

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
2月前
|
运维 Kubernetes Docker
利用Docker和Kubernetes构建微服务架构
利用Docker和Kubernetes构建微服务架构
|
20天前
|
NoSQL Java Linux
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
193 75
|
7天前
|
存储 人工智能 Serverless
7分钟玩转 AI 应用,函数计算一键部署 AI 生图大模型
人工智能生成图像(AI 生图)的领域中,Stable Diffusion WebUI 以其强大的算法和稳定的输出质量而闻名。它能够快速地从文本描述中生成高质量的图像,为用户提供了一个直观且高效的创作平台。而 ComfyUI 则以其用户友好的界面和高度定制化的选项所受到欢迎。ComfyUI 的灵活性和直观性使得即使是没有技术背景的用户也能轻松上手。本次技术解决方案通过函数计算一键部署热门 AI 生图大模型,凭借其按量付费、卓越弹性、快速交付能力的特点,完美实现低成本,免运维。
|
24天前
|
人工智能 Serverless API
尽享红利,Serverless构建企业AI应用方案与实践
本次课程由阿里云云原生架构师计缘分享,主题为“尽享红利,Serverless构建企业AI应用方案与实践”。课程分为四个部分:1) Serverless技术价值,介绍其发展趋势及优势;2) Serverless函数计算与AI的结合,探讨两者融合的应用场景;3) Serverless函数计算AIGC应用方案,展示具体的技术实现和客户案例;4) 业务初期如何降低使用门槛,提供新用户权益和免费资源。通过这些内容,帮助企业和开发者快速构建高效、低成本的AI应用。
68 12
|
1月前
|
数据库 Docker 容器
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。Dockerfile定义了构建镜像所需的所有指令,包括基础镜像选择、软件安装、文件复制等,极大提高了开发和部署的灵活性与一致性。掌握Dockerfile的编写,对于提升软件开发效率和环境管理具有重要意义。
69 9
|
1月前
|
运维 Serverless 测试技术
通义灵码 x 函数计算:构建高效开发流程,加速项目交付
本方案基于通义大模型的通义灵码,提供代码生成、补全、优化及单元测试生成等能力,提升编码效率和质量。结合云效和函数计算 FC 进行代码管理、持续集成、部署发布,加速项目交付,为开发者提供智能编码、CI/CD、部署上线体验,加快产品迭代速度。
|
2月前
|
机器学习/深度学习 数据采集 Docker
Docker容器化实战:构建并部署一个简单的Web应用
Docker容器化实战:构建并部署一个简单的Web应用
|
2月前
|
存储 监控 Linux
docker构建镜像详解!!!
本文回顾了Docker的基本命令和管理技巧,包括容器和镜像的增删改查操作,容器的生命周期管理,以及如何通过端口映射和数据卷实现容器与宿主机之间的网络通信和数据持久化。文章还详细介绍了如何使用Docker部署一个简单的Web应用,并通过数据卷映射实现配置文件和日志的管理。最后,文章总结了如何制作自定义镜像,包括Nginx、Python3和CentOS镜像,以及如何制作私有云盘镜像。
195 2
|
2月前
|
API Docker 容器
【赵渝强老师】构建Docker Swarm集群
本文介绍了如何使用三台虚拟主机构建Docker Swarm集群。首先在master节点上初始化集群,然后通过特定命令将node1和node2作为worker节点加入集群。最后,在master节点上查看集群的节点信息,确认集群构建成功。文中还提供了相关图片和视频教程,帮助读者更好地理解和操作。
|
2月前
|
缓存 JavaScript 安全
深入理解Docker镜像构建过程
深入理解Docker镜像构建过程
84 0

相关产品

  • 函数计算