作者:冯伟源,高级工程师,腾讯云Redis系统运维负责人。6年DBA经验,一直从事SQL优化、实例调优、数据库架构、海量数据库集群运维、运营平台建设和管理等工作。为 QQ、Qzone、QQ音乐、微云、腾讯云等业务提供数据库服务。
导语:腾讯云Redis自2015年诞生以来,爆发时增长,为上万家客户提供服务。作者作为唯一的运维负责人,面对三大挑战是如何破解?
元信息的一致性管理
万台设备高效运维
如何实现智能调度
解读腾讯云Redis腾讯云Redis是基于腾讯内部分布式缓存领域在QQ、音乐、Qzone、微云等业务多年的技术沉淀,为客户打造除的一款高可用、高可靠的Redis服务平台。其业务发展迅速,目前有上万台设备,QPS已达亿级。
腾讯云Redis目前分别提供主从版、集群版、新一代三个版本。在使用上,基本兼容 Redis 协议,支持字符串、链表、集合、有序集合、哈希表等多种数据类型,能帮助客户完成不同类型的业务场景开发。腾讯云Redis支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
运营问题我们在运营Redis的过程中,遇到各种各样的问题总结如下:
环境:网络、TCP参数设置的问题;
设计:做持久化时,页表复制造成的卡顿;
开发者:慢查询,连接风暴,缺流控等;
最终用户:比如电商的秒杀活动,访问陡增导致处理能力到极限。
总的来说,是服务运行过程中,资源的需求与供给不匹配。
三大挑战在应对这些运营难题过程中,我们陆续地翻越三座大山:
挑战一:元信息的一致性管理元信息的混乱导致一些运维故障在日常运营中经常碰到?最基本的四类元信息是集群、设备、实例和配置。 我们解决这类问题的时候定3条原则。
“全”---元信息梳理统计全;
“准”---和现网各种信息保持一致;
“一”---统一的入口,提供统一的API,来进行数据的读取与修改,让元数据的变更可以被审计。
首先对所有元信息进行梳理,提取各种元信息的公共特征,分类建模,然后抽象出模板对象的属性与方法,定义数据结构,最后设定数据同步与消费的方式,对外提供API接口。这样一套基本的DB-CMDB子系统就建成了。也就是数据库层统一元信息管理系统。
设计思路上,采用通用框架,可以管理不同数据库类型的信息,也为后面的运维自动化奠定基础。
挑战二:万台设备的作业方式系统提供服务之初,整体运维规模还不大,很多运维工作可以通过手工解决。在客户量爆发后,1~2个DBA是无法通过手工解决万台设备运营?更无法面对亿级QPS性能冲击?
为了应对规模化的运营,我们打造“作业平台”的系统,来承载我们的运维逻辑。
平台化---原子操作,工具托管在平台上
流程化---工具串成流程,流程化,可复用
可视化---各类运维操作可视化,简单明了
首先将脚本编辑作为工具,托管在平台上。这种工具的原则是原子操作,只有失败与成功两种状态。工具串起来成为流程,每个工具可以被多个流程复用,这样大部分运维操作,包括上下架机器,Redis的迁移,扩缩容都可以通过流程来实施。同时各类操作均通过可视化来展示,简单明了。
目前腾讯云Redis作业平台已建成数百种场景化的工作流程,日调用次数达上千次,覆盖大部分的运维场景,变更导致的事故减少,服务更为稳定可靠,场景化运维工作效率提升300%。通过平台化、可视化、流程化的“作业平台”,整个团队的工作协同,积累,传承做得更好。
挑战三:如何实现智能调度手工触发的运维流程,只能算是半自动化。我们该如何把整体的运营工作打造成全自动化呢?
自动化调度系统
决策系统