海山数据库(He3DB)技术解析:海山Redis定时任务与持久化管控设计

文章目录

  • 引言
  • 一、背景介绍
  • 二、具体实现
    • 1、多副本容灾功能
    • 2、主备切换后任务断点续做功能
    • 3、持久化管控编排功能
  • 三、总结
  • 作者

引言

云Redis数据库服务是目前广泛应用的模式,其数据持久化方案是现在研究的热点内容,数据持久化操作主要由参数设置自动触发或命令触发。RDB(Redis DataBase)持久化和AOF(Append Only File)持久化,这两种持久化方式可以单独使用,也可以同时使用,以提供更高的数据持久化安全性。但无论是RDB持久化还是AOF持久化,都会涉及到文件写入操作。

云数据库实例大多使用云盘存储模式,是指将数据存储在云服务提供商的服务器上,而不是存储在本地设备上。云盘存储可以通过网络远程随时访问,也具有更好的可扩展性,可以动态扩缩容。

因此,云Redis数据库普遍存在单一资源池内单集群或多集群上所有数据库实例均挂载同一云盘服务的场景。此时成百上千个数据库实例,如果通过传统参数设置自动触发或命令触发的方式管控实例的数据持久化,极易出现多数据库实例同时进行持久化的情形,瞬时产生大量写操作,远超云盘服务的性能基线,可能致使云盘服务夯住,从而诱发一系列数据库实例的报障告警。

一、背景介绍

针对这类共性问题,定时任务和持久化管控组件应运而生,通过定时任务的动态规划和数据持久化的管控分发,尽可能减少某一时刻持久化任务密集的情况,从而确保云盘服务的稳定性。

本文将从源码设计层面通过问答的形式分析移动云Redis产品定时任务与持久化管控组件的设计思路。整体流程图如下:
在这里插入图片描述

二、具体实现

1、多副本容灾功能

我们基于K8s的lease选主机制,通过pod自管实现定时任务和持久化管控的唯一性,仅主pod中运行业务流程,其余pod作为容灾备选项。

Pod自管是指,在某pod在获得lease租约时,会给自身添加一个特殊label,区别于其余的pod,并且程序内部的全局选主标志位也会被置为true。该选主标志位用作程序内部决定是否开启定时任务与持久化管控功能的判断条件,确保该组件负责的业务流程仅在主pod内执行。而特殊label则是用于Service对外暴露服务,需在配置Service时,设置nodeSelector为主pod的特殊label,以此来实现新的定时任务请求均会由主pod处理。

在这里插入图片描述

在主pod无法续约lease,丢失了主的身份时,同样会通过自管模式,去除自身的特殊label,修改全局选主标志位为false,将内部正在执行的定时任务停止清空,留待新的主pod来继续处理。主备切换流程耗时较短,并不会出现定时任务丢失的情况。

在这里插入图片描述

2、主备切换后任务断点续做功能

首先我们的定时任务逻辑是根据24h,每一小时段设置了一个定时控制器,每个控制器负责处理某一个小时内的全部定时任务,其余时段的定时任务不受其管控。另设一个总定时任务控制器,负责管控24个小时制定时控制器,在当前小时40分时,开始初始化下一个小时段的定时控制器,将数据库表中记录的定时任务注册在其中。之所以如此设置这么多的定时控制器,而不是通过一个定时控制器管控所有的定时任务,是基于云Redis产品线上实例成百上千的现状,极易出现某一时间段设置的定时任务数较多,如果同时执行,会对后端组件和云盘服务造成巨大的压力。因此根据小时段划分任务,便于统计,在定时任务集中且频繁时,动态规划其在一定时间范围内完成,而不是并行处理。

然后基于特殊的定时任务管控逻辑,在pod成为主时,除了正常初始化总定时任务控制器外,需要初始化一个起始定时器,该定时器用以实现定时任务的断点续做。其实定时器会根据当前的时间,决定初始化注册哪个时段的定时任务,如果当前分钟小于40,仅注册当前小时段的定时任务;如果当前分钟大于等于40,则需要注册当前小时段和下个小时段的定时任务。这是由小时制定时控制器的特性决定的。

在这里插入图片描述

与上述定时任务断点续做逻辑不同,持久化管控任务的断点续做是依赖redis缓存来实现的。在初始化待做持久化实例列表时,会将这些实例ID以集合的形式存储在redis中,设置过期时间为一天,因为持久化管控任务是每天需要对全资源池所有实例分发持久化命令,做一次数据备份。获取到实例列表后,会对其轮询处理,给实例分发持久化命令,执行成功后,会将该实例的ID从redis缓存中去除。

