加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网_ASP源码网 (https://www.1asp.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

打造百亿级数据处理量的弹性调度容器平台

发布时间:2021-01-06 10:04:04 所属栏目:大数据 来源:网络整理
导读:本次分享介绍七牛数据处理团队的容器技术实践经验,分享七牛如何通过自主研发的容器调度框架打造易扩展、易部署、高自由度、高可用、高性能的数据处理平台。 一、数据处理业务场景 首先介绍一下七牛数据处理业务的背景。七牛云目前平台上有超过50万家企业


在监控方面,数据处理平台拥有完整的监控体系,包括了主机监控,容器监控,服务监控,流量监控,日志监控。主机和容器的监控主要通过Prometheus的各种Exporter来做,采集到包括CPU、内存、网络以及磁盘的实时使用情况,服务监控和流量监控则通过七牛自己的监控程序进行监控,可以监控到服务的状态、存活性、句柄数、及所有处理命令的请求数、失败数等。日志监控则是通过七牛内部的日志平台Pandora系统进行监控,包括收集系统日志,容器日志和业务进程日志。通过修改开源的文件收集器Filebeat的output,将采集到的日志全部传送到七牛内部的日志监控系统Pandora进行日志监控。


监控数据显示如下:


以上就是七牛云数据处理平台基于容器技术实践的情况。目前七牛的数据处理平台具备零运维、高可用、高性能的数据处理服务能力,可让用户轻松应对图片、音视频及其他各类数据的实时、异步处理场景。七牛的数据处理业务系统不仅可以处理来自七牛云存储的数据处理请求,也支持来自非七牛云存储的数据处理请求,还可以直接处理来自七牛云分发Fusion的数据处理请求,用来提高CDN中间源数据的处理速度。而数据处理平台Dora则是一个开放的平台,不仅可以运行七牛自己的数据处理服务,也支持运行用户自定义的数据处理服务,并具备丰富的运维管理功能,可以使用户从繁杂的运维管理和架构设计中脱离出来,从而专注于实现数据处理单元。 七牛数据处理平台的业务支撑能力如下:


Q&A

Q:请问管理系统是基于什么开发的?这个系统会开源吗?

A:Dora的调度框架是基本GO语言开发的。目前不会开源,但提供私有部署。

Q:刚开始看Mesos框架实现,请问自定义的Scheduler中如何调用自定义的executor?

A:Schesuler跟executor这个都是按照Mesos最新的v1版的HTTP API去做的,这个没有不兼容的问题,只是mesos go版本的SDK有些老旧,更新也比较缓慢,这个地方我们自己根据需要做了些更改。

Q:请问目前Consul集群是多大规模呢?有没有考虑Consul扩展的性能瓶颈呢?

A:Consul是在每个slave节点上会有一个Consul的Agent ,我们一个机房有200多台专门用于数据处理的机器,所以Consul的集群规模也就这么大,单机房。对我们当前来说不存在瓶颈,因为我们对Consul的使用的场景相对单一简单:作为Metadata的可靠存储,Metadata的更新其实并不是很频繁,这个我们参考过别人做过的一些性能测试和我们自己的一些测试,性能是满足需求的。另外一个功能就是服务发现与实例的健康检查,健康检查是由运行在每个机器上的Consul Agent负责的,均摊到每个机器上,其实单个机器上的实例数不会特别的多,所以这部分也没有太大的压力。当然了,这个也是跟业务规模相关的,假定哪天Consul的扩展性成我们的问题了,也说明我们的业务量特别特别的大了,我们也是很期望这一天到来的。

Q:Dora是否可以支持MySQL的自动伸缩扩容?

A:Dora系统的应用场景还是运行一些数据处理命令这类无状态的服务。MySQL这类系统不适合直接跑在Dora这个里面,如果期望MySQL跑在Mesos上面的话,需要自己实现一个专门针对MySQL的调度器,因为MySQL实例的扩缩容,实例故障的修复都有MySQL自身特定的需求。我们公司MySQL这类有状态服务的容器化是由公司另一个容器平台实现的。MySQL的用的是Percona XtraDB Cluster方案,我们利用另一个容器平台的API写了一个Percona XtraDB Cluster的调度器,把Percona XtraDB Cluster的大部分运维操作在容器平台上自动化了。

Q:你们的Ansible host文件是动态生成的嘛?代码推送也是通过Ansible嘛?新增删除节点,以及回滚等操作是如何实现的?

A:最开始实践的时候不是动态生成的,其实我们是可以从Consul中获取到当前集群里面的节点和节点的一些简单的配置信息,后面有考虑从Consul里面拿节点信息,动态生成用于Ansible灰度的host文件。代码推送也是使用的Ansible,如果能和外网连接的机器,也可以使用GitHub。因为我们的Playbook的角色是通过组件区分的,新增删除节点只需要修改Host文件,把相应的节点加入安装或删除相应的组件。如回滚操作:

$?ansible-playbook?rollback.yml?-i?hosts?-e?"hosts_env=XXX?app_env=XXX?version_env=XXX"

参数说明:

  • hosts_env:表示要回滚的主机组,如Master

  • app_env:表示要回滚的组件,如ZooKeeper

  • xxx_version:表示要回滚组件的版本号,如v1.0.1.20160918

Q:Dora的调度策略是怎么样的?可否简单介绍一下。

A:首先保证同一种数据处理命令的实例尽量均匀分散在不同的机器上,然后再是保证均衡每个机器上的负载。

Q:Prometheus目前是单机的,数据量大了怎么办?Prometheus 的监控数据是存在InfluxDB吗?

A:目前我们是按业务拆分server,数据量可以支撑。我们没有使用InfluxDB,还是用的原生的LevelDB。

Q:这么大文件量,你们在存储技术方面有什么特别的处理吗?怎么实现高性能和海量存储之间均衡?

A:七牛云存储的设计目标是针对海量小文件的存储,所以它对文件系统的第一个改变也是去关系,也就是去目录结构(有目录意味着有父子关系)。所以七牛云存储不是文件系统,而是键值存储,或对象存储。我们每个大文件都是切割成小文件存储下来的,元信息单独存放在数据库中,用户请求的时候通过业务层合并处理后返回。因此理论上磁盘只存储小文件,大文件存储和读取的性能主要在于文件切割和合并。

打造百亿级数据处理量的弹性调度容器平台

推荐一个培训

【Docker 实战培训 | 广州站】培训内容涉及Docker、容器存储、容器网络、监控、DevOps、微服务,老司机带你去学习,点击下面图片即可查看具体培训内容。

打造百亿级数据处理量的弹性调度容器平台



点击阅读原文链接可直接报名。

(编辑:安卓应用网_ASP源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读