HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

新浪微博数据库资源调度设计:万级实例精细化管理

  • 2021-05-23
  • 本文字数:3273 字

    阅读完需:约 11 分钟

新浪微博数据库资源调度设计:万级实例精细化管理

今天分享的主题是微博数据库资源调度平台的架构实践,是我们内部启动的⼀个项⽬。主要实现的功能有两个:⼀个是资源的智能调度,⼀个是成本优化。都是⾮常实⽤的场景。


⼀会⼉我会从 4 个⽅⾯来做下具体介绍:


  • 项⽬启动的背景。

包括微博当前数据库资源的规模现状和运维⼈员配⽐,我们对资源治理的期望和⽬标,以及我们对资源调度的理解。

  • 然后介绍⼀下这个调度平台的宗旨和使命。

就是我们希望通过这个平台达到什么⽬的,希望它解决我们哪些痛点。

  • 再重点介绍⼀下平台的架构选型、实现⽅式、逻辑设计和核⼼功能。

  • 最后分享两个案例。

来说明我们是如何通过这个调度平台实现应对热点事件和成本优化的。

一、背景

1、微博资源规模现状

先来看下微博资源规模的现状:



从两个维度来看:⼀个是整体资源体量,⼀个是资源使⽤的种类。整体资源体量上,服务器规模还是⽐较⼤的,全⽹服务器达到了万台⽔平,总实例数近 10 万个,总访问量在万亿级别,资源使⽤的种类也⽐较丰富多样,关系型数据库有 MySQL、PostgreSQL,缓存类有 Redis、Memcached,消息队列有 Kafka、MCQ、Qservice 等等。


运维⼈员配⽐⾮常低,或者说⼈均运维实例数⾮常多,差不多每个⼈要管理 1500 个实例,这个数量已经⾮常⼤了,如果没有借助⾃动化、标准化的运维⼿段,是很难管理好这么多实例的。

2、如何做好资源治理

如此规模下如何做好资源治理是我们每天都在考虑的问题。



资源治理是个⽐较抽象、概括的说法,我们需要拿很多东⻄界定它才能让它具像化。⼤家可以按照这个思路来捋下:


1)资源具体指什么(定义)

  • 服务器,MySQL、Redis 等这样的服务,服务发现、域名,Agent 代理

  • 资源治理的⽬标是什么(⽬标)

  • 稳定性保障

  • 快速暴露问题,快速解决问题

  • 挖掘潜在隐患,制定应对预案

  • 可控性保障

  • 资源 SLA 可控

  • 资源调度可控

  • 资源容量⽔位可控


2)怎么治理(⽅法论)

  • 通过资源调度实现


3)怎么衡量资源治理的好坏(SLA)

  • 满⾜业务的 SLA


资源治理⾥⾯也包含很多细分领域和模块,⽐如数据采集、指标决策等等。这些问题都找到答案后,我们对什么是资源治理就有个⼤概的轮廓了。

3、什么是资源调度

上⾯提到 资源调度是资源治理的具体实现,我们要想做好资源治理,就要做好资源调度。



我们⽇常对资源的很多操作,都可以抽象成对资源的调度。⽐如:切主、升级、迁移、扩容、缩容等等。资源调度的核⼼是服务⾃愈。只有服务⾃愈覆盖范围⾜够⼴,资源运维的规模才可能⾜够⼤,服务访问质量才可控,资源治理才可以真正落地。我们⼈均运维的 1500 个实例,就像运维 15 个实例⼀样,因为 99%的情况都被服务⾃愈覆盖了。


今天要介绍的这个资源调度平台叫 Shanks,它把我们⽇常运维中遇到的资源和操作都抽象成标准化的类,然后和周边⽣态⼀起保障资源治理有序进⾏。周边⽣态有很多,⽐如恢复中⼼、资源云、指标决策系统等等。

Shanks 资源调度平台

1、Shanks 整体架构

现在介绍⼀下 Shanks 的整体架构,可以分成四个部分:



其中 Shanks Server 和 Shanks Agent 的代码是放在⼀个⼯程下的,上线的时候,会同时⽣成 Shanks Server 和 Shanks Agent 两个⼆进制包。然后 Shanks Server 会部署在指定的服务器上,Shanks Agent 会部署在所有服务器上,所有服务器上的 Agent 都是⼀样的。


Shanks Agent 负责 metric 指标采集、上报给 Shankks Server 和指标决策系统(采集包括服务器本身的指标,还有上⾯服务的指标)。指标决策提供监控看板和基于采集指标的分析数据。同时,Shanks Server 下发的命令,可以通过 Agent 直接执⾏。


