2019独角兽企业重金招聘Python工程师标准>>>

本文由云+社区发表

作者:冯伟源

作者:冯伟源,高级工程师,腾讯云Redis系统运维负责人。6年DBA经验,一直从事SQL优化、实例调优、数据库架构、海量数据库集群运维、运营平台建设和管理等工作。为 QQ、Qzone、QQ音乐、微云、腾讯云等业务提供数据库服务。

导语:腾讯云Redis自2015年诞生以来,爆发式增长,为上万家客户提供服务。作者作为唯一的运维负责人,面对三大挑战时如何破解?

  • 元信息的一致性管理
  • 万台设备高效运维
  • 如何实现智能调度

解读腾讯云Redis

腾讯云Redis是基于腾讯内部分布式缓存领域在QQ、音乐、Qzone、微云等业务多年的技术沉淀,为客户打造除的一款高可用、高可靠的Redis服务平台。其业务发展迅速,目前有上万台设备QPS已达亿级

腾讯云Redis目前分别提供主从版、集群版、新一代三个版本。在使用上,基本兼容 Redis 协议,支持字符串、链表、集合、有序集合、哈希表等多种数据类型,能帮助客户完成不同类型的业务场景开发。腾讯云Redis支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。搜索关注“腾讯云数据库TencentDB"官方微信,最新最热数据库前沿知识和手把手实战教程等你来约,更可在移动端一键管理数据库。

运营问题

我们在运营Redis的过程中,遇到各种各样的问题总结如下:

\1. 环境:网络、TCP参数设置的问题;

\2. 设计:做持久化时,页表复制造成的卡顿;

\3. 开发者:慢查询,连接风暴,缺流控等;

\4. 最终用户:比如电商的秒杀活动,访问陡增导致处理能力到极限。

总的来说,是服务运行过程中,资源的需求供给不匹配。

三大挑战

在应对这些运营难题过程中,我们陆续地翻越三座大山:

挑战一:元信息的一致性管理

元信息的混乱导致一些运维故障在日常运营中经常碰到?最基本的四类元信息是集群、设备、实例和配置。 我们解决这类问题的时候定3条原则。

  • “全”---元信息梳理统计全;
  • “准”---和现网各种信息保持一致;
  • “一”---统一的入口,提供统一的API,来进行数据的读取与修改,让元数据的变更可以被审计。

首先对所有元信息进行梳理,提取各种元信息的公共特征,分类建模,然后抽象出模板对象的属性与方法,定义数据结构,最后设定数据同步与消费的方式,对外提供API接口。这样一套基本的DB-CMDB子系统就建成了。也就是数据库层统一元信息管理系统。

设计思路上,采用通用框架,可以管理不同数据库类型的信息,也为后面的运维自动化奠定基础。

挑战二:万台设备的作业方式

系统提供服务之初,整体运维规模还不大,很多运维工作可以通过手工解决。在客户量爆发后,1~2个DBA是无法通过手工解决万台设备运营,更无法面对亿级QPS性能冲击。

为了应对规模化的运营,我们打造“作业平台”的系统,来承载我们的运维逻辑。

  • 平台化---原子操作,工具托管在平台上
  • 流程化---工具串成流程,流程化,可复用
  • 可视化---各类运维操作可视化,简单明了

首先将脚本编辑作为工具,托管在平台上。这种工具的原则是原子操作,只有失败与成功两种状态。工具串起来成为流程,每个工具可以被多个流程复用,这样大部分运维操作,包括上下架机器,Redis的迁移,扩缩容都可以通过流程来实施。同时各类操作均通过可视化来展示,简单明了。

目前腾讯云Redis作业平台已建成数百种场景化的工作流程,日调用次数达上千次,覆盖大部分的运维场景,变更导致的事故减少,服务更为稳定可靠,场景化运维工作效率提升300%。通过平台化、可视化、流程化的“作业平台”,整个团队的工作协同,积累,传承做得更好。

挑战三:如何实现智能调度

手工触发的运维流程,只能算是半自动化。我们该如何把整体的运营工作打造成全自动化呢?

  • 自动化调度系统
  • 决策系统

自动化调度系统:对于按事件和时间调度系统异常时触发的告警,第一是按时间调度,比如每周三下午3点重启一个服务,通过时间来触发。第二是按事件调度,我们把每一种告警,都作为一种事件,注册到调度系统中。调度系统捕获到事件后,可以调用作业平台的任务或者流程去完成一些工作,这就形成一个运维的闭环。

决策系统:在处理一个事情之前,我们还需要获取各种信息,如何根据信息做决策?一个决策系统,先发起决策请求,过程中可能会涉及到一些决策树,或者AI决策等,根据决策的结果,再确定调哪些作业流程,或者是否调作业流程。

总结运营之道

运维成熟度的衡量

运维成熟度在腾讯云的成熟度衡量:从比较原始的方式,到实现一些标准的工具。再到可视化、流程化、平台化,以及实现能基于时间与事件触发的自动调度平台,实现全自动化的运维闭环。智能化解读,通过机器学习,深度学习的方法能帮助我们更好地做一些决策,比如说数据库自动调参,智能分析实现数据的冷热沉降;最后,通过业务画像,数据分析,成本优化等为业务带来更多的价值。

总结:技术支持业务,技术推动业务,技术引领业务。 搜索关注“腾讯云数据库TencentDB"官方微信,最新最热数据库前沿知识和手把手实战教程等你来约,更可在移动端一键管理数据库。

