热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

关于数据库资源交付的通用设计和改进

这是学习笔记的第 2347篇文章

这是学习笔记的第 2347篇文章

  

  

 

对于安装部署来说,涉及的流程较为繁杂,而且随着后续的维护管理,流程会产生变动,在以往的代码层维护中,会容易产生难以适配,流程不稳定的情况,导致安装部署的交付效率和预期存在较大的差距。

已有的流程如下:

 

 

 

如上流程存在以下的问题,相信在很多中小公司都会或多或少有所涉及。

整体表现

1) 在代码实现中,流程相对臃肿,偏硬编码实现,流程改动风险高

2) 资源申请的填写信息过多,信息不够简洁,对于业务侧不够友好

3) 目前的资源流程较为复杂,属于定制化开发,如果在其他流程中有类似的配置,代码实现复用度低

 

资源审批

4) 资源交付时间比预期要长,一方面体现在审批环节,另一方面体现在资源交付的试错成本高

5) 测试环境的数据库资源申请目前在工单中不支持,需要人工引导创建数据库的流程

 

主机资源池筛选

6) 在资源交付中,如果存在工单中不匹配的资源配置,则无法交付,需要重新修改工单单据

7) 主机资源池的环节目前是人为控制,需要手工录入主机信息,没有资源池的阈值管理和资源预申请流程

 

数据库资源交付

8) 如果流程执行失败,重试流程检测相对单薄,需要手工做一些额外的处理工作

9) 流程过长,某一环节出现错误的概率较高,导致整个部署的出错概率偏高

10) 数据库新版本的接入,使得原本的模式难以兼容,新环境部署目前多采用手工模式部署

11) 如果申请单实例,一主两从,集群环境,则无法支持和适配。

 

数据库权限交付

12) 资源交付后的权限交付处理,可能在业务资源申请的时候还没有明确,所以后期改动的概率较高,而如果手工申请,则需要提交自动化上线协作单(建库),权限申请协作单(需要再一轮审批),建表(自动化上线协作单或者对象操作协作单),对于流程不够熟悉的开发人员,流程会显得复杂,不够清晰。

 

 

对此相应的改进策略和方向如下,简而言之是希望让资源的预申请和预配置这些占比超过90%的基础工作先做好,业务提交申请的时候DBA只需要额外处理那10%的一部分配置管理。

 

整体表现

1) 在代码实现中,流程相对臃肿,偏硬编码实现,流程改动风险高

改进策略:基于配置化的流程编排实现,在设计初期就考虑流程的变化,通过多流程配置和编排来实现不同业务场景的支持,如对于单实例,一主一从,一主两从的支持,流程相似但不同,通过配置不同的流程来实现多类需求

 

2) 资源申请的填写信息过多,信息不够简洁,对于业务侧不够友好

改进策略:优化目前的前端配置,去除不必要的信息和必填项,减少至少20%的填写项。

 

3) 目前的资源流程较为复杂,属于定制化开发,如果在其他流程中有类似的配置,代码实现复用度低

改进策略:对于流程编排和任务配置,可以通过通用化配置和通用服务来实现,提高代码复用和稳定性建设。

 

资源审批

4) 资源交付时间比预期要长,一方面体现在审批环节,另一方面体现在资源交付的试错成本高

改进策略:

对于测试环境的资源交付,其实就是数据库交付,可以简化流程实现

对于开发环境的资源交付,可以直接去除审批环节,后期通过虚拟化多租户的模式来实现

对于线上环境的资源交付,目前仍然保留已有的审批环节,在资源成本方面的体现有待商榷

 

5) 测试环境的数据库资源申请目前在工单单据中不支持,需要人工引导创建数据库的流程

改进策略:如上

 

主机资源池筛选

6) 在资源交付中,如果存在工单中不匹配的资源配置,则无法交付,需要重新修改工单数据

改进策略:资源池的配置可以实现差异化,但是需要考虑适配性。资源配置按照优先可扩容的标准来实现,比如业务申请8C8G的数据库资源,目前资源池存在5个实例资源:

① 24C4G, 28C8G,18C16G,则可以按照28C8G的规格来交付

② 24C4G, 18C8G,18C16G,则可以按照18C8G,18C16G的规格来交付,其中8C16G优先绑定主库

③ 24C4G, 18C8G,28C16G,则可以按照28C16G的规格来交付

 

 

7) 主机资源池的环节目前是人为控制,需要手工录入主机信息,没有资源池的阈值管理和资源预预申请流程

