热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

全服不停机数据库水平扩容方案

本次目标:全服不停机情况下在线扩容数据分库不停机变更为方案已有的基础:具有分库信息登记表

本次目标:

全服不停机情况下在线扩容数据分库

不停机变更为

方案已有的基础:

具有分库信息登记表,应用启动过程已具备动态读取分库信息并建立动态数据源的能力,已实现分库

方案1:

1、运维人员准备数据库实例,克隆数据库模板,建立好分库

2、分库连接信息 配置到 数据库信息登记表中,状态为 未就绪(这就避免了此库被分配出去)

3、滚动重启全部应用容器(应用集群保证了客户端无感知),重启完毕后修改数据库列表为就绪状态,可以接收新数据

4、本方案关键在于 “滚动”两个字

方案2:

数据源列表里设计一个是否就绪的开关列,定时任务动态建立完毕连接池后,更改开关状态为就绪,开始接收新数据。

步骤:

1、zk上建立一个目录,应用启动后注册自己的ip信息和数据分库就绪【重启的都是就绪】的信息到目录下,为临时节点

2、运维人员准备数据库实例,克隆数据库模板,建立好分库

3、分库连接信息 配置到 数据分库信息注册表中,状态为 未就绪(这就避免了此库被分配出去),同时更新zk中所有应用节点为DB未就绪状态

4、应用层面的定时检测任务,发现列表中有待初始化的新数据库

5、定时任务初始化新数据源,添加到Spring动态数据源中

6、定时任务更新zk中自己所在应用的状态为DB连接池已就绪

7、BOSS系统定时任务检查ZK中所有应用的状态是否已完成变更,如果所有已就绪,则更新数据库列表新数据源为 已就绪 状态,开始接受新数据。

难点:

1、k8s中容器的数量很多,如何保证每个容器都准备就绪了?通过zk中登记的状态。

2、为了降低难度,在数据库扩容期间,k8s的容器不要进行扩容,要保持集群稳定状态。

3、步骤较多,为了防止人为出错,要开发相应的界面,按流程一步一步进行,每一步会自动检测是否就绪,上一步没有完成期间(系统定时检测或者按钮检测),无法进入到下一步的界面。

4、如果扩容期间,容器挂了又自动产生一个新的,这时候 新容器的状态是准备就绪状态




推荐阅读
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 使用Echarts for Weixin 小程序实现中国地图及区域点击事件
    本文介绍了如何使用Echarts for Weixin在微信小程序中构建中国地图,并实现区域点击事件。包括效果展示、条件准备和逻辑实现的具体步骤。 ... [详细]
  • 对象存储与块存储、文件存储等对比
    看到一篇文档,讲对象存储,好奇,搜索文章,摘抄,学习记录!背景:传统存储在面对海量非结构化数据时,在存储、分享与容灾上面临很大的挑战,主要表现在以下几个方面:传统存储并非为非结 ... [详细]
  • ABP框架是ASP.NET Boilerplate的简称,它不仅是一个开源且文档丰富的应用程序框架,还提供了一套基于领域驱动设计(DDD)的最佳实践架构模型。本文将详细介绍ABP框架的特点、项目结构及其在Web API优先架构中的应用。 ... [详细]
  • RocketMQ 运维监控实践指南
    本文详细介绍了如何实现 RocketMQ 的运维监控,包括监控平台的搭建、常用运维命令及其具体用法。适合对 RocketMQ 监控感兴趣的读者参考。 ... [详细]
  • Spring 中策略模式的应用:Resource 接口详解
    本文探讨了在 Spring 框架中如何利用 Resource 接口实现资源访问策略。Resource 接口作为资源访问策略的抽象,通过多种实现类支持不同类型的资源访问。 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 基于iSCSI的SQL Server 2012群集测试(一)SQL群集安装
    一、测试需求介绍与准备公司计划服务器迁移过程计划同时上线SQLServer2012,引入SQLServer2012群集提高高可用性,需要对SQLServ ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • 在分析和解决 Keepalived VIP 漂移故障的过程中,我们发现主备节点配置如下:主节点 IP 为 172.16.30.31,备份节点 IP 为 172.16.30.32,虚拟 IP 为 172.16.30.10。故障表现为监控系统显示 Keepalived 主节点状态异常,导致 VIP 漂移到备份节点。通过详细检查配置文件和日志,我们发现主节点上的 Keepalived 进程未能正常运行,最终通过优化配置和重启服务解决了该问题。此外,我们还增加了健康检查机制,以提高系统的稳定性和可靠性。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • 解决JavaScript中法语字符排序问题
    在开发一个使用JavaScript、HTML和CSS的Web应用时,遇到从SQLite数据库中提取的法语词汇排序不正确的问题,特别是带重音符号的字母未按预期排序。 ... [详细]
  • 理解浏览器历史记录(2)hashchange、pushState
    阅读目录1.hashchange2.pushState本文也是一篇基础文章。继上文之后,本打算去研究pushState,偶然在一些信息中发现了锚点变 ... [详细]
author-avatar
手机用户2502933795
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有