热门标签 | 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群二维码如下, 添加请注明:姓名+地区+职位,否则不予通过


在看,让更多人看到



推荐阅读
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • Spring Cloud学习指南:深入理解微服务架构
    本文介绍了微服务架构的基本概念及其在Spring Cloud中的实现。讨论了微服务架构的主要优势,如简化开发和维护、快速启动、灵活的技术栈选择以及按需扩展的能力。同时,也探讨了微服务架构面临的挑战,包括较高的运维要求、分布式系统的复杂性、接口调整的成本等问题。最后,文章提出了实施微服务时应遵循的设计原则。 ... [详细]
  • 前言无论是对于刚入行工作还是已经工作几年的java开发者来说,面试求职始终是你需要直面的一件事情。首先梳理自己的知识体系,针对性准备,会有事半功倍的效果。我们往往会把重点放在技术上 ... [详细]
  • 最新计算机专业原创毕业设计参考选题都有源码+数据库是近期作品ling取参考你的选题刚好在下面有,有时间看到机会给您发1ssm资源循环利用2springboot校园考勤系统3ssm防 ... [详细]
  • 为何我选择了华为云GaussDB数据库
    本文分享了作者选择华为云GaussDB数据库的理由,详细介绍了GaussDB(for MySQL)的技术特性和优势,以及它在金融和互联网行业的应用场景。 ... [详细]
  • 本文探讨了2019年前端技术的发展趋势,包括工具化、配置化和泛前端化等方面,并提供了详细的学习路线和职业规划建议。 ... [详细]
  • 本文详细介绍了Java的安装、配置、运行流程以及有效的学习方法,旨在帮助初学者快速上手Java编程。 ... [详细]
  • 本文详细介绍了MySQL中的存储过程,包括其定义、优势与劣势,并提供了创建、调用及删除存储过程的具体示例,旨在帮助开发者更好地利用这一数据库特性。 ... [详细]
  • Spring Cloud Config 使用 Vault 作为配置存储
    本文探讨了如何在Spring Cloud Config中集成HashiCorp Vault作为配置存储解决方案,基于Spring Cloud Hoxton.RELEASE及Spring Boot 2.2.1.RELEASE版本。文章还提供了详细的配置示例和实践建议。 ... [详细]
  • 字节跳动夏季招聘面试经验分享
    本文详细记录了字节跳动夏季招聘的面试经历,涵盖了一、二、三轮面试的技术问题及项目讨论,旨在为准备类似面试的求职者提供参考。 ... [详细]
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • 深入解析MySQL查询优化:特定类型查询的高级策略
    本文详细探讨了MySQL中特定类型查询的优化方法,包括COUNT()查询、关联查询、LIMIT分页及UNION查询的优化技巧,旨在提高数据库查询效率。 ... [详细]
  • MySQL性能测试标准倡议:老叶提出的压测基准
    进行MySQL的压力测试通常是为了评估新旧版本之间的性能差异、验证硬件升级的效果、测试参数调整的影响以及评估新业务的负载承受能力。老叶提出了一个MySQL压力测试基准值倡议,旨在促进行业内的标准化和成果共享。 ... [详细]
  • 如何处理MySQL命令行中文乱码问题
    本文详细探讨了MySQL命令行中出现中文乱码的原因及解决方案,通过调整配置文件和执行特定SQL命令来确保字符集正确设置,为用户提供了一个有效的解决路径。 ... [详细]
  • 掌握Spring MVC中自定义类型转换与格式化的技巧
    近期,在开发一款小程序的过程中遇到了几个Spring MVC接口需要传递时间参数的问题。本文将详细介绍如何利用Java 8 Time API在Spring MVC中实现时间参数的自定义类型转换和格式化。 ... [详细]
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社区 版权所有