使用容器的正确方式,使用容器的正确方式,Docker在雪球的技术实践在雪球的技术实践
本文主要分为如下三个方面跟大家分享雪球在业务中引入和使用容器技术的心路历程:
1.为什么要引入 Docker
2.Docker 在雪球的技术实践
3.后续演进
雪球是一个投资者交流的社区,用户可以在上面买卖股票,代销基金等各种金融衍生业务,同时也可以通过雪盈证券来进行
沪、深、港、美股的交易。
为什么要引入 Docker
随着业务的发展,不同的社区业务之间所受到影响的概率正在逐渐升高,因此我们希望各个业务之间既能够不被打扰,又能在
资源上、机器间、甚至网络上根据监管的要求予以不同层面的隔离。
早在 2014 年时,我们就发现容器技术具有本身镜像小、灵活、启动速度快等特点,而且在性能上比较适合于我们当时物理机
不多的规模环境。
相比而言,传统的虚拟化技术不但实现成本高,而且性能损耗也超过 10%。因此,基于对镜像大小、启动速度、性能损耗、
和隔离需求的综合考虑,我们选用了两种容器引擎:LXC 和 Docker。
我们把 MySQL 之类有状态的服务放在 LXC 里;而将线上业务之类无状态的服务放在 Docker 中。
容器使用方法
众所周知,Docker 是以类似于单机的软件形态问世的,最初它的宣传口号是:Build/Ship/Run。
因此它早期的 Workflow(流程)是:
1.在一台 Host 主机上先运行 Docker Build。
2.然后运用 Docker Pull,从镜像仓库里把镜像拉下来。
3.最后使用 Docker Run,就有了一个运行的 Container。
需要解决的问题
上述的流程方案伴随着如下有待解决的问题:
1.网络连通性,由于是单机软件,Docker 最初默认使用的是 Bridge 模式,不同宿主机之间的网络并不相通。因此,早期大家
交流最多的就是如何解决网络连通性的问题。
2.多节点的服务部署与更新,在上马该容器方案之后,我们发现由于本身性能损耗比较小,其节点的数量会出现爆炸式增长。
因此,往往会出现一台物理机上能够运行几十个节点的状况。容器节点的绝对数量会比物理节点的数量大一个数量级,甚至更
多。那么这么多节点的服务部署与更新,直接导致了工作量的倍数增加。
3.监控,同时,我们需要为这么多节点的运行状态采用合适的监控方案。
Docker 在雪球的技术实践