点击上方「

芋道源码

」,选择「置顶公众号」

技术文章第一时间送达!

源码精品专栏

 

  • 精尽 Dubbo 原理与源码 69 篇

  • 精尽 Netty 原理与源码

     61 篇

  • 中文详细注释的开源项目

  • Java 并发源码合集

  • RocketMQ 源码合集

  • Sharding-JDBC 源码解析合集

  • Spring MVC 和 Security 源码合集

  • MyCAT 源码解析合集

来源: https://www.jianshu.com/p/9eadfba9cdaf

最近学习了阿里资深技术专家李运华的架构设计关于分库分表的教程,颇有收获,总结一下。

本文主要介绍高性能资料库集群分库分表相关理论,基本架构,涉及的复杂度问题以及常见解决方案。

分库分表概述

读写分离分散资料库读写操作压力,分库分表

分散存储压力

适用场景

类似读写分离,分库分表也是确定没有其他优化空间之后才采取的优化方案

。那如果业务真的发展很快岂不是很快要进行分库分表了?那为何不一开始就设计好呢?

按照架构设计的「三原则」(

简单原则,合适原则,演化原则

),简单分析一下:

首先,这里的「如果」事实上发生的概率比较低,做10个业务有一个业务能活下去就很不错了,更何况快速发展,和中彩票的概率差不多。

如果我们每个业务上来就按照淘宝、微信的规模去做架构设计,不但会累死自己,还会害死业务

其次,

如果业务真的发展很快,后面进行分库分表也不迟

。因为业务发展好,相应的资源投入就会加大,可以投入更多的人和更多的钱,那业务分库带来的代码和业务复杂问题就可以通过加人来解决,成本问题也可以通过增加资金来解决。

业务分库

业务分表

业务分表概述

带来的问题

垂直分表

增加表操作的次数

水平分表

  • 路由问题

  • 资料库操作问题

实现方法

类似

读写分离

,具体实现也是「程序代码封装」和「中间件封装」,但具体实现复杂一些,因为还有要判断SQL中具体操作的表,具体操作(例如count、order by、group by等),根据具体操作做不同的处理。

参考

从0开始学架构 —— 李运华

《浅谈高性能资料库集群——读写分离》—— 陈彩华

《架构设计方法初探》 —— 陈彩华

《分库分表、主从、读写分离》



如果你对 Dubbo / Netty 等等源码与原理感兴趣,欢迎加入我的知识星球一起交流。

长按下方二维码噢

目前在知识星球更新了《

Dubbo 源码解析

》目录

如下:01. 调试环境搭建02. 项目结构一览03. 配置 Configuration04. 核心流程一览

05. 拓展机制 SPI

06. 线程池

07. 服务暴露 Export

08. 服务引用 Refer

09. 注册中心 Registry

10. 动态编译 Compile

11. 动态代理 Proxy

12. 服务调用 Invoke

13. 调用特性 

14. 过滤器 Filter

15. NIO 伺服器

16. P2P 伺服器

17. HTTP 伺服器

18. 序列化 Serialization

19. 集群容错 Cluster

20. 优雅停机

21. 日志适配

22. 状态检查

23. 监控中心 Monitor

24. 管理中心 Admin

25. 运维命令 QOS

26. 链路追踪 Tracing

... 一共 

69+

 篇

目前在知识星球更新了《

Netty 源码解析

》目录

如下:01. 调试环境搭建02. NIO 基础03. Netty 简介04. 启动 Bootstrap

05. 事件轮询 EventLoop

06. 通道管道 ChannelPipeline

07. 通道 Channel

08. 位元组缓冲区 ByteBuf

09. 通道处理器 ChannelHandler

10. 编解码 Codec

11. 工具类 Util

... 

一共 

61+

 篇

目前在知识星球更新了《

资料库实体设计

》目录

如下:

01. 商品模块02. 交易模块03. 营销模块04. 

公用模块

... 一共 

17+

 篇

源码不易

↓↓↓

点赞

支持老艿艿

↓↓


推荐阅读:
相关文章