18-04 数据库分布式架构

news/2024/11/18 0:40:54/

分布式ID

UUID

  • 优点:

    • 使用简单
    • 无需引入额外组件
  • 缺点

    • 无序,无法实现范围查询
    • 插入操作比自增ID性能差不少(大概四倍)
    • 建议用自增ID(表的主键) + UUID(唯一标识)

Redis

  • Incr指令
  • 优点:
    • 使用简单
    • 性能不错
  • 缺点
    • 需要引入额外组件
    • 强依赖Redis

利用数据库的自增能力

在这里插入图片描述

  • 优点:
    • 使用简单
    • 对代码没有侵入性
  • 缺点
    • 扩展性不佳
    • 非单调递增,只能趋势递增

号段模式

  • Spring的MySQLMaxValueIncrementer

  • 简单号段模式
    在这里插入图片描述
    在这里插入图片描述

  • 优点:取得号段之后,不再强依赖数据库

  • 缺点:趋势递增的,而非单调递增

类Snowflake算法

在这里插入图片描述
在这里插入图片描述

  • 优点:
    • 不依赖任何中间件
    • 性能好
    • 单调递增
  • 缺点:
    • 依赖时钟的一致性
    • 时钟回拨会有问题

分库分表中间件

  • 每个库只存储部分数据,如何根据查询条件路由到对应库
  • 一条语句可能要同时查询多个实例,才能获得最终结果
  • 跨库join:参与join的表,分别属于不同的数据库实例
  • MyCat教程

数据迁移

迁移数据的场景

  • 机房迁移,阿里云迁移到华为云
  • 系统重构,表结构发生重大变化
  • 分表调整
  • 更换数据库选型

迁移数据的诉求

  • 数据准确
  • 不能影响用户体验:中途不能停机

迁移的方案

挂从库

  • 在这里插入图片描述
  • 优点:
    • 迁移成本比较低
    • 操作简单
  • 缺点:
    • 有段时间不可写入
    • 只适合数据库选型不变,同时表结构不变的场景

双写

在这里插入图片描述

  • 优点:
    • 灵活,能满足各种业务场景
    • 不会停机
  • 缺点
    • 复杂度相对高
    • 要修改业务代码
    • 迁移周期相对长

http://www.ppmy.cn/news/83951.html

相关文章

知识点滴 - dBm和mW的转换

分贝毫瓦dBm,decibel-milliwatts,全写为“decibel relative to one milliwatt”,为一个指代功率的绝对值,而不同于dB只是一个相对值。 dBm或dBmW(分贝-毫瓦)用于表示功率的水平或级别,以分贝&am…

如何在Ubuntu服务器上安装 QEMU/KVM 以创建虚拟机

KVM是 Kernel-based Virtual Machine 的缩写,是集成到 Linux 内核中的开源类型 1 虚拟机管理程序(裸机虚拟机管理程序)。它允许您创建和管理运行 Windows、Linux 或 UNIX 变体(如 FreeBSD 和 OpenBSD)的虚拟机,每个虚拟机都有自己的虚拟资源,例如存储、内存、CPU、网络接…

Qt在Linux内核中的应用及解析(qtlinux内核)

Qt是跨平台开发的一种工具,尤其适合在Linux内核中的应用开发中使用。Qt能够让开发者在Linux桌面上开发出强大的图形化应用程序,为Linux系统用户提供更加人性化、实用、智能化的服务。本文将从Qt在Linux内核中的应用场景、应用程序开发中的具体使用、以及…

徐延涛:医疗健康企业如何重构客户管理的“营销”与“服务”?

随着人口老龄化和生活健康水平的提升,中国的医疗健康行业市场规模前景向好。《2023易凯资本中国健康产业白皮书》显示,从2022年到2030年的八年里,中国健康产业的整体规模将从10万亿元增长到接近20万亿,年复合增长率将达到9.5%-10%…

Android之Fragment 跳转返回重复加载重复执行onCreateView的四种解决方法

前言: Fragment 跳转返回重复加载重复执行 onCreateView 的问题通常是因为 Fragment 生命周期方法的调用顺序和使用不当所导致的。 1,onSaveInstanceState()方法 一种解决方法是在 Fragment 中使用 onSaveInstanceState() 方法保存 Fragment 的状态&…

【python】制作一个点单小程序!

周末总是在吃的方面,及其纠结,今天来制作一个点单小程序,加入自己喜欢吃的东西,来慢慢挑选,让每个周末快乐无限! 一.安装环境 python 3.7.8 QT xlrd、xlwt库使用pip接口进行安装 pip install xlrd pip …

智能工厂已成为制造业数字化转型的重心

我国“十四五”规划纲要提出,要深入实施智能制造和绿色制造工程,发展服务型制造新模式,推动制造业高端化智能化绿色化。随着5G等新一代信息技术与制造业不断深度融合,制造业的智能化发展成为未来我国制造业转型升级的重要方向。《…

freertos任务优先级分配

RQ 任务:IRQ 任务是指通过中断服务程序进行触发的任务,此类任务应该设置为所有任务里面优先 级最高的。高优先级后台任务:比如按键检测,触摸检测,USB 消息处理,串口消息处理等,都可以归为这一类…