蚂蚁金融云是蚂蚁金服推出的针对金融行业的云计算服务,旨在将蚂蚁金服的大型分布式交易系统中间件技术以PaaS的方式提供给相应客户。在整个的PaaS产品中,蚂蚁金服通过基于Docker的CaaS层来为上层提供计算存储网络资源,以提高资源的利用率与交付速度,并用来隔离底层IaaS的不同,IaaS、CaaS 与PaaS三层相互借力,互相配合。为了进一步了解蚂蚁金融云的整个体系架构,InfoQ采访了蚂蚁金服基础技术部系统组leader吴峥涛。

InfoQ:能否介绍下蚂蚁金服的金融云PaaS平台?

吴峥涛:金融云PaaS是从2014年中开始研发的,目前已经承载了网商银行以及另外两个核心业务,后续会以公有云和专有云两种模式对外提供。之所以会有金融云PaaS这个项目,是因为蚂蚁这些年来在大型分布式系统领域涉及的SOA、消息通讯、水平扩展、分库切片、数据一致、监控、安全等技术方向积累了大量的中间件以及与之完整配套的监控运维研发流程体系,这一切在性能和稳定性以及扩展性上做的都不错,能够有效的支撑蚂蚁的业务发展,并应对『双11』这样的高负荷挑战。很多金融客户与伙伴都对此非常感兴趣,所以我们希望能够把这一整套的技术上云并产品化,以 PaaS的方式整体对外输出,帮助金融行业的客户使用云计算技术去IOE,帮助他们解决我们已经解决的技术问题,让他们能专注于业务逻辑。上帝的归上帝,凯撒的归凯撒。

InfoQ:蚂蚁金服想把自己的中间件技术以PaaS产品的形式对外输出,这中间碰到了哪些问题?为什么会想到通过Docker这样的技术来解决?

吴峥涛:遇到的问题有很多,最主要的问题包括:

  1. 金融云PaaS是承载在阿里云IaaS上的,最初的方案是,用户部署应用的时候,根据所属技术栈,由系统解析软件包(例如sofa4依赖CloudEngine、Tengine、cronolog、JDK等等),下载安装配置并启动。这样的资源交付、应用部署周期比较长,客户体验不太好。
  2. 蚂蚁的应用架构采用的是基于服务发现、消息总线的SOA方案,模块间通过服务接口调用;服务可以是本地接口也可以是远程接口,对于调用者是解耦合的。在实际部署的时候,我们会根据业务纬度切分大量的服务模块出来,以金融云PaaS中枢为例,目前已经有几十种服务模块。这样的话,我们希望资源粒度越小越好,原有以VM为粒度的资源分配方式已经不能满足我们的需求。同时资源交付速度慢导致扩容缩容慢,影响资源利用率。
  3. 金融云PaaS如果对外输出,可能使用非阿里云的IaaS,所以需要一个中间层屏蔽多种IAAS的区别。
  4. 镜像管理比较麻烦,无法自动化,也不是白盒。

而遇到的这些问题,都可以通过Docker来解决。

InfoQ:能否介绍下你们整个平台的系统架构?Docker在整个架构中扮演怎么样的位置?

吴峥涛:我们在PaaS和IaaS之间插了一个AntCaaS层,这是一个基于Docker的管控平台,他的职责是:

  1. 以微容器(Docker)为载体,为用户(PaaS、SaaS)按需提供计算存储网络资源,提高资源的利用率与交付速度。
  2. 对PaaS、SaaS屏蔽IaaS实现细节。
  3. 实现容器、集群级别的标准化与可复制、可迁移。


AntCaaS提供container、app、cluster三层接口,可以把他当作一个轻量级的IaaS,区别仅仅是提供Container而不是VM,然后也提供PaaS层的接口。

一个比较有特色的功能是,通过『镜像中心+集群template+环境相关参数列表』,我们实现了集群的快速复制,目的是为了应付突发的负载高峰。

InfoQ:在PaaS层面,你们是如何屏蔽底层不同IaaS的区别的?

吴峥涛:目前AntCaaS可以直接运行在物理机上也可以运行在经典网络的ECS VM集群中,VPC、ECS支持还在开发过程中。在AntCaaS中,我们采用三层架构,通过创建不同pool来兼容不同的IaaS。pool包含了:

  1. 多个node(container的载体)。
  2. ZK用以监控node和container。
  3. scheduler 调度器,负载container的创建调度。
  4. manager,对master提供管控的HTTP Rest接口。
  5. registry-proxy 保证网络联通性以及cache镜像数据,加速镜像下载。
  6. 在node内起cadvisor监控container。