基于此逻辑,在pod重启或主备切换后,首先会从redis缓存中查询特殊Key,如果存在该Key,说明持久化管控任务因异常中断过;如果没有该Key,则表示任务完成或未开始。

在这里插入图片描述

3、持久化管控编排功能

持久化管控功能设计初衷就是为了尽可能减少同资源池多实例同时数据持久化对云盘服务的性能影响。具体实现分为两步,首先需要修改线上redis实例的配置文件,将save参数置空,如此实例本身便不会自动触发数据持久化,仅由前端页面设置定时任务和持久化管控两种方式触发。然后便是设置定时任务,每天零点开始进行持久化管控任务,从数据库表中获取最新的活跃实例列表,然后将实例ID以数组形式存储。遍历数组,根据实例ID查询实例数据pod的IP和密码信息,连接实例的数据pod,查询内存使用量,根据内存的实际使用量来预估该实例完成一次数据持久化的所需时间,等待该实例完成持久化之后,再进行下一个实例的数据持久化。通过这种管控组件分发持久化命令的方法,来避免多实例同时持久化的场景,尽可能减少云盘服务的压力。

在这里插入图片描述

三、总结

定时任务与持久化管控组件基于K8s的选主机制,通过pod自管的方式实现了多副本容灾功能,并且确保定时任务和实例持久化在设定时间只会执行一次,有效避免多副本多次执行同一任务的情形,确保了云盘服务的稳定性,减少了云上数据库实例的告警报障。

作者

数据库产品部-非关系型数据库组-刘许

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1488616.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

500元左右有好用的开放式耳机吗?百元开放式耳机推荐

正所谓授人以鱼不如授人以渔,在此大圣分享一下我选开放式耳机的的一切技巧。 在挑选开放式耳机的时候,我主要会考察以下这些点: 1-音质表现 关注频响范围,确保能涵盖您常听音乐类型所需的频率。 留意声音的清晰度、层次感和失…

halcon_C#联合halcon打开摄像头

1. 创建halcon项目 -> 2.测试连接 -> 3. 在halcon中打开摄像头成功 -> 4. 插入代码 -> 5. 导出为.cs文件 6. 创建VS项目 -> 7.将action部分代码嵌入winform -> 8. 编写代码 -> // 导入HalconDotNet命名空间,这是用于Halcon图像处理的…

IF=8.5 MIMIC-IV高阶玩法!中国用新指标SHR+机器学习拿一区top,思路太牛了

‍ MIMIC-IV 发文难?那是你还没遇到对的思路!如今机器学习数据库挖掘的文章层出不穷,今天介绍的这篇文章是在MIMIC-IV数据库的基础上,用了一个新指标—应激性高血糖比(SHR),结合机器学习构建预测…

【网络流】——初识(最大流)

网络流-最大流 基础信息引入一些概念基本性质 最大流定义 Ford–Fulkerson 增广Edmons−Karp算法Dinic 算法参考文献 基础信息 引入 假定现在有一个无限放水的自来水厂和一个无限收水的小区,他们之间有多条水管和一些节点构成。 每一条水管有三个属性&#xff1a…

土耳其云手机提升TikTok电商效率

在数字化飞速发展的今天,TikTok不仅是一个社交平台,更是一个巨大的电商市场。随着TikTok电商功能在全球范围内的扩展,土耳其的商家和内容创作者正面临着前所未有的机遇。本文将详细介绍土耳其云手机怎样帮助商家抓住机遇,实现业务…

内置命令和外置命令(用户组配置文件)

通过cat /etc/group来查看用户组的权限,/etc/group文件包含了系统上所有用户组的信息。每一行代表一个用户组。 用户组配置文件格式如下: group_name:password:GID:user_list group_name:用户组的名称。password:用户组的密码。…

达门如何用虚拟现实辅助工程技术造船?

在当代造船以及海事行业中,虚拟现实辅助工程(VR Aided Engineering)技术的使用,正在快速演进并提供新的工业应用案例。该技术改变了从设计阶段到建造,再到船舶运营各个阶段的工作流程,进而提高效率、优化性…

旗晟机器人仪器仪表识别AI智慧算法

在当今迅猛发展的工业4.0时代,智能制造和自动化运维已然成为工业发展至关重要的核心驱动力。其中智能巡检运维系统扮演着举足轻重的角色。工业场景上不仅要对人员行为监督进行监督,对仪器仪表识别分析更是不可缺少的一个环节。那么我们说说旗晟仪器仪表识…

