# 第 13 章 数据库路由组件

作者:小傅哥
博客:https://bugstack.cn (opens new window)

沉淀、分享、成长,让自己和他人都能有所收获!

# 一、前言

代码是对数学逻辑的具体实现

ifelse也好、for循环也罢,代码可以说就是对数学逻辑的具体实现。所有敲代码的程序员几乎都离不开数学,难易不同而已。

那数学不好就写不了代码吗?不,一样可以写代码,可以写出更多的 CRUD 出来。这是因为你很难遇需要使用数学的场景,也很难发现某个场景可以用数据逻辑处理。但当你不断的学习、不断的成长,可以运用数学逻辑来驾驭程序实现时,会发现那有多酣畅淋漓。

当然也不要总觉得是产品需求简单所以你的实现过程才变成了增删改查,往往也是因为你还不具备可扩展、易维护、高性能的代码实现方案落地能力,才使得你小小年纪写出了更多的 CRUD!

# 二、需求背景

数据库路由的需求背景主要来自于业务体量的增加,让原有的技术设计和实现不能承载现有增加的业务规模和体量,因此需要设计分库分表。

最终无论你的应用程序是在最初设计时就开量要分库分表,还是因为业务体量的增加而分库分表,都需要考虑运用什么组件、使用什么方式,来分库分表。可能你会想到 ShardingSphere、MyCat 类似这样的组件。

但如果说在你程序设计之初并没有此类组件,或者是没有一个适合你当前业务的组件时,就需要来自行实现一个路由组件。

那么,本章节我们就来实现这样一个路由组件,看看数据库路由是如何设计和实现的。