本文共 2661 字,大约阅读时间需要 8 分钟。
本文正在参加“最佳上云实践”评选,来给我们投票吧:(编号3)
在2015年12月29日,菜鸟推出了中国首个物流云平台,韵达成为首家战略合作伙伴,也是国内首家业务系统全面上云的快递企业。
所谓物流云,是一个基于云计算的物流基础信息服务平台,它能提供安全稳定的云设施环境,帮助快递企业和物流订单涉及所有链路成员建立连接、沉淀大数据,并在此基础上提供多样化的智能产品。
下图是韵达上物流云的整个进度。
刚开始讨论是否上物流云的时候,还是很纠结的。整个的核心系统要从IDC机房整体搬上物流云的过程中会遇到哪些问题?如何保证业务不受影响?所以前期和菜鸟进行了多次的合作讨论和方案论证。项目立项完成之后,针对十六个核心的业务系统(订单、COD、仓储、客服、跨境等)进行了拆分,降低关联性。上云之后继续和菜鸟进行深度合作,解决上云之前遇到的一些问题(系统架构优化、云上数据推送、大数据分析、全链路日志监控等)。
下图是韵达所采用的混合云架构。
上图左边部分是韵达自有的IDC机房的一些应用服务,主要为涉及财务结算的系统。中间部分是韵达核心系统上云之后的架构图。右边是跨境业务在香港机房的系统架构图。从图中可以看出,上云过程中做了很多系统改造工作,比如使用多可用域、跨多个物理机房做了相关的集群部署。
典型的问题是数据迁移。怎么在线下把韵达大量的数据搬到云上又不能对线下的系统造成影响?
最终讨论得到的解决方案是:在云上用了一台ECS服务器安装了MySQL的备库,对IDC机房做了一个主从的同步,使用了阿里云DTS工具从中间库向最终的目标RDS库进行数据同步。这个方案可同时实现存量数据迁移、增量数据同步到云上,数据同步的网络延迟毫秒级(DTS同步速度理论上可达到70Mbps)。
考虑到降低IT成本,我们采用了Docker技术。Docker是集装箱演变过来的,集装箱可以对货物进行标准化的分装,不同集装箱之间可以做很好的隔离,Docker就是引用这种理念产生的。
Docker可以将文件系统进行隔离,包括将资源、网络进行隔离,每个容器相互之间不会受到影响,并且可以通过cgroup的技术对资源进行很方便的分配。
作为一种新兴的虚拟化方式,Docker跟传统的虚拟化方式相比具有众多的优势:
对开发和运维(devop)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。Docker可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。Docker容器的启动时间是秒级的,大量地节约开发、测试、部署的时间。
下面从六个维度将Docker和传统虚拟机进行了对比。
传统型软件开发,从开始搭建开发环境到测试,再到上线,是一个很繁琐的过程。如下图:
这个过程中存在以下不足之处:
采用Docker仓库,把需要的环境封装好,把相关的镜像上传到仓库里面。开发人员直接从仓库里获取相关的镜像来进行相关的开发测试。测试人员和运维人员同样可以从仓库获取相关镜像进行相关工作。整个过程十分便捷,而且占用的资源比较少。
开发人员编写好代码之后,进行环境定义,最终把定义好的文件打包封装成一个镜像上传到仓库中。当存在对多个Docker镜像进行管理的时候,可能会遇到一些问题,Docker官方提供了Docker-compose工具。这个工具多个具有依赖关系的镜像进行管理。
下面是我们在使用Docker的过程中遇到的一些问题,希望对大家能有一些参考:
尽管Docker相对虚拟机有诸多优势,但是也有一些不足之处,比如:
上云之后,带来的好处也是显而易见的,投入成本大大降低,云上运维变得简单。现在我们的人员投入已经减少到6人,云资源的使用成本相比自建硬件投入成本大大降低,另外,上云项目周期也缩短到了2个月,由于不需要维护基础设施,云上的运维也变得更加简单。
怎样自动化的完成后续交付和部署的工作?目前采用的方式是开发人员把代码上传到SVN上,通过第三方的开源工具、自动化的发布工具进行相关的管理工作。后续跟菜鸟多次探讨之后,可能会使用阿里云的持续交付平台来解决持续发布过程中遇到的一些问题。
未来计划做的一些工作:
转载地址:http://apbzx.baihongyu.com/