Shanks Server 是主要的资源调度者,调度的接⼝通过 Http API 暴露出来,Agent 收到 Server 的指令后,实施具体的调度内容。⽐如迁移某个实例,Server 会发出迁移指令,然后 Server 先执⾏找机器逻辑,找到⽬标服务器。让⽬标服务器上的 Agent 执⾏新实例部署,搭建主从关系,上线。然后让源服务器上的 Agent 下线⽼实例,迁移结束。

2、五个主要功能

下⾯要介绍的是 Shanks 的五个主要功能:







其中弹性调度可以从两个维度来理解:⼀个实例维度,⼀个配置维度。


实例维度是指当某个具体实例冗余度不⾜的时候,弹性调度会通过扩容实例个数来增加冗余度。


配置维度是指,当某个具体实例已⽤内存快达到配置的最⼤内存的时候,弹性调度会通过修改配置增加最⼤内存。

案例分享

当某个资源实例触发了报警事件,这个实例就会被打标,我们通过标签就可以检索出哪些实例触发了报警阈值,哪些指标有问题。



成本优化还是从两个⽅⾯来把控:⼀个是提⾼资源利⽤率,降低冗余度;⼀个是提⾼资源智能调度的能⼒或者弹性扩缩容的能⼒。这两点做好,就能把成本优化到很理想的状态。


Q&A

Q1:若干个计算任务如何分配给若干个服务器,使得所用的服务器数量尽可 能少?

A1 :对于计算任务的调度和我们今天分享的 对于资源的调用有点类似,都 是通过调度逻辑合理利用已有的物理资源(CPU、内存、存储等等)。我们采 用的策略是预分配策略,根据 agent 采集上报的指标信息,我们很容易知道当前 物理资源的占用情况,我们可以根据这个情况,来对需要调度的资源进行调 度,但是调度采用预先分配的策略,比如我计划把资源 a(这里的资源可以理解 成具体的服务,比如 mysql、redis,或者具体的计算任务)部署到物理空间 B 上,这个资源 a 需要多少物理资源我是预先在物理空间 B 上标记好,下次再进行 调度的时候我看到物理空间 B 的资源(CPU、内存、存储)剩余就是已经减去 资源 a 的了。对于计算任务也是类似的场景。这个策略的迁移是需要做好资源隔 离。


Q2:听完分享,感觉 shanks 很像 service mesh,方便说下选择自研的考虑吗?

A2 : service mesh 是这几年比较新的东⻄,service mesh 里面涉及到的服 务发现的场景确实和今天谈到的服务发现很像。提供这种功能的工具确实有很 多,比如 consul、etcd,我们选择自研的原因很简单,一是本身实现起来不 难,二是我们运维的资源类型很多,有些定制的需求,自研可能更容易实现。


Q3:服务效率的评价标准应该怎么定呢?

A3 : 服务效率可能从投入产出比来说会好些,比如我投入 10 个人,开发了 3 个月,做出了这套调度系统,我们利用这个调度系统,每年可以节省非常可观 的开销,这中投入产出比或者服务效率是容易让人接受的。如果我投入 10 个开 发了 2 年才做出了这套系统,我们利用这个系统,每年节省的开销很有限,那我 们就认为服务效率不够好。我们在项目启动的时候确实衡量过这个成效,原则 就是尽可能快的做出能覆盖 80、90%的场景。然后快速迭代。


Q4:请问下老师有哪些常用的资源调度策略?优缺点可以简单说一下吗?

A4 : 模式大体可以分为两种,一种是隔离类的资源调度,比如资源绑定, 资源容器化;一种的非隔离类的调度,比如我把很多资源部署在一台物理服务 器上。调度策略上,我们大体有几个原则:一是平衡策略,一是近地缘策略。平衡策略就是,把资源使用率高上面的服务调度到资源使用率相对低的地方。近地缘策略是指,优先选择同机房、同可用区的服务器作为目标服务器。我们 在选择目标服务器的时候有一套打分机制就是基于上面的策略来做的。


Q5:跨云怎么进行统一资源调度?

A5 : 跨云的场景现在已经很常⻅了,我们也同时用了多个厂商的云资源。每个厂商都会提供通用的 API 来实现相应的功能,所以从调度上看没什么区 别,唯一的区别是跨云的网络延时会有点⻓,控制好这个就 ok 了。


Q6:你们团队的组织架构能否介绍下哈?

A6 :我所在的部⻔是基础平台,里面可以分为应用运维、资源运维、大数 据运维、基础组件这几个大的方向。


Q7:请问老师,如何划分资源粒度呢?

A7 :  一个资源实例或者一个进程是我们调度的最小资源粒度,比如一个 mysql 实例。比资源实例大一个级别的是一组实例,比如一个 mysql 集群,里面 可能有几个实例,比一组实例大一个级别的是一类资源,比如全网所有的 mysql。


