高可用系统的底座里,数据库中间件是绕不开的一环。求路由、读写分离、容灾切换这些功能,要做得稳,得靠中间件顶上。

Mycat 的思路还挺有代表性,适合想搞明白中间件怎么撑起数据库高可用的同学看看。它通过解析 SQL,把求分发到不同的数据节点,实现了分库分表负载均衡。嗯,扩展性也还行。

设计的时候,建议你重点关注故障切换机制。比如节点挂了怎么自动转移求?主从延迟太大怎么办?这些场景在生产环境下挺常见的,一不小心就宕服务。

还有就是,全局事务要不要支持、怎么支持,这块比较烧脑。你可以先用补偿机制试试,比如下单失败就回滚库存。别一上来就搞分布式事务,坑太多。

如果你想深入看看 Mycat 的实现,可以翻这篇文章:Mycat 数据库中间件详解,讲得比较细。

如果你最近在搭建一套高可用的服务架构,可以从中间件这块先动手,搭个雏形出来,再逐步加特性。