知识卡片
读写分离的两种实现路径:代码封装 vs 中间件
内容
读写分离分流有两种路径:代码封装(业务代码加一层数据访问层路由读写)简单可定制,但每种语言要重复实现,主从切换需所有业务系统改配置重启;中间件封装(独立系统伪装成标准数据库)支持多语言、切换对业务无感,但要实现完整数据库协议兼容,复杂度高一个数量级。发散:这是复杂度前移的权衡——代码封装把复杂度摊到每个业务系统,中间件把复杂度收敛到一个组件,值不值得投入取决于接入系统数量能否摊平中间件开发成本。
参考来源
- 位置:《从0开始学架构》第17章《14|高性能数据库集群:读写分离》"程序代码封装""中间件封装"两节(源文件:_epub-src/OEBPS/Text/part0016_split_003.html、part0016_split_004.html)
- 结论依据:原文说明"数据库中间件……能够支持多种编程语言……数据库主从切换对业务服务器无感知",但"数据库中间件的复杂度要比程序代码封装高出一个数量级,一般情况下建议采用程序语言封装的方式,或者使用成熟的开源数据库中间件"。
- 原始内容:数据库中间件……能够支持多种编程语言,因为数据库中间件对业务服务器提供的是标准SQL接口……数据库主从切换对业务服务器无感知……由于数据库中间件的复杂度要比程序代码封装高出一个数量级,一般情况下建议采用程序语言封装的方式,或者使用成熟的开源数据库中间件。