本文共 2875 字,大约阅读时间需要 9 分钟。
在2016杭州云栖大会第二日,韵达快运集团高级总监张磊在智慧物流专场分享了《大数据在物流行业应用突破——大规模云上调度实践》。他主要从韵达上云过程、云上资源调度实践、未来发展三个方面进行了分享,详细介绍了韵达上云的过程和经验,以及Docker技术的实践。
以下内容根据演讲PPT及现场分享整理。
上图是韵达上物流云的整个进度。刚开始讨论是否上物流云的时候,还是很纠结的。整个的核心系统要从IDC机房整体搬上物流云的过程中会遇到哪些问题?如何保证业务不受影响?所以前期和菜鸟进行了多次的合作讨论和方案论证。项目立项完成之后,针对十六个核心的业务系统(订单、COD、仓储、客服、跨境等)进行了拆分,降低关联性。上云之后继续和菜鸟进行深度合作,解决上云之前遇到的一些问题(系统架构优化、云上数据推送、大数据分析、全链路日志监控等)。
上图左边部分是韵达自有的IDC机房的一些应用服务,主要为涉及财务结算的系统。中间部分是韵达核心系统上云之后的架构图。右边是跨境业务在香港机房的系统架构图。从图中可以看出,上云过程中做了很多系统改造工作,比如使用多可用域、跨多个物理机房做了相关的集群部署。
典型的问题是数据迁移。怎么在线下把韵达大量的数据搬到云上又不能对线下的系统造成影响?最终讨论得到的解决方案是:在云上用了一台ECS服务器安装了MySQL的备库,对IDC机房做了一个主从的同步,使用了阿里云DTS工具从中间库向最终的目标RDS库进行数据同步。这个方案可同时实现存量数据迁移、增量数据同步到云上,数据同步的网络延迟毫秒级(DTS同步速度理论上可达到70Mbps)。
上云之后,投入成本大大降低,云上运维变得简单。
考虑到降低ID成本,采用了Docker技术。Docker是集装箱演变过来的,集装箱可以对货物进行标准化的分装,不同集装箱之间可以做很好的隔离,Docker就是引用这种理念产生的。
Docker会在隔离的容器中运行进程。当运行docker run命令时,Docker会启动一个进程,并为这个进程分配其独占的文件系统、网络资源和以此进程为根进程的进程组。在容器启动时,镜像可能已经定义了要运行的二进制文件、暴露的网络端口等,但是用户可以通过docker run命令重新定义。Docker可以将文件系统进行隔离,包括将资源、网络进行隔离,每个容器相互之间不会受到影响,并且可以通过cgroup的技术对资源进行很方便的分配。
对开发和运维(devop)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。Docker可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。Docker容器的启动时间是秒级的,大量地节约开发、测试、部署的时间。
上图从六个维度将Docker和传统虚拟机进行了对比。
从上图可以很明显的看到,从开始搭建开发环境到测试,再到上线,是一个很繁琐的过程。这个过程中存在以下不足之处:资源利用效率低;单物理机多应用无法有效隔离(进程空间,cpu资源,磁盘);运维部署不便;测试、版本管理复杂;迁移成本高;传统虚拟机,空间占用大,启动慢,管理复杂。
采用Docker仓库,把需要的环境封装好,把相关的镜像上传到仓库里面。开发人员直接从仓库里获取相关的镜像来进行相关的开发测试。测试人员和运维人员同样可以从仓库获取相关镜像进行相关工作。整个过程十分便捷,而且占用的资源比较少。
开发人员编写好代码之后,进行环境定义,最终把定义好的文件打包封装成一个镜像上传到仓库中。当存在对多个Docker镜像进行管理的时候,可能会遇到一些问题,Docker官方提供了Docker-compose工具。这个工具多个具有依赖关系的镜像进行管理。
怎样自动化的完成后续交付和部署的工作?目前采用的方式是开发人员把代码上传到SVN上,通过第三方的开源工具、自动化的发布工具进行相关的管理工作。后续跟菜鸟多次探讨之后,可能会使用阿里云的持续交付平台来解决持续发布过程中遇到的一些问题。
未来计划做的一些工作:
转载地址:http://arqyx.baihongyu.com/