对延时敏感的应用是否应该使用Docker?

在High Scalability上看到一篇文章 How Does The Use of Docker Effect Latency? ,文章回答了一个问题

I keep hearing about [Docker] as if it is the greatest thing since sliced bread, but I’ve heard anecdotal evidence that low latency apps take a hit.

Gill的回答,Docker基于Linux Container运行在宿主机上,从CPU和Memory的角度,由于Docker并没有独立的一层做虚拟化,性能影响可以忽略不计;从I/O(Disk/Networking)的角度,不同的选择,有可能带来较大的性能影响

IBM有个测试报告:An Updated Performance Comparision of Virtual Machines and Linux Containers ,作者系统的对比测试了Docker、KVM和Native方式下性能差别,结论和Gill的回答一致:在CPU和Memory方面,Docker开销极小;在I/O方面,影响明显,需要做调整才能降低影响。
比较典型的:
当使用AUFS(Advanced Multi Layered Unification Filesystem)时,Docker性能降低明显;使用Volume能够获得更好的性能。
使用Docker的默认网络选型–net=bridge时,网络吞吐大时,开销明显,可以通过–net=host降低性能影响,但同时会带来一些问题

个人建议:
公司如果对Docker有很多的应用经验,并且有强大的基础架构/运维团队Support,可以将Low Latency APP上到Docker

腾讯有个很好的分享:腾讯游戏是如何使用Docker的?,推荐看看!


Docker是一个流行的容器化平台,它主要用于软件打包、部署和运行。以下是使用Docker的主要原因: 1. **应用封装**:Docker应用程序及其依赖项打包到一个轻量级的容器中,确保在不同环境(如开发、测试、生产)中的一致性。 2. **环境隔离**:每个容器都有自己的运行时环境,包括操作系统层,这意味着开发者可以在本地开发环境中构建并运行容器,而不会影响主机系统的其他应用。 3. **资源高效**:Docker利用操作系统级别的隔离,使得容器启动快,资源占用小,提高了资源利用率。 4. **部署便捷**:Docker镜像的复用性使得部署和迁移应用变得简单快捷,减少配置复杂性。 5. **版本管理和生命周期管理**:Docker提供了一致的方式来管理应用的生命周期,从创建镜像到运行容器,再到更新和停止。 6. **可移植性**:Docker容器可以在不同的计算平台(包括云服务提供商、虚拟机、物理服务器)上运行,提高了应用的部署灵活性。 7. **持续集成/持续部署(CI/CD)**:Docker是自动化部署流水线的重要组件,有助于快速迭代和交付。 Docker应用范围广泛,包括但不限于: - **Web应用**:前端、后端、API服务等都可以容器化部署。 - **微服务架构**:将服务拆分成独立的容器,方便协作和扩展。 - **DevOps**:加速开发者的本地开发和测试环境的搭建。 - **云计算**:在AWS、Google Cloud、Azure等云平台上,Docker是容器编排工具(如Kubernetes)的基础。 - **大数据和机器学习**:Hadoop、Spark和TensorFlow等可以通过Docker部署。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值