<返回更多

浅谈读写分离和几种常见的开源数据库中间件

2021-08-19    老王的代码
加入收藏

最近学习了阿里资深技术专家李运华的架构设计关于读写分离的教程,颇有收获,总结一下。

1 读写分离概述

浅谈读写分离和几种常见的开源数据库中间件

 

基本架构图:

浅谈读写分离和几种常见的开源数据库中间件

 

2 适用场景

浅谈读写分离和几种常见的开源数据库中间件

 

读写分离不是银弹,并不是一有性能问题就上读写分离,而是应该先优化,例如优化慢查询,调整不合理的业务逻辑,引入缓存查询等只有确定系统没有优化空间后才考虑读写分离集群。

3 引入的系统复杂度问题

问题一 主从复制延迟

浅谈读写分离和几种常见的开源数据库中间件

 

问题二 分配机制

如何将读写操作区分开来,然后访问不同的数据库服务器?

解决方案1 客户端程序代码封装实现

基本架构图

浅谈读写分离和几种常见的开源数据库中间件

 


浅谈读写分离和几种常见的开源数据库中间件

 

业界开源实现

浅谈读写分离和几种常见的开源数据库中间件

 

浅谈读写分离和几种常见的开源数据库中间件

 

解决方案2 服务端中间件封装

基本架构图

浅谈读写分离和几种常见的开源数据库中间件

 


浅谈读写分离和几种常见的开源数据库中间件

 

业界开源实现

浅谈读写分离和几种常见的开源数据库中间件

 

MySQL Router是轻量级的中间件,可在应用程序和任何后端MySQL服务器之间提供透明路由。它可以用于各种各样的用例,例如通过有效地将数据库流量路由到适当的后端MySQL服务器来提供高可用性和可伸缩性。可插拔架构还使开发人员能够扩展MySQL Router以用于自定义用例。

基于MySQL Router可以实现读写分离,故障自动切换,负载均衡,连接池等功能。

浅谈读写分离和几种常见的开源数据库中间件

 

浅谈读写分离和几种常见的开源数据库中间件

 


浅谈读写分离和几种常见的开源数据库中间件

 

Atlas是由平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它是在mysql-proxy的基础上,对其进行了优化,增加了一些新的功能特性。

常见的开源数据库中间件对比:

功能

Sharding-JDBC

TDDL

Amoeba

Cobar

MyCat

基于客户端还是服务端

客户端

客户端

服务端

服务端

服务端

分库分表

MySQL交互协议

JDBC Driver

JDBC Driver

前端用NIO,后端用JDBC Driver

前端用NIO,后端用BIO

前后端均用NIO

支持的数据库

任意

任意

任意

MySQL

任意

 

 

 

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>