改进策略:在资源快速交付层面,可以把资源层拆分为主机资源池和数据库实例资源池,通过主机资源池和实例资源池来分层建设,其中实例资源池仅保留可用的资源,资源被使用后,需要归档到资源历史明细中,而主机资源池需要和系统部通过流程的方式来对接,对此主机资源池需要考虑实现阈值告警,并提供必要的接口供系统部回调。

 

数据库资源交付

8) 如果流程执行失败,重试流程检测相对单薄,需要手工做一些额外的处理工作

9) 流程过长,某一环节出现错误的概率较高,导致整个部署的出错概率偏高

10) 数据库新版本的接入,使得原本的模式难以兼容,新环境部署目前多采用手工模式部署

11) 如果申请单实例,一主两从,集群环境,则无法支持和适配

改进策略:目前通过通用流程来配置任务明细,对于任务对象,需要考虑流水编号的全局唯一性

 

数据库权限交付

12) 资源交付后的权限交付处理,可能在业务资源申请的时候还没有明确,所以后期改动的概率较高,而如果手工申请,则需要提交自动化上线协作单(建库),权限申请协作单(需要再一轮审批),建表(自动化上线协作单或者对象操作协作单),对于流程不够熟悉的开发人员,流程会显得复杂,不够清晰。

改进策略:对于资源申请单据的处理,可以适度提供更灵活的支持模式,尽可能减少多工单的提交方式。

 

 

 

 

对于通用任务流程的整体设计,主要是按照如下的方式分层的。

在更细节的部分涉及会少一些,比如任务依赖,超时处理等,主要还是以基本的流程执行模式为主。

其中编排层实现流程的编排,流程任务的配置,此处涉及基本信息,不涉及具体的实现细节

