服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

分库分表,可能真的要退出历史舞台了!

日期: 来源:石杉的架构笔记收集编辑:小姐姐养的狗

「 关注“石杉的架构笔记”,大厂架构经验倾囊相授 


文章来源:【公众号:小姐姐味道】




即使是不懂编程的玩家,在对比 NAS 的时候,也会两眼放光,考虑很多因素,比如 RAID 级别、速度、易用程度等。作为时时刻刻与代码打交道的我们,更需要关注数据的存取问题。


一开始,开箱即用的 MySQL,一定是企业的首选。不仅仅因为用的人多,更重要的是生态成熟。要工具有工具,要人有人。对于老板来说,员工看着不爽,可以随时辞退,是一个非常理想的状态。

但是,没有胸怀的老板,干的一定不会长久,因为如果商务会吹、老板会忽悠,业务会飞速发展(虽然现在这种机会比较少了)。对于 MySQL 来说,很快就会遇到问题。

这个时候,就需要一些比只会用 MySQL 级别高一些的人才,来配合老板圆梦。

是时候了,由单机 MySQL 向分布式发展了。

单机 MySQL 面临很多问题。

  1. 单表太大,比如超过 500w,查询就非常吃力
  2. 单库太大,各种资源告急
  3. 读请求太高,严重影响写请求

对此,一堆概念也是腾空而出,比如分库分表、读写分离等。

很长时间以来,国内互联网的做法普遍是采用加入一个中间件的方式来解决,但随着分布式数据库的技术越来越成熟,这些魔法逐渐下沉到它本应该解决的层面--数据库实现层。

留给分库分表技术的时间,已经不多了,它的存量市场越来越少了。分库分表技术,退出历史舞台,也是迟早的事情了。

解决上面三个单机 MySQL 问题,有很多种切入层面。比如,你简单的在 MyBatis 或者 JPA 之上使用 AOP 或者拦截器封装一层,也可以实现,这也是最傻的方式。

再进一步,就可以采用在 JDBC 之上的驱动层来实现,把分库分表的路由维护在内存里,通过重写的 DataSource、Connection、Statment、ResultSet等,对业务进行无侵入的改进。但可惜的是,我们还必须要维护与逻辑表相对应的物理表,而且功能也是阉割的,不确定性依然不小。更要命的是,JDBC 只支持 Java,对于某些公司来说,就非常的不适用。

再就是中间件的传统模式,Proxy。把自己伪装成一个MySQL Server,接受 Client 的请求。至于它后面怎么去操作真实的数据库,你都不需要知道。但 Proxy 本身也是一套服务,你有运维成本在里面,同时功能依然是阉割的。

框架层,驱动层,代理层,在过去很长一段时间里,有无数的互联网公司前赴后继的试水,从 TDDL、Cobar,到 MyCat、ShardingSphere,各种层面的中间件也是层出不穷。但最近几年,这种争相斗艳的场面逐渐不再,到最后剩下来的,也就ShardingSphere这一枝独秀了。

是问题不存在了么?不,正好相反,问题越来越严重。并不是问题消失了,而是它被转化成其他解决方式了。

抛开关系型数据库不说,很久之前,类似于 ElasticSearch、Cassandra这样的 NoSQL 存储,分片和副本的概念,就已经非常成熟了,而且它们是内置的,并不需要 DBA 去人工维护它们的物理位置。

对于关系型数据库来说,走向分布式也终将成为必然。随着 Raft 等协议应用越来越广泛,分布式数据库的可靠性也逐渐得到了保证。如果你以前因为事务问题而拒绝采用某些 NoSQL 产品,那么如今完全兼容 MySQL 的分布式数据库,你没有理由再说 No。

云厂商,直接提供了像Aurora、PolarDB之类的MySQL增强,更有类似 TiDB、OceanBase 这样纯粹的分布式数据库,越来越多的业务走向了这个终途。当你的团队加班加点验证着分库分表中间件的时候,却发现其实换个兼容的存储就能玩得转,你会怎么选,简直不用再多说。

当然,一旦你选用了分布式数据库,以前的 DBA 经验可能就不管用了,比如说索引及其二级索引。你的团队不得不学习新的知识,来应对分布式环境。

但这些都是阵痛,长远看来,分布式数据库是趋势,而分库分表中间件只能吃存量。

当你的业务有了常年累积的复杂数据,你可能会采用复杂的分库分表组件,但如果你的业务比较新,可预见的未来会有大量数据,那一个分布式数据库可能是最合适的。

分库分表中间件并不是消失了。它摇身一变,变成了分布式数据库的一部分。

