用 Docker 创建 serverless 应用
来源:互联网 发布:襄阳网络电视台台湾周 编辑:程序博客网 时间:2024/05/16 08:10
但是 serverless 并不意味着没有 Docker 什么事儿,事实上 Docker 就是 serverless 的。你可以使用 Docker 来容器化这些功能,然后在 Swarm 中按需求来运行它们。serverless 是一项构建分布式应用的技术,而 Docker 是它们完美的构建平台。
那如何才能写一个 serverless 应用呢?来看一下我们的例子,"https://github.com/docker/example-voting-app"5个服务组成的投票系统
投票系统由下面5个服务组成:
- 两个 web 前端
- 一个后台处理投票的进程
- 一个计票的消息队列
- 一个数据库
后台处理投票的进程很容易转换成 serverless 构架,我们可以使用以下代码来实现:
import dockerrunclient = dockerrun.from_env()client.run("bfirsh/serverless-record-vote-task", [voter_id, vote], detach=True)
这个投票处理进程和消息队列可以用运行在 Swarm 上的 Docker 容器来代替,并实现按需自动部署。
我们也可以用容器替换 web 前端,使用一个轻量级 HTTP 服务器来触发容器响应一个 HTTP 请求。Docker 容器代替长期运行的 HTTP 服务器来挑起响应请求的重担,这些容器可以自动扩容来支撑更大访问量。
新的架构就像这样:
红色框内是持续运行的服务,绿色框内是按需启动的容器。这个架构里需要你来管理的长期运行服务更少,并且可以自动扩容(最大容量由你的 Swarm 决定)。
你可以在你的应用中使用3种技术:
- 在 Docker 容器中按需运行代码。
- 使用 Swarm 来部署集群。
- 通过使用 Docker API 套接字在容器中运行容器。
结合这3种技术,你可以有很多方法搭建你的应用架构。用这种方法来部署后台环境真是非常有效,而在另一些场景,也可以这么玩,比如说:
- 由于存在延时,使用容器实现面向用户的 HTTP 请求可能不是很合适,但你可以写一个负载均衡器,使用 Swarm 来对自己的 web 前端进行自动扩容。
- 实现一个 MongoDB 容器,可以自检 Swarm 并且启动正确的分片和副本(LCTT 译注:分片技术为大规模并行检索提供支持,副本技术则是为数据提供冗余)。
我们提供了这些前卫的工具和概念来构建应用,并没有深入发掘它们的功能。我们的架构里还是存在长期运行的服务,将来我们需要使用 Swarm 来把所有服务都用按需扩容的方式实现。
希望本文能在你搭建架构时给你一些启发。
玩得愉快。
via: http://devzum.com/2015/01/28/top-12-best-free-network-monitoring-tools/
作者:Ben Firshman 译者:bazz2校对:wxy
本文由 LCTT 原创编译,Linux中国 荣誉推出
本文地址 : http://www.linuxprobe.com/docker-creat-serverless.html
免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:http://www.linuxprobe.com/
- 用 Docker 创建 serverless 应用
- 用 Docker 创建 serverless 应用
- 用 Docker 创建 serverless 应用
- 用 Docker 创建 serverless 应用
- 用 Docker 构建 Serverless 应用
- 有容云:用 Docker 构建 Serverless 应用
- Serverless 架构应用开发指南:创建自己的 Serverless 短链服务
- Serverless
- Serverless
- Serverless 应用开发指南:serverless 的 hello, world
- 采用Serverless架构搭建Web应用
- Docker应用示例1--使用Docker创建Web服务
- Docker应用示例2--使用Docker创建简单集群服务
- docker创建disconf镜像并应用
- Serverless 应用开发指南:基于 Serverless 与 Lambda 的微信公共平台
- 用docker-machine创建虚拟主机
- Serverless架构 - 用服务代替服务器
- Serverless 架构:用服务代替服务器
- IDA的string,section查看及代码重定位
- Toolbar随着ScrollView滑动透明度渐变效果实现
- python 4-3 如何调整字符串中文本格式re.sub(p,r'\1/\2',str1)/re.sub('(?P<Name>p),'\g<Name>',str1)
- FastScrollView实现及其setContentSize与setInnerContainerSize理解
- logcat内容备份
- 用 Docker 创建 serverless 应用
- Lotus and Characters
- oracle查看被锁的表和解锁
- 分解质因数
- ioncube加密与解密 php代码
- MFC MainFrame中的 OnShowWindow一个bug
- Hadoop集群环境搭建
- 告诉你一个去除PDF文件水印简单快速的方法
- 最近在C++ 中用到extern关键字的一点点感悟