主页
手机版
扫描查看手机站
所在位置:首页 → 教程资讯 → 探讨分库分表技术发展

探讨分库分表技术发展

发布: 更新时间:2024-05-21 09:02:09

近年来,随着互联网行业的迅猛发展,相较于传统的IT企业,互联网应用每天产生着海量数据。对于如何存储和分析这些数据一直是技术领域的痛点。正是在这一背景下,分库分表解决方案应运而生。

多年前,Java技术论坛javaeye上出现了一篇来自淘宝技术人员分享的分库分表的文章。作者反复阅读并尝试吸取知识,但由于技术能力不足,始终感到难以理解。直到2012年,阿里巴巴开源了Cobar,作者的困惑才得到初步解筴。

Cobar是由阿里巴巴开源的MySQL分布式处理中间件,可在分布式环境下提供类似传统数据库的海量数据服务。阅读了Cobar文章后,作者下载了Cobar的部署包,并在两个库中手动插入了一条记录,发现通过Navicat连接Cobar的暴露端口后,数据表显示了两条数据。作者激动不已,但对Cobar的原理仍充满好奇。

因为在互联网上关于Cobar的文章并不多,作者的同事朋友对分库分表也不了解,于是作者决定用最笨的方法学习:将Cobar源码抄写一遍,边抄边理解,直至能够运行程序。于是,作者建立了一个新的maven项目,逐步抄写Cobar的包结构、网络通讯设计和SQL解析。然而,当作者抄写到SQL解析模块时,因为不理解原理,选拔起来实在困难,最终放弃了这一活动,耗费了近三个月的时间。

抄写源码所得收获

尽管当时并未完全理解Cobar的实现机制,但作者仍有了许多收获。


1、网络编程


作者第一次接触了Reactor模式,NIOAcceptor负责处理前端请求,NIOConnector管理后端连接,NIOProcessor管理多线程事件处理,而NIOReactor完成底层事件驱动机制。作者在接触Netty后,开始思考Cobar的网络通讯层可以做得更加优雅。MyCat也是重点优化了后端网络通讯层。


2、缓存池


作者第一次了解到在网络通讯中,可以封装统一管理NIO的Buffer。


3、打包技巧


作者学习到Cobar的maven打包方式,并参考其目录结构进行自己项目的构建,认为这种方式更加优雅。


4、学习sharding-jdbc


初步认识分库分表Proxy的设计后,学习当当开源的sharding-jdbc变得轻松许多。

开源分库分表示例项目

作者热衷于分库分表技术,渴望增强技术解决问题的能力。因此,于2021年三月,作者开源了一个分库分表示例项目。

这个项目的初衷在于帮助Java开发者快速入门分库分表,并不仅限于此。


1、Grpc ID生成器示例


项目中提供了一个Grpc ID生成器示例。


2、shardingsphere-jdbc 4.X/5.X分库分表实例


项目提供了两个模块,分别使用jdbc 4.X和jdbc 5.X两个版本。

同时,每个模块里都准备了原生API使用的例子,便于学习者进行调试。


3、antlr学习例子


shardingsphere基于antlr4设计了新一代的SQL解析引擎,作者单独抽出一个模块用来演示。

作者表示项目将不断进化,后期还将添加扩容相关的知识点,如canal、datax,希望能够帮助更多人。

总结

尽管分布式数据库架构的先进性不容置疑,但分库分表技术的最大优势在于其简单性。一些技术储备较为薄弱的小公司,仅凭极少的研发人员就能处理大数据量,这正是分库分表技术的魅力所在。

文章以一张傻傻抄写代码的照片为结局,作者深信没有完美的技术,只有最合适的技术。若读者对此篇文章有所帮助,作者希望得到读者的点赞、在看和转发,以激励作者输出更高质量的文章。

软件上新 查看更多