zoukankan      html  css  js  c++  java
  • 3分钟学会如何调度运营海量Redis系统

    本文由云+社区发表

    作者:冯伟源

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

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

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

    解读腾讯云Redis

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

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

    img

    img

    运营问题

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

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

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

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

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

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

    img

    三大挑战

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

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

    img

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

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

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

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

    img

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

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

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

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

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

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

    img

    img

    img

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

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

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

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

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

    img

    img

    img

    img

    总结运营之道

    运维成熟度的衡量

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

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

    img

    云时代下对DBA的全面要求

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

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

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

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

  • 相关阅读:
    《C# to IL》第一章 IL入门
    multiple users to one ec2 instance setup
    Route53 health check与 Cloudwatch alarm 没法绑定
    rsync aws ec2 pem
    通过jvm 查看死锁
    wait, notify 使用清晰讲解
    for aws associate exam
    docker 容器不能联网
    本地运行aws lambda credential 配置 (missing credential config error)
    Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?
  • 原文地址:https://www.cnblogs.com/qcloud1001/p/10442735.html
Copyright © 2011-2022 走看看