Docker默认的bridge/host网络模式不能满足我们的需要,根据IaaS提供的网络功能不同,我们扩展了vlan/vxlan 两种网络driver,第三者vpc driver还在开发中。

vlan模式,事先为container分配一个与node不一样的网段,

vxlan模式,首先通过ovs实现跨node的私有网络,然后通过zk缓存同步vpcid、vpc ip、node ip的映射关系,极端情况下,如果一个vpc有1000个container分布在1000个node上,那么新建一个container加入这个vpc 时,需要通知所有的node。

另外在VPC内,我们提供轻量级的DNS,用于内部域名解析;轻量级的LB,用于内部的负载均衡。

下图是可扩展的容器创建流程。

InfoQ:容器的安全问题是怎么解决的?

吴峥涛:基于pool-node-container的三层解决方案。用户和pool是1对多的关系,所以 pool的node必然都属于同一个用户,同一个node上的container属于同一个用户。pool和pool之间根据IaaS不同采用不同的隔离方案,经典网络的ECS使用安全组隔离,vpc ecs使用vpc隔离。

InfoQ:社区中有反馈说Docker会经常无故挂掉,你们有遇到过吗?有做过深入跟进吗?

吴峥涛:碰到过,我们的架构设计允许Docker Daemon和Container挂掉。使用了集团的一个Docker Patch,在Docker Daemon挂掉后,不影响container运行。出现比较多的场景是docker pull时候。

InfoQ:你们是如何将基于Docker的系统与原有系统对接的?

吴峥涛:为了与现有的运维流程管控SCM系统对接,帮助现有系统迁移,以及帮助开发同学转换开发模式,我们做了不少妥协方案。作为Docker fans,理想的开发模式是下面这样。

但是实际上蚂蚁目前已经有1000多个应用,几千的开发人员,很难让他们一下都切换到Docker这种以镜像为中心的研发模式上;但是如果一个团队一个团队的推广,那么耗时不可控。并且蚂蚁原有的运维、监控、SCM等系统都是以VM为纬度的,基于Docker的运维发布系统需要与原有系统对接集成难度比较大。

所以我们的第一个策略是,首先解决线上环境的Docker化部署问题,开发者的本地开发环境Docker化问题暂且不管,希望通过线上环境Docker化来吸引开发人员学习使用Docker。

接下来的问题是,谁来写Dockerfile,首先各个研发团队的人不关心是否使用Docker部署,所以不可能写Dockerfile,由 Docker团队或者运维同学负责,没有应用代码的编辑权限,同时工作量太大并且不了解应用容易出问题。所幸蚂蚁的业务应用大多数都是基于sofa3或 sofa4框架的Java应用,所以我们做了sofa3/4的基础镜像以及提供一个辅助工具,使用sofa3/4镜像启动一个container,然后使用原有的发布工具将应用的tgz包(类似war)发布到container中。这样就不需要写Dockerfile,同时原有运维系统也能把 container当作VM,无缝对接。

InfoQ:聊聊你们异地多机房的统一镜像中心解决方案?

吴峥涛:关于跨机房镜像中心的解决方案要点:

  1. 将镜像数据存在OSS写三份,保证数据安全性;
  2. Registry本地不保存数据,是无状态的服务,可以水平扩展;
  3. Registry 上跑一个Nginx,提高镜像数据访问速度;
  4. 在每个pool中部署一套Nginx,开启文件缓存,对常见镜像进行预热,构建缓存。

本文转载自InfoQ

原文链接:http://www.infoq.com/cn/articles/docker-in-the-antgroup-cloud-platform/