你可能会听到很多切到分布式数据库,又从分布式数据库切回到 MySQL 的案例,这属于想吃螃蟹但并没有吃到。目前来看,分布式数据库越来越稳定,生态建设也越来越好。而分库分表,则属于存量业务,终将会退出历史的舞台。

欢迎扫码加入儒猿技术交流群,每天晚上20:00都有Java面试、Redis、MySQL、RocketMQ、SpringCloudAlibaba、Java架构等技术答疑分享,更能跟小伙伴们一起交流技术


另外推荐儒猿课堂的9.9元系列课程给您,欢迎加入一起学习~


互联网Java工程师面试突击课
(9.9元专享)

SpringCloudAlibaba零基础入门到项目实战
9.9元专享)

亿级流量下的电商详情页系统实战项目
9.9元专享)

Kafka消息中间件内核源码精讲
9.9元专享)

12个实战案例带你玩转Java并发编程
9.9元专享)

Elasticsearch零基础入门到精通
9.9元专享)

基于Java手写分布式中间件系统实战
9.9元专享)

基于ShardingSphere的分库分表实战课
9.9元专享)

相关阅读

  • 国内IT软件外包公司汇总(2023最新版)

  • 作者:沉默王二Java 程序员进阶之路:https://tobebetterjavaer.com大家好,我是二哥呀。上次在文章留言区做了一个小小的统计:点赞人数中,外包和不在外包的比例,大家可以感受下。这
  • 动态线程池的最佳实践,好用!

  • 关注我,回复关键字“spring”,免费领取Spring学习资料。基于配置中心的轻量级动态线程池,内置监控告警功能,集成常用中间件线程池管理,可通过SPI自定义扩展实现使用痛点使用线程
  • 深入MyBatis执行过程

  • 点击上方☝SpringForAll社区 轻松关注!及时获取有趣有料的技术文章MyBatis是一款优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码
  • ThreadPoolExecutor 深入解析

  • 点击上方☝SpringForAll社区 轻松关注!及时获取有趣有料的技术文章Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序 都可以使用线程池。合理地
  • Spring Boot + Netty + Websocket 实现推送消息

  • 关注我,回复关键字“2022面经”,领取2022大厂Java后端面经。学过 Netty 的都知道,Netty 对 NIO 进行了很好的封装,简单的 API,庞大的开源社区。深受广大程序员喜爱。基于此本文分
  • 某D网盘最新满速下载方法,非联播方式!

  • “设为星标”第一时间接收推送,精彩内容不容错过!前言前段时间听群里小伙伴说一款游戏还不错,就准备去下载回来试试水,结果游戏文件存储在某度网盘,以前分享的各种方法似乎都不能
  • LOOK | 香港中文大学「深圳」· 别人家的学校

  • 今年,港中大(深圳)正式恢复对外开放非在校人员也可以在周末及法定节假日入校参观-“梧桐树下听凤鸣,神仙湖畔论古今”这次,和LOOK一起来这里逛逛“滴!一日校园体验卡”这,就是港中

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

  • 似懂非懂 CAS ?这次全都能搞明白

  • / 今日科技快讯 /近日,在2023亚布力中国企业家论坛年会现场,百度创始人、董事长兼首席执行官李彦宏在接受采访时,首次回应外界对于文心一言的反馈。“外界反馈跟我预期差不
  • 真的没谁了,你想要的这里都有!太强了!

  • 大家好,我是你们的好朋友大明,欢迎大家来到【大明青年】。今日分享大家好。每个人需要的资源都不一样,有人要音乐软件?要看小说软件?要看动漫软件?今天就推荐一款软件,可以满足所有
  • 永远不要在你的 Linux 系统上运行这些命令

  • 点击上方蓝字 ● 关注Linux公社 本文涉及到一些你绝不能在你的 Linux 系统上运行的命令,因为它们可能对你的 Linux 系统造成致命的影响。因此,在我继续之前,我想指出,本文仅
  • 国内IT软件外包公司汇总(2023最新版)

  • 作者:沉默王二Java 程序员进阶之路:https://tobebetterjavaer.com大家好,我是二哥呀。上次在文章留言区做了一个小小的统计:点赞人数中,外包和不在外包的比例,大家可以感受下。这
  • 分库分表,可能真的要退出历史舞台了!

  • 「 关注“石杉的架构笔记”,大厂架构经验倾囊相授 」文章来源:【公众号:小姐姐味道】即使是不懂编程的玩家,在对比 NAS 的时候,也会两眼放光,考虑很多因素,比如 RAID 级别、速度、
  • 值得收藏:一份非常完整的 MySQL 规范~

  • 原价199元,现在参加拼团活动立享优惠价仅 99 元,赶快一起参团吧!《从零开始带你成为MySQL实战优化高手》无论在面试还是工作中,MySQL都是所有后端程序员必须熟练掌握的技术,而目