揭密七牛云:如何打造百亿级数据处理量的弹性调度容器平台
编者按:Docker 是当前最火热的开源项目之一,它重新定义了程序开发测试、交付和部署过程,可以做到「Build once,Run anywhere」。如何应对百亿级数据处理的请求,七牛云数据处理团队分享了实战经验。
一、数据处理业务场景
二、海量数据处理平台的挑战
- 日均请求量百亿级,CPU 密集型计算 目前系统每天有近百亿的数据处理请求量,拥有近千台的计算集群,整个存量、增量都非常大。而数据处理集群中绝大部分的机器都是用来跑图片、音视频转码的,这些都是 CPU 密集型的计算,这意味着后台需要很多台机器,而且 CPU 的核数越多越好。在年底数据处理平台可能会在目前近千台的计算集群基础上翻好几倍,需要有快速物理扩展和高效智能管理的能力。
- 服务器负载不均衡,资源利用率不高 实时在线处理的业务处理时间短,但是量大,需要大量的实例来应对高并发的情况。而异步处理的业务处理时间长,也需要分配足够的资源来。当实时业务并不繁忙而异步处理业务增长时,并不能使用分配给实时业务的资源, 这种静态资源分配机制带来的分配不合理问题,导致服务器负载不均衡,资源利用率不高。
- 突发流量不可测量, 大量冗余资源 在新接入用户并不能完全正确的预测请求量,原来的模式是通过快速扩容机器并验证上线,需要一定的处理时间,对于这种非计划内的请求量需要准备大量的冗余资源来应对突发流量。
- 集群负载过重,不能自动按需扩展 个别用户突增数据处理请求时导致集群负载压力过大,CPU 处理变慢, 请求时间变长,请求任务堆积,影响其他业务,并不能在现有的资源基础上进行快速扩展,也不能根据实际的业务压力进行按需自动扩展集群实例。
- 用户自定义应用(UFOP)质量及规模未知 七牛除了提供官方的数据处理服务,也支持客户将自定义数据处理模块部署到七牛云存储的就近计算环境,避免远程读写数据的性能开销和流量成本,满足用户多方位的数据处理需求。但是各种 UFOP 运行在同一个平台上就可能会存在部分 UFOP 的质量问题或请求量过大而分配的资源不足导致影响平台上其他服务的正常运行。
三、自研容器调度系统介绍
- Mesos:由 ZooKeeper、Mesos Master、Mesos Agent 构成了基础的 Mesos 数据中心操作系统,可以统一管理机房中的所有物理机,负责资源层面的调度,是二层调度系统最基础的运行环境 。
- DoraFramework:业务层调度框架,通过 DoraFramework 使用 Mesos 管理所有的物理机资源,完成业务进程的调度与管理。
- Consul:包含服务发现,健康检查和 KV 存储功能的一个开源集群管理系统,DoraFramework 调度系统使用 Consul 的服务发现和健康检查机制提供基础的服务发现功能,使用 KV 存储功能来存储 DoraFramework 的 metadata。
- Prometheus:一个开源的监控系统,实现机器级别,容器级别及业务系统级别的监控。
- Pandora: 七牛的内部的日志控制管理系统,负责生产环境所有日志的汇聚及处理。
- 自动化应用的部署
- 服务注册与发现
- 弹性调度容器数量
- 负载均衡
- 支持在指定机器上增加或减少实例
- 支持高可用
- 应用的版本和升级管理
- 支持获取实例的状态及日志数据
- 支持业务级别的监控
- 支持实例的故障修复
- DoraFramework 调度系统的服务注册与发现使用 Consul 实现, Consul 是用于实现分布式系统的服务发现与配置,支持跨数据中心的内部服务或外部服务的发现, 对外提供 DNS 接口,而 Marathon-lb 并不支持跨数据中心的服务发现。
- Marathon 是通过 Marathon-lb 所在节点的 servicePort 服务端口或 VHOST 来发现服务 ,要求网络模式必须为 Bridge。因为 Marathon-lb 还负责负载均衡的功能,在大型的业务环境下,如果 Marathon-lb 出现异常,则会影响框架正确的服务发现。
- Dora 调度系统可以做更精确的弹性调度。因为它不仅支持做资源使用层面的监控,还支持做业务级别的监控,在对实例进行调度时就可以根据实际的业务压力进行调度。
- Dora 调度系统内的负载均衡组件是通过从 Consul 中获取到所有的可用实例的地址进行负载分发,并可以根据每个实例的业务负载情况进行更精确的分发。而 Marathon-lb 并没有业务层的监控数据。
- Consul 提供系统级和应用级健康检查,可以通过配置文件及 HTTP API 两种方式来定义健康检查,并支持 TCP、HTTP、Script、Docker 和 Timeto Live(TTL)五种方式做 Check。Marathon 的默认的 Health Checks 只检查 Mesos 中的任务状态,当任务为 running 时,就被认为是 health 状态,这样不能做应用级的健康检查。Marathon 通过 REST API 可以查看应用的健康状态, 但只支持 TCP、HTTP 和 Command 三种方式。
- Dora 调度系统提供的监控栈在业务进程运行过程会汇总采集业务运行状况指标,如请求次数,请求延时等信息,业务进程对外暴露一个标准的 http 监控接口,监控接口的数据产出符合 Prometheus 监控数据格式。Prometheus 通过配置 Consul 作为服务发现地址,会从 Consul 中获取需要收集监控数据的业务进程列表,从业务进程暴露的 http 监控接口 pull 监控数据。
- 服务的自动注册和撤销 新增微服务实例时,采取的原则是等待实例为运行状态后将实例的访问地址注册到 Consul Client 的 Service Registration,并配置这个服务的健康检查,再将数据同步到 Consul Server 的服务注册表中。 对于减少实例时,采取的原则是先将实例从 Consul Server 的服务注册表中删除,等待冷却时间之后,再从通过调度系统将这个实例销毁。从而完成服务的自动注册和撤销。
- 服务发现 外在系统想访问服务时,可通过服务名称从 Consul Server 提供的 DNS 接口查询到当前服务在 Consul Server 中注册的所有健康实例的访问地址, 再将请求发送给实例。
四、海量数据处理平台实践
$ansible-playbook main.yml -i hosts
在 main.yml 里编辑所有需要做的操作,在 hosts 文件里写入所有需求操作的主机 IP 地址,即可完成对 hosts 文件里所有主机的批量操作。而对于复杂的操作,则可通过编写 Playbook 进行配置。roles 里存放不同的角色任务,比如 Mesos Master 上执行的任务和 Mesos Agent 上执行的任务不同,则可放在不同的 roles 里,也可以把 Mesos、Zookeeper、Consul 放的不同的 roles 里。tasks 里则是 role 里具体执行的任务,handlers 则是 tasks 里触发执行的任务。template 则是模板文件,比如我们需要个性 Consul 的默认配置文件,可以修改后的配置文件放在这个目录下,在执行时用这个文件替换默认的配置文件。 在监控方面,数据处理平台拥有完整的监控体系,包括了主机监控,容器监控,服务监控,流量监控,日志监控。主机和容器的监控主要通过 Prometheus 的各种 Exporter 来做,采集到包括 CPU、内存、网络以及磁盘的实时使用情况,服务监控和流量监控则通过七牛自己的监控程序进行监控,可以监控到服务的状态、存活性、句柄数、及所有处理命令的请求数、失败数等。日志监控则是通过七牛内部的日志平台 Pandora 系统进行监控,包括收集系统日志,容器日志和业务进程日志。通过修改开源的文件收集器 Filebeat 的 output,将采集到的日志全部传送到七牛内部的日志监控系统 Pandora 进行日志监控。 监控数据显示如下: 以上就是七牛云数据处理平台基于容器技术实践的情况。目前七牛的数据处理平台具备零运维、高可用、高性能的数据处理服务能力,可让用户轻松应对图片、音视频及其他各类数据的实时、异步处理场景。七牛的数据处理业务系统不仅可以处理来自七牛云存储的数据处理请求,也支持来自非七牛云存储的数据处理请求,还可以直接处理来自七牛云分发 Fusion 的数据处理请求,用来提高 CDN 中间源数据的处理速度。而数据处理平台 Dora 则是一个开放的平台,不仅可以运行七牛自己的数据处理服务,也支持运行用户自定义的数据处理服务,并具备丰富的运维管理功能,可以使用户从繁杂的运维管理和架构设计中脱离出来,从而专注于实现数据处理单元。 七牛数据处理平台的业务支撑能力如下:Q&A
- hosts_env:表示要回滚的主机组,如 Master
- app_env:表示要回滚的组件,如 ZooKeeper
- xxx_version:表示要回滚组件的版本号,如 v1.0.1.20160918
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注网络尖刀微信公众号
随时掌握互联网精彩
随时掌握互联网精彩
赞助链接
排名
热点
搜索指数
- 1 习近平澳门之行 这些瞬间令人难忘 7936665
- 2 突发:美军战斗机被击落 7999213
- 3 湖南卫视声明 7819160
- 4 在澳门 传统文化在指尖绽放 7758266
- 5 不许说日语的App在日本爆火 7649662
- 6 上海地铁列车撞塔吊 车头变形 7558812
- 7 南昌通报李某雪已被送诊 7468052
- 8 全红婵夺金当地长出一个奥运村 7347434
- 9 1200人因学生餐补问题被处理处分 7262108
- 10 美国女教师强奸12岁男童怀孕获刑 7195145