关于在项目中有没有必要使用docker的一点感悟
2017-11-06 14:17
288 查看
摘要: 在实际项目中要不要使用docker,以及使用docker后需要注意的问题,笔者结合实际应用,有感而发。
2.项目规模较小,人工完全可以应付
3.对于代码回滚能力,我们可以实现备份war包,当出现问题时可以使用替换war包的形式,而不是使用 Docker,因为如果采用docker,还有搭建私有docker registry,太过于重量级。
1.使用docker后日志我们该如何采集,有朋友会说可以在image里放一个agent用于收集日志,然后上传至日志处理中心,但是想想,是否符合docker的原则呢(一个容器只负责一件事)
2.容器多了我们该如何管理?
是使用 docker自带的调度还是k8s又或者是mesos?学习成本如何?
3.如何做容器的监控
以上是我的一点总结,系统大神们斧正。
一、背景
笔者在一家供应链公司,主要业务是跨境商品,公司研发部门成立于2016年4月,还是比较年轻的,项目开发采用传统的MVC架构,平台交易量不是很大不大。二、使用docker带来的好处
1、应用打包
以前我们发布应用通常把应用打成war包然后交付给运维,由运维统一上线,但是会出现这么一个情况,就是运维对应用的配置不是很清楚,有可能出现配置不当或者因为某些环境差异导致应用发布失败,而采用docker后,开发只需要提交代码到Jekins,然后Jekins检测到版本库是否有更新,如果有代码更新则自动构建打包成image镜像,然后上传至docker registry,运维要做的就是在docker registry获取最新的image然后发布就行了,这样就避免了上诉情况的发生。2、快速回滚能力
笔者以前犯过这样一个错误,一个商品搜索系统因为修改了某些代码,上线后Elasticsearch抛出了异常,因为没有备份上一个war包,所以就需找出问题所在然后重新编译源代码及修改配置,最终生成war然后再重新上传,导致我们搜索服务瘫痪了2个小时,当时就想,如果把war包打成docker镜像,然后上传至docker registry ,这样如果线上出问题,就可以拉取上一个image,因为上一个版本的镜像就存在本地,所以回滚到上一个版本就是分分钟的事了,当然也可以写一些脚本自动化完成。3、横向扩展能力
当项目设计高并发,这时项目需要横向扩展,传统做法就是加机器,但是一些公司申请机器是非常耗时的工作,就拿笔者公司来说,要申请一台机器最起码要3天时间,时间太慢,这时候就可以使用docker来解决这个问题,就是使用公用CASS平台或自建CASS平台,这样当并发来时,就可以在分钟级别启动多个容器来承载更多的并发,当峰值过去了,就可以动态缩容,避免资源浪费。三、我司为什么没有采用Docker
1.项目不涉及高并发2.项目规模较小,人工完全可以应付
3.对于代码回滚能力,我们可以实现备份war包,当出现问题时可以使用替换war包的形式,而不是使用 Docker,因为如果采用docker,还有搭建私有docker registry,太过于重量级。
四、总结
项目要尽可能简单化,没必要为了技术而技术,适合自己才是做好的。五、注意
在使用docker时要思考下下面几项。1.使用docker后日志我们该如何采集,有朋友会说可以在image里放一个agent用于收集日志,然后上传至日志处理中心,但是想想,是否符合docker的原则呢(一个容器只负责一件事)
2.容器多了我们该如何管理?
是使用 docker自带的调度还是k8s又或者是mesos?学习成本如何?
3.如何做容器的监控
以上是我的一点总结,系统大神们斧正。
相关文章推荐
- Android Studio 中关于debug使用的一点感悟
- 关于在applet中使用JDBC访问数据库的一点总结
- 关于在项目中使用开源项目的疑惑,恳请大家给点意见!
- 关于使用SQLDMO.Backup和SQLDMO.Restore的一点经验
- 关于使用Net2.0对AD编程的一点疑问?
- 关于在组件GIS开发中使用Python的一点补充说明
- 关于多项目管理过程中的一些感悟
- 关于使用TestDriven.Net 2.0的一点补充
- 关于Java开发中使用Oracle数据库的一点注意事项
- 关于使用ISCSI storage 的一点经验(完善中) 推荐
- 关于ListBox,ComboBox使用的一点小技巧
- 关于memset使用的一点小插曲
- 关于.net的combobox的一点使用心得
- C#关于"该进程无法访问文件,因为该文件正由另一进程使用"的错误的一点心得(示例)
- 关于使用JS修改图片地址的一点困惑
- 又是一点关于过年前做的项目的一些想法!
- 我想翻译一点关于编写控件的文章,不知道有没有人喜欢?
- 使用ASP.NET中的一点体会--关于代码分离(转载)
- 关于RCP中使用系统resource navigator图标和项目名称不显示的问题
- 使用ASP.NET中的一点体会--关于代码分离[原创]