Docker在蚂蚁金融云平台中的探索与实践相关推荐

  1. 分布式数据库在金融应用场景中的探索与实践

    分布式数据库在金融应用场景中的探索与实践 刘雷, 郭志军, 马海欣, 赵琼, 胡卉芪, 蔡鹏, 杜洪涛, 周傲英, 李战怀 交通银行软件开发中心,上海 201201 华东师范大学数据科学与工程学院,上 ...

  2. 支持亿级标签接入,ClickHouse在广域物联网云平台架构的探索与实践

    业务背景:自纵行科技在2020年推出ZETag云标签以来广受市场好评,目前已经在物流.资产管理.库存盘点等领域有了许多落地项目.在业务量急速增加的过程中,ZETag云平台作为解决方案中重要的一环,也面 ...

  3. 视频私有云实战:基于Docker构建点播私有云平台

    私有云是为一个客户单独使用而构建的,因而提供对数据.安全性和服务质量的最有效控制.前置条件是客户拥有基础设施,并可以使用基础设施在其上部署应用程序.其核心属性是专有的资源.本篇文章将会结合网易云信的实 ...

  4. 基于Docker的CaaS容器云平台架构设计及市场分析

    基于Docker的CaaS容器云平台架构设计及市场分析 1 项目背景-概述: "在移动互联网时代,企业需要寻找新的软件交付流程和IT架构,从而实现架构平台化,交付持续化,业务服务化. 容器将 ...

  5. 无科技不金融!深信服落子金融云平台

    整理 | 伍杏玲 出品 | CSDN云计算(ID:CSDNcloud) 据普华永道<2020年与未来的金融服务技术:拥抱颠覆者>报告显示,全球 81% 银行 CEO 在众多领域中尤其关注科 ...

  6. 数据管理DMS企业版接入蚂蚁金融云售卖

    信息摘要: DMS企业版蚂蚁金融云开服 适用客户: 蚂蚁金融云用户 版本/规格功能:  DMS企业版入驻蚂蚁金融云售卖,支持蚂蚁金融云内的企业用户使用本产品的各项数据管理功能.支持DBA.运维人员对不 ...

  7. 云平台中节点异常如何考虑迁移因素

    在云平台中物理节点异常是否立即迁移到其他可用资源节点?还是人为干预? 手动恢复异常节点的云主机...? 自动迁移实现不难,难就难在如何定位故障?物理机异常有N种假设: 网络故障:交换机端口异常,广播风 ...

  8. kubernetes(K8s):管理云平台中多个主机上的容器化的应用

    目录 kubernetes简介 Kubernetes生态 Kubernetes概述 Kubernetes官网 kubernetes简介 kubernetes,简称K8s,是用8代替8个字符" ...

  9. 一种云平台中基于虚机和订单元信息的跨租户数据迁移实现统一纳管的方法

    一种云平台中基于虚机和订单元信息的跨租户数据迁移实现统一纳管的方法 一.发明名称 一种云平台中基于虚机和订单元信息的跨租户数据迁移实现统一纳管的方法 二.技术领域 云计算 数据迁移 统一纳管 三.现有 ...

  10. 多视角看云平台中的服务可用性

    近几年随着云计算的飞速发展,各大软件巨头厂商如微软.IBM等们也都纷纷向云计算转型.大中型企业即便没有上公有云也都在云计算方面布局,加大投入建设企业私有云.中小型企业都越来越热衷于将自己业务应用部署到 ...

最新文章

  1. VUE-CLI webpack配置autoprefixer后build模式与dev不相同,打包后部分前缀或属性丢失,所见即所得...
  2. wxWidgets:wxComboCtrl类用法
  3. python网络通信
  4. Codeforces.1110E.Magic Stones(思路 差分)
  5. 计算机技能需求新排名:C语言仅排第 8,第 1 名你想不到!
  6. 用了Dapper之后通篇还是SqlConnection,真的看不下去了
  7. 通过6个简单的步骤在Windows上运行Apache Hive
  8. 在网上找到一个CSS hack列表,记录在这里以分析css的浏览器兼容性
  9. java期末项目实验答辩毕业设计工程项目源码
  10. SQL Server Profiler(二)
  11. C++ :stringstream介绍,使用方法与例子(转)
  12. php加速缓存器opcache,apc,xcache,eAccelerator
  13. Python之路【第十五篇】:Web框架
  14. 使用python中正则表达式匹配linux ifconifg命令中的具体信息
  15. html获取元素的rgb值,使用javascript提取支持的HTML或X11颜色名称及其RGB值的列表
  16. Atitit spirngboot 访问 html文件总结 自设计web服务器原理与实现 Url路由压力,读取url,获得项目更路径绝对路径,拼接为文件路径。读取文建内容输出即可 目录路径 u
  17. 收藏 | 从Python安装到语法基础,小白都能懂的爬虫教程!(附代码)
  18. vue-devtools工具点击open in editor 自动跳转到对应的组件页面
  19. 为Chrome设置代理
  20. java移动小球_使用java实现持续移动的小球

热门文章

  1. 基于帧的时隙ALOHA(FSA)算法的实现与性能分析
  2. boost::math::binomial_distribution用法的测试程序
  3. mysql数据库test密码_TestCenter常见问题
  4. TestCenter测试管理工具问题详解(6)
  5. 把撒哈拉沙漠变成一个太阳能农场,这可能吗?
  6. 新辰:台北90后创业炸鸡配啤酒 来自星星的你 不成功也难
  7. mysql 密码复杂度要求_MySQL设置密码复杂度
  8. Linux第7章Gdk及Cairo基础,GNOME 平台的2D图形编程(GTK,GDK,Cairo...) 简介 [转]...
  9. 服务器网卡相关知识点
  10. 使用vue全家桶开发音乐App