MySQL分布式管理初步设计

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

MySQL里面一般提到分布式,所说的主要就是基于中间件的方案。

中间件方案对于业务的使用相对是透明的,而且扩展性相对较好,这里说较好,是基于良好的架构设计,对于弹性伸缩的支持还是有限的。

所以行业里也有说基于中间件的方案是伪分布式,至于是不是纯粹的分布式方案,其实讨论的要点不在于配置是否使用XML,而在于整个方案的设计是不是足够轻量。

当然抛开业务场景和数据定位来说分布式,是很空洞的,也是很无力的。

比如流水型数据,哪里需要那么多的事务支持,

强事务一致性的业务,拆成分布式维护代价也会很高,就好比相比关系型和NewSQL,一个是油车,一个是电车,不能说一个完全会取代另外一个,而是基于特定的时间维度和场景来考虑。

技术圈的人容易有一个毛病就是总是容易陷入自己的意识之中,可能做事情的时候忙活了一圈发现原来这个是不重要的。不要为了分布式而分布式。

至于分布式管理的部分,主要的思想是基于分片的逻辑设计,我们会基于中间件来管理整个分布式集群,对一个结构相对稳定的系统而言,分布式是很轻松的,但是如果存在一些数据变更的时候,这个变更的代价就会很高。

对一个已有的配置表增加一个字段,那么我们可能考虑多个分片,比如一个表test_log,我们把数据分成16分,那么就是16个分片,对于业务来说都是test_log,因为基于资源和扩容的考虑,我们的16个分片不是分布在16台服务器上,而是4台服务器上,也可以理解是4个物理分片节点,16个逻辑分片节点。

对整个集群做数据变更管理的时候,其实就涉及很多细节工作了。对此我设计了一个初版的demo,也是作为分布式管理的一个基本入口,接入的第一个功能就是实现变更的平台化,就是对于表test_log做表级别变更,那么维护这个的代价和维护一个单表是类似的。整个环节的工作不是在中间件基础上完成,而是在各个分片节点上完成。

在这个基础上,还有一些辅助工作要完成,这就是周期表的维护了,我们可以基于时间维度来拆分表,比如test_log_20181105,test_log_20181106

比如这些表我们创建了一个月的,但是一个月之后,可能我们就很容易忘记了,所以对于周期表的维护可以基于这些细节做深做细。

在这个基础上,我们可以做一些更有特色的服务,比如最近在接入的一个业务,处于压测阶段,对于数据的增长情况其实没有一个很清晰直观的认识,那么我们就可以基于中间件采集从库端的数据情况来生成一个趋势图,比如按照10分钟为一个维度来获得数据变化,那么在此基础上如果表数据是1000万,我们就知道这1000万数据是怎么来的,可以基于此来做一些更有针对性的维护和优化。

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2018-11-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CSDN技术头条

微服务开发中的数据构架设计

前言 微服务是当前非常流行的技术框架,通过服务的小型化、原子化以及分布式架构的弹性伸缩和高可用性,可以实现业务之间的松耦合、业务的灵活调整组合以及系统的高可用性...

48810
来自专栏编程

程序员提高编程能力万无一失的办法

那就是去读别人写的代码。读那些你常用的库、编程框架的源代码,读那些你景仰的大牛的源代码,读代码里的测试(测试本身就是一种有效的文档);读代码、改代码、运行代码。...

2699
来自专栏LET

CPU之Profiling

之前我们介绍了CPU,Cache,主要在原理上理解如何充分调用CPU的性能(Why),接着又学习了SIMD技术,算是在编程层面上发挥CPU的并行计算能力(How...

2273
来自专栏个人分享

大数据理论体系总结--数据仓库管理与全链路数据体系

  就这样,大数据领域蓬勃发展了好几年,有很多伙伴执迷于技术,成为了分布式计算与存储的领域专家。也有很多伙伴执迷于数据,成为了行业的数据研发专家。当然还有很多小...

3364
来自专栏Java架构

千万级调用量微服务架构实践

电商是促销拉动式的场景,也是价格战驱动的场景。618和双11都是典型的促销活动。其实都是在抢用户、扩市场占有率。在这样的场景之下,对秒杀、抢购是很热衷的玩法。

2785
来自专栏MongoDB中文社区

微服务下的数据架构

微服务是一个软件架构模式,对微服务的讨论大多集中在容器或其他技术是否能很好的实施微服务,而本文将从以下几个角度来和大家分享在微服务架构下进行数据设计需要关注的地...

1382
来自专栏Golang语言社区

GitHub上优秀的Go开源项目

近一年来,学习和研究Go语言,断断续续的收集了一些比较优秀的开源项目,这些项目都非常不错,可以供我们学习和研究Go用,从中可以学到很多关于Go的使用、技巧以及相...

2154
来自专栏杨建荣的学习笔记

从“悲剧”的几个运维场景谈谈运维开发的痛点

我在这个事情上栽了很多的跟头,而且会发现事情变得越来越不可控。就好比我的期望是6,达到的结果是2,反差越大,发现改进的空间很大,以至于我会陷入一个死循环,我会想...

1222
来自专栏QQ会员技术团队的专栏

大规模排行榜系统实践及挑战

在过去的一年中,排行榜系统从无到有,接入的业务从单一的QQ会员到企鹅电竞动漫等20几个各类业务,接入的排行榜数实现了从几个到数万的突破,单个排行榜用户数最大90...

3.7K1
来自专栏熊二哥

架构设计深入学习02-概念架构与细化架构

胜兵先胜而后求战,败兵先战而后求胜—《孙子兵法》。 这部分有些内容比较陈旧,但原理和思路还是一致的。 ? 通常来说,概念架构满足"架构=组件+交互"且只关注高...

2278

扫码关注云+社区

领取腾讯云代金券