商场导航系统:从电子地图到AR导航,提升顾客体验与运营效率的智能解决方案

商场是集娱乐、休闲、社交于一体的综合性消费空间,随着商场规模的不断扩大和布局的日益复杂,顾客在享受丰富选择的同时,也面临着寻路难、店铺曝光率低以及商场管理效率低下等挑战。商场导航系统作为提升购物体验的关键因素,其重要…

canvas画两个相交的圆(React)

需求:展示两个模块及交集,以两个圆相交的方式,如下图: 一开始画,总会一个圆压住另一个圆,最后看到了paper.js,就可以了,好用,center是圆心,第一个值是X轴坐标…

四、GD32 MCU 常见外设介绍(8)SPI 模块介绍

串行外设接口(Serial Peripheral Interface,缩写为 SPI) 提供了基于SPI 协议的数据发送和接收功能, 可以工作于主机或从机模式。 SPI 接口支持具有硬件 CRC 计算和校验的全双工和单工模式。 8.1.SPI 基础知识 SPI 物理层 SPI接…

【AIGC】构建自己的谷歌搜索引擎服务并使用

一、谷歌 谷歌的搜索引擎需要自己创建服务才能启用检索api。(需自行翻墙和创建自己的谷歌账号) 1.1 API服务创建 1)登陆https://console.cloud.google.com/: 2) 选择新建项目,取号项目名即可(比如:Olin…

钉钉 钉钉打卡 钉钉定位 2024 免费试用 保用

打卡助手定位 如图,表示开启成功,软件已定位到钉钉打卡位置。 测试显示,高德地图位置已成功修改。 开启助手定位后,观察效果,打卡按钮由无法打卡变为可打卡状态,照片还显示打卡地点。 伙伴们担心作弊行为会…

Redis使用场景-热点数据缓存

什么是缓存? 为了把一些经常访问的数据放入缓存中已减少对数据库的访问,从而减少数据库的压力,提高程序的性能。【内存中存储】-效率快 缓存的原理 什么样的数据适合放入缓存中? 1.查询频率高且修改频率低 2.数据安全性低 哪些组件…

数字看板:跨行业需求下的创新与升级

在当今这个数据驱动的时代,数字看板作为信息展示与决策支持的重要工具,正逐步渗透到各行各业之中。从智慧城市到智能制造,从金融分析到医疗健康,数字看板以其直观、动态、高效的特点,成为了连接数据与决策者的桥梁。本…

Mysql 集群搭建 05

文章目录 1. Mysql主从复制集群搭建1.1 主库配置1.2 从库配置 2. 分库分表2.1 拆分策略2.2 实现技术2.2.1 MyCat概述2.2.2 MyCat入门2.2.3 配置 schema.xml 3. 双主双从4. 双主双从读写分离 1. Mysql主从复制集群搭建 主从复制是指将主数据库的 DDL 和 DML 操作通过二进制日志…

阿里云服务器安装Anaconda后无法检测到

前言 问题如标题所言,就是conda -V验证错误,不过后来发现其实就是虽然安装时,同意了写入环境变量,但是其实还没有写入,需要手动写入。下面也会重复一遍安装流程。 安装 到[Anaconda下载处](Download Now | Anaconda)查…

Unity材质球自动遍历所需贴图

Unity材质球自动遍历所需贴图 文章目录 Unity材质球自动遍历所需贴图一、原理二、用法1.代码:2.使用方法 一、原理 例如一个材质球名为:Decal_Text_Cranes_01_Mat , 然后从全局遍历出:Decal_Text_Cranes_01_Albedo赋值给材质球的…

matlab仿真 数字信号载波传输(上)

(内容源自详解MATLAB/SIMULINK 通信系统建模与仿真 刘学勇编著第七 章内容,有兴趣的读者请阅读原书) clear all nsymbol100000;%每种信噪比下的发送符号数 T1;%符号周期 fs100;%每个符号的采样点数 ts1/fs;%采样时间间隔 t0:ts:…

百度竞价推广落地页:优化转化沟通工具的选择与应用

在百度竞价推广中,落地页作为用户点击广告后首先接触到的页面,其设计和优化对于提升转化率至关重要。而转化沟通工具的选择与应用,更是影响用户决策和行动的关键环节。百度竞价托管 www.pansem.com 将探讨在百度竞价推广落地页中,…