文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

关于业务存储结构扩容的方案设计和思考

2024-12-02 01:51

关注

我们假设这个id字段为uid,如果是用户业务,则很多业务逻辑都是和这个uid强相关的,那么就会存在大量的业务梳理和研发代码的接入,如果底层数据存储的压力和风险过大,则这个事情的改进周期和影响范围就会更难以评估和控制。

所以这个问题从长期来看是未雨绸缪,对已有的数据存储是完全兼容的。但是从短期来看,这个调整会对已有的线上服务带来一些风险,如果涉及到约束的变更,则这个事情的复杂度会更高。为此我们经过沟通,想到了如下的几类解决方案:

1)新增字段uid_64,这样已有的业务逻辑可以正常运行,新的字段可以并行调整,当然从数据存储来看,这个代价是比较高了,而且后续调整为uid_64之后很可能需要再统一为uid的模式,所以从研发还是数据存储来说,改造幅度都比较大。

2)在线变更,这里我说的在线变更拆分为了4类场景。

场景1:

对于一些复杂度较为可控的业务,数据量也不够大,采用在线变更的模式是比较合适的,这里我们可以使用online DDL,pt-osc或者gh-ost的方式来实现在线变更;

场景2:

对于一些较为复杂的业务,如MySQL集群,采用了分库分表,数据量可能在亿级别,这种变更的复杂度就比较大了,而且可以肯定的是在线变更对于复杂架构模式的风险大,而且不可控因素会更多,这里可以采用更好的应用架构设计,基于高可用灵活切换的方式,比如整个结构的变更都可以在从库端进行统一调整,因为这种数据类型的扩容是具备兼容性的,所以原生的复制不会产生直接影响,而且即使执行时间长一些,对于线上业务来说是几乎无感知的,等变更完成之后,就可以快速通过服务切换的方式将集群从原本的主库切换到从库,这个过程是需要主动触发,如果是秒级的异常,会对研发来说是直接反馈,这种情况下反而是好事。这个过程涉及的细节较多,核心思想就是从库,异步,高可用切换;

场景3:

对于流水日志的处理方式,采用T+1的模式对于研发侧来说是几乎不需要修改主干业务逻辑就可以适配的。

场景4:

这一类场景较为复杂,比如在业务中会有不规范的使用方式,对于不规范导致的列名不是uid的情况,比如从xid修改为uid,在数据库和研发侧的修改代价都是比较高的,这种情况下,我是不建议使用在线变更的模式

3)业务在线迁移

这一类场景对于后端数据存储是相对简单的,就是提供一个新的数据库,让业务来完成整体的迁移和切换,这种情况下,对于研发的能力要求较高,所有的关键操作都是通过研发在线迁移的方式来实现。

综上的三种方案,我是建议根据场景来灵活适配,比如方案2和方案3来组合的形式。如果后端的数据存储在梳理中修改范围更加的庞大,则需要根据细化的业务场景来选择当前更合适的方案。

来源:杨建荣的学习笔记内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