云时代下对DBA的全面要求

云时代下,DBA应该对自身能力提出更高更全面的要求。我们不但要保证系统高效稳定,协助好使用者,还要在产品打造方向、架构设计的细节、组件的源码,社区的跟进甚至是引领上进行沉淀,并建立个人影响力。

我们既是运维,也是开发,也是产品。这也是云时代下,服务化、DO合一的趋势!

此文已由腾讯云+社区在各渠道发布

获取更多新鲜技术干货,可以关注我们腾讯云技术社区-云加社区官方号及知乎机构号

转载于:https://my.oschina.net/qcloudcommunity/blog/3015417

3分钟学会如何调度运营海量Redis系统相关推荐

  1. 三分钟学会给任何电脑完整重装系统!新手必看!以win10为例

    小白们,不论你电脑是什么型号,状态如何,都可以按照以下流程操作,简单易上手. 由于本人电脑(联想拯救者)从刚开始使用就经常莫名其妙重启,斟酌之后选择重装系统.学习到实践成功,为时半天.在此和大家分享一 ...

  2. 1分钟学会U盘启动安装Linux系统

    会安装系统是折腾软件的起点与保障,可以免除后顾之忧,放心大胆地去玩耍(注意重要资料的备份).这次就介绍一款系统U盘启动制作软件:Rufus.大小只有1M左右,功能全面,界面简洁,写入速度快,兼容性好. ...

  3. 5分钟学会区块链 - 开发一条区块链 Develop BlockChain with Tendermint

    本文攻略:解惑区块链开发,学习 Tendermint,给自己造一条区块链 建议玩家等级:技术小白,学生党,初级码农 阅读此文先解锁技能: 一点点命令行基础 一点点 GO 基础:三天包学会 一点点区块链 ...

  4. UWP开发入门(十九)——10分钟学会在VS2015中使用Git

    原文:UWP开发入门(十九)--10分钟学会在VS2015中使用Git 写程序必然需要版本控制,哪怕是个人项目也是必须的.我们在开发UWP APP的时候,VS2015默认提供了对微软TFS和Git的支 ...

  5. 三分钟学会css3中的flexbox布局

    2019独角兽企业重金招聘Python工程师标准>>> 这篇文章里我们将学习CSS里flexbox布局的几个最重要的概念,通过学习flexbox布局,你会发现以往遇到的所有的关于布局 ...

  6. h5 img js 点击图片放大_5分钟学会h5生成图片海报!

    生成海报这个功能很实用,之前我们学过小程序生成海报的方法,今天我们来学h5生成海报. 基本原理:其实就是把你html+css写的样式转换成图片下载. 如何实现的 首先我们需要引入下面两个js插件 原理 ...

  7. python写好的代码怎么给别人使用-10分钟学会用python写游戏!Python其实很简单!...

    原标题:10分钟学会用python写游戏!Python其实很简单! Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以在这里给各位看官们准备了高价值Python学习视频教程 ...

  8. python代码写好了怎么运行并画图-无所不能的python编程是怎么快速画图的呢?5分钟学会!...

    原标题:无所不能的python编程是怎么快速画图的呢?5分钟学会! Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象.直译式电脑编程语言,也是一种功能强大的通用型语言 ...

  9. 函数式编程语言python-10分钟学会python函数式编程

    原标题:10分钟学会python函数式编程 在这篇文章里,你将学会什么是函数范式以及如何使用Python进行函数式编程.你也将了解列表推导和其它形式的推导. 函数范式 在命令式范式中,通过为计算机提供 ...

最新文章

  1. 利用Windows自带服务架设免费邮件服务器
  2. Linux系统时间\硬件时间(date、tzselect、clock、hwclock、ntpdate)
  3. Mac下使用brew的常用步骤
  4. 链表竟然比数组慢了1000多倍?(动图+性能评测)
  5. Linux从入门到精通——数据库
  6. linux freemind字体,解决 ubuntu 18.04 lts freemind 或freeplane 乱码口口的问题
  7. win10 企业版 2016长期服务版激活方法
  8. 传统优化算法VS智能优化算法
  9. MySQL数据分析-(14)表补充:字符集
  10. 获取当前系统时间(取相对于系统时间的前一周时间)
  11. Sprite Kit教程
  12. 服务注册中心:Eureka
  13. 如何用python可视化疫情风险区?地图标记位置信息:数据爬取+地址解析+可视化
  14. 清默网络——IPV6的地址详解
  15. 【浅谈】我所理解的游戏场景设计:身临其境
  16. LUNA2016数据集
  17. 破解android 九宫格锁
  18. 思科 Packet Tracer 中交换机的常见命令介绍
  19. np.random.random()系列函数
  20. location.origin

热门文章

  1. 同时设置超时时间_刚入职的小菜鸡,设错了RPC超时,搞了个线上事故
  2. mysql数据类型查询命令_Linux命令:MySQL系列之三--mysql数据类型及SQL结构化查询语句使用...
  3. java swt窗口,SWT Java:如何防止窗口调整大小?
  4. mysql创建反弹函数,MySql创建函数
  5. 分类模型的评估方法-F分数(F-Score)
  6. VC\JS Base64转码
  7. std:: string 的常用使用
  8. 激光扫描仪的扫描方式
  9. 请求外部图片的时候,遇到403的错误的解决方案
  10. 如何在两个jsp页面之间传值,在另外一个页面用EL表达式获取值