应用层为业务独立的数据模型,需要在业务层定义全局唯一的批次号(batch_no,也可以理解为全局唯一的对象ID.

任务执行层主要为通用任务的实现,其中流程任务的配置明细是基于应用层的数据配置和流程任务配置结合而成,形成任务明细的注册,如在提交部署请求的时候,就是任务明细的执行计划。

流程任务明细日志维护流程任务明细的执行日志和状态,如果任务执行成功,则会更新相应的任务明细记录状态,反之如果失败,则需要启动重试机制。

各大平台都可以找到我

  • 微信公众号:杨建荣的学习笔记
  • Github:@jeanron100
  • CSDN:@jeanron100
  • 知乎:@jeanron100
  • 头条号:@杨建荣的学习笔记
  • 网易号:@杨建荣的数据库笔记
  • 大鱼号:@杨建荣的数据库笔记
  • 腾讯云+社区:@杨建荣的学习笔记

近期热文:

我们为什么在MySQL中几乎不使用分区表

新年大吉 总结了如下的感想

《大江大河2》最触动我的一段经典对话

MySQL 8.0给开发方向带来的一些困扰

迁移到MySQL的业务架构演进实战

MySQL业务双活的初步设计方案

如何优化MySQL千万级大表,我写了6000字的解读

一道经典的MySQL面试题,答案出现三次反转

小白学MySQL要多久?我整理了10多个问题的答案

转载热文:

2020年度20多款主流数据库重大更新及技术要点回顾

工行“去O”数据库选型与分布式架构设计

MySQL 实战笔记 第01期:MySQL 角色管理

MGR用哪个版本?5.7 vs 8.0

SQLcl这个可爱的小工具,来了解一下呀~

CPU占用又爆了?MySQL到底在干什么

这个MySQL优化原理剖析,比照X光还清楚

自己动手写SQL执行引擎

最受欢迎的微服务框架概览

程序员,保住你的钱袋子!

QQ群号:763628645

QQ群二维码如下, 添加请注明:姓名+地区+职位,否则不予通过


在看,让更多人看到



推荐阅读
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • 修复一个 Bug 竟耗时两天?真的有那么复杂吗?
    修复一个 Bug 竟然耗费了两天时间?这背后究竟隐藏着怎样的复杂性?本文将深入探讨这个看似简单的 Bug 为何会如此棘手,从代码层面剖析问题根源,并分享解决过程中遇到的技术挑战和心得。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • 从无到有,构建个人专属的操作系统解决方案
    操作系统(OS)被誉为程序员的三大浪漫之一,常被比喻为计算机的灵魂、大脑、内核和基石,其重要性不言而喻。本文将详细介绍如何从零开始构建个人专属的操作系统解决方案,涵盖从需求分析到系统设计、开发与测试的全过程,帮助读者深入理解操作系统的本质与实现方法。 ... [详细]
  • 从用户转型为开发者:一场思维升级的旅程 | 专访 StarRocks Committer 周威
    从用户转变为开发者,不仅是一次角色的转换,更是一场深刻的思维升级之旅。本次专访中,StarRocks Committer 周威分享了他如何在这一过程中逐步提升技术能力与思维方式,为开源社区贡献自己的力量。 ... [详细]
  • 2019年斯坦福大学CS224n课程笔记:深度学习在自然语言处理中的应用——Word2Vec与GloVe模型解析
    本文详细解析了2019年斯坦福大学CS224n课程中关于深度学习在自然语言处理(NLP)领域的应用,重点探讨了Word2Vec和GloVe两种词嵌入模型的原理与实现方法。通过具体案例分析,深入阐述了这两种模型在提升NLP任务性能方面的优势与应用场景。 ... [详细]
  • 如何在Oracle ASM_Diskgroup中重命名现有磁盘
    如何在Oracle ASM_Diskgroup中重命名现有磁盘 ... [详细]
  • 本文推荐了六款高效的Java Web应用开发工具,并详细介绍了它们的实用功能。其中,分布式敏捷开发系统架构“zheng”项目,基于Spring、Spring MVC和MyBatis技术栈,提供了完整的分布式敏捷开发解决方案,支持快速构建高性能的企业级应用。此外,该工具还集成了多种中间件和服务,进一步提升了开发效率和系统的可维护性。 ... [详细]
  • Spring Boot 实战(一):基础的CRUD操作详解
    在《Spring Boot 实战(一)》中,详细介绍了基础的CRUD操作,涵盖创建、读取、更新和删除等核心功能,适合初学者快速掌握Spring Boot框架的应用开发技巧。 ... [详细]
  • 本文详细解析了如何使用 jQuery 实现一个在浏览器地址栏运行的射击游戏。通过源代码分析,展示了关键的 JavaScript 技术和实现方法,并提供了在线演示链接供读者参考。此外,还介绍了如何在 Visual Studio Code 中进行开发和调试,为开发者提供了实用的技巧和建议。 ... [详细]
  • 如何运用蒙特卡洛方法计算NPV:计算机专业毕业设计遇到难题怎么办?
    许多计算机科学专业的学生在大学期间都会遇到这样的困扰:课堂上教授的内容往往偏向理论,实际应用的知识点讲解得较为浅显和概括,导致在进行毕业设计时,如运用蒙特卡洛方法计算净现值(NPV)等复杂问题时感到无从下手。本文旨在探讨如何通过深入理解和实践蒙特卡洛模拟技术,解决这类计算难题,为学生的毕业设计提供实用指导。 ... [详细]
  • 智能制造数据综合分析与应用解决方案
    在智能制造领域,生产数据通过先进的采集设备收集,并利用时序数据库或关系型数据库进行高效存储。这些数据经过处理后,通过可视化数据大屏呈现,为生产车间、生产控制中心以及管理层提供实时、精准的信息支持,助力不同应用场景下的决策优化和效率提升。 ... [详细]
  • 掌握PHP框架开发与应用的核心知识点:构建高效PHP框架所需的技术与能力综述
    掌握PHP框架开发与应用的核心知识点对于构建高效PHP框架至关重要。本文综述了开发PHP框架所需的关键技术和能力,包括但不限于对PHP语言的深入理解、设计模式的应用、数据库操作、安全性措施以及性能优化等方面。对于初学者而言,熟悉主流框架如Laravel、Symfony等的实际应用场景,有助于更好地理解和掌握自定义框架开发的精髓。 ... [详细]
  • 当前,众多初创企业对全栈工程师的需求日益增长,但市场中却存在大量所谓的“伪全栈工程师”,尤其是那些仅掌握了Node.js技能的前端开发人员。本文旨在深入探讨全栈工程师在现代技术生态中的真实角色与价值,澄清对这一角色的误解,并强调真正的全栈工程师应具备全面的技术栈和综合解决问题的能力。 ... [详细]
  • 本课程详细介绍了如何使用Python Flask框架从零开始构建鱼书应用,涵盖高级编程技巧和实战项目。通过视频教学,学员将学习到Flask的高效用法,包括数据库事务处理和书籍交易模型的实现。特别感谢AI资源网提供的课程下载支持。 ... [详细]
author-avatar
颖子_忒美
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有