讲师介绍:

张磊,新浪微博 基础平台资深 DBA 

  • 前必要商城、每⽇优鲜、达令家⾼级 DBA,负责数据库资源的⽇常维护和治理,完成从 0 到 1 数据库⾃动化运维平台的建设,推进数据库资源架构标准化和分布式使⽤姿势落地;

  • ⽬前担任新浪微博资深数据库⼯程师,负责微博数据库资源的运维保障和⾃动化运维平台的重构、优化和完善。


本文转载自:dbaplus 社群(ID:dbaplus)

原文链接:新浪微博数据库资源调度设计:万级实例精细化管理

2021-05-23 07:001700

评论

发布
暂无评论
发现更多内容

华为云GuassDB(for Redis)发布全新版本,两大核心特性正式亮相

华为云开发者联盟

数据库 华为云 GuassDB(for Redis) Lua脚本 SSL连接加密

TDSQL Inside:从腾讯的分布式数据库能力到行业的能力

腾讯云数据库

数据库 tdsql

企业为什么要建设自有即时通讯软件系统

WorkPlus

阅读

【VueRouter 源码学习】第七篇 - 路由变化触发视图更新

Brave

源码 vue-router 9月日更

1ms的时延,10Gbps速率…5G通信技术解读

华为云开发者联盟

5G 物联网 通信 网络架构 网络切片

飞桨中国行走进成都 与当地企业共话制造智能化升级

百度大脑

人工智能 飞桨

干货 | TDSQL-A核心架构揭秘

腾讯云数据库

数据库 tdsql

TDSQL的2020进化在未来之前,更在未来之后

腾讯云数据库

数据库 tdsql

腾讯私有云MySQL解决方案—TDSQL

腾讯云数据库

数据库 tdsql

ThreadLocal在链路性能测试中实践

FunTester

多线程 ThreadLocal 性能测试 线程安全 FunTester

HTAP大潮下,TDSQL的探索与实践

腾讯云数据库

数据库 tdsql

AI时代来袭,你的存储做好准备了吗?

焱融科技

AI 高性能 文件存储 云计算, 分布式,

缓存和数据库一致性问题,看这篇就够了

Kaito

数据库 redis 缓存 后端 一致性

紧锣密鼓完成小闭环,微型博客项目快快进入下一阶段

梦想橡皮擦

9月日更

字节再次出圈!GitHub上爆火一星期的算法刷题手册竟出自这人之手

Java~~~

Java 架构 面试 算法 刷题

西部首个国家级车联网先导区获批,EMQ 联手中国移动打造 5G 交通生态链

EMQ映云科技

自动驾驶 车联网 5G 移动 emq

如何借助腾讯云简单、高效移动开发

腾讯云数据库

数据库 tdsql

一年数十万次实验背后的架构与数据科学

百度Geek说

人工智能 架构 数据科学

Code Review在TDSQL-C 的应用实践

腾讯云数据库

数据库 tdsql

TDSQL 全时态数据库系统-理念与愿景

腾讯云数据库

数据库 tdsql

细节炸裂!阿里P8高管总结出这份1500页的Java编程思想(第六版)

Java~~~

Java 编程 架构 面试 JVM

用6年前的低性能电脑运行「360安全卫士极速版」,效果怎么样?

Regan Yue

安全 测评 病毒云查杀 9月日更

华云大咖说 | 华云数据企业开发测试平台解决方案

华云数据

web技术分享| webRTC 媒体流录制

anyRTC开发者

音视频 WebRTC 流媒体 web技术 流媒体录制

新来的前端小姐姐问:Vue路由history模式刷新页面出现404问题

华为云开发者联盟

node.js Vue hash 404 history 模式

「免费开源」基于Vue和Quasar的前端SPA项目crudapi后台管理系统实战之模块管理(十四)

crudapi

Vue API crud crudapi qusar

TDSQL-A,全力应对海量数据实时分析需求

腾讯云数据库

数据库 tdsql

TDSQL“相似查询工具MSQL+”入选VLDB论文

腾讯云数据库

数据库 tdsql

【OpenIM原创】C/C++调用golang函数,golang回调C/C++函数

OpenIM

2021 Atlassian 大中华区用户大会来袭!

Atlassian

DevOps 敏捷 Atlassian Jira 敏捷精益

资深Linux系统管理员常用的15个很好用的Cron工作示例

华为云开发者联盟

Linux Linux Cron 工作示例 应用程序 工作调度

新浪微博数据库资源调度设计:万级实例精细化管理_大数据_dbaplus社群_InfoQ精选文章