公众号merlinsea
业界常见的分库分表中间件:
TDDL:淘宝根据⾃⼰的业务特点开发了 TDDL (Taobao Distributed Data Layer),基于JDBC规范,没有server,以client-jar的形式存在,引⼊项⽬即可使⽤。但是开源版本的TDDL功能⽐较少,阿⾥内部使⽤为主。
Mycat: 官网:http://www.mycat.org.cn/ ,Java语⾔编写的MySQL数据库⽹络协议的开源中间件,前身是 Cobar 遵守Mysql原⽣协议,跨语⾔,跨平台,跨数据库的通⽤【中间件代理】;基于 Proxy,复写了 MySQL 协议,将 Mycat Server伪装成⼀个 MySQL 数据库 ;和ShardingShere下的Sharding-Proxy作⽤类似,需要单独部署 。
Sharding JDBC :官网:https://shardingsphere.apache.org/ ,Apache ShardingSphere 是⼀套开源的分布式数据库中间件解决⽅案组成的⽣态圈,它由 Sharding-JDBC、Sharding-Proxy 和 Sharding Sidecar 3个独⽴产品组合;Sharding-JDBC基于jdbc驱动,不⽤额外的proxy,⽀持任意实现 JDBC规范的数据库 ;它使⽤客户端直连数据库,以 jar 包形式提供服务,⽆需额外部署和依赖 ;可理解为加强版的 JDBC 驱动,兼容 JDBC 和各类 ORM框架 。
Mycat的作为分库分表中间件的架构图:
Sharding jdbc作为分库分表中间件的架构图:
Mycat 和 sharding jdbc的对比
相同点:两者设计理念相同,主流程都是SQL解析-->SQL路由-->SQL改写-->结果归并。
区别点:
sharding jdbc :是基于jdbc驱动,不需要额外的中间代理,在本地应用层重写jdbc的原生方法来实现数据库分片。是基于 JDBC 接⼝的扩展,是以 jar 包的形式提供轻量级服务的,性能⾼。代码具有侵入性,耦合程度更高。
Mycat :是基于 Proxy,它复写了 MySQL 协议,将 Mycat Server伪装成⼀个 MySQL 数据库。客户端所有的jdbc请求都必须要先交给MyCat,再有MyCat转发到具体的真实服务器。缺点是效率偏低,中间包装了⼀层。代码⽆侵⼊性。
- 关于leetcode算法训练营:
- 加我微信号私聊参加训练营,尤其是想进入大厂工作的同学,算法是绕不过去的坎,我自己花了三年时间刷算法,总结思路,刷各种数据结构课程,加入我的训练营,我手把手以在线直播课的形式带你理思路,手把手带你写代码,让你真正体会算法之美~,同时遇到不明白的地方可以直接课上和我沟通,彻底解决你的代码困难证~
本人用c++刷了800道左右的算法,java语言刷了600道左右的算法题,并对这些题做了详细的个人总结。本科期间系统学习了数据结构与算法课程,同时考研过程中写完了率辉主编的《2020年数据结构高分笔记》和《数据结构1000题》,看完的视频包括《mooc浙大数据结构国家精品课程》和《王道考研408数据结构课程》,《王道2019年算法题讲解视频》,最终以初试专业第三名进入了北理工软件工程专业。熟悉并掌握常见的数据结构,比如链表、数组、树、图、队列、堆栈等等,精通数据结构教材中的所有算法,比如常见的遍历算法、动态规划,递归,回溯,剪枝,并查集,最短路径,拓扑排序等,所以快加入训练营吧,我们一起进步
奔跑的小梁,公众号:梁霖编程工具库我决定了,算法文档开源!!