Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5452897
  • 博文数量: 348
  • 博客积分: 2173
  • 博客等级: 上尉
  • 技术积分: 7900
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-24 17:26
个人简介

雄关漫道真如铁,而今迈步从头越。

文章存档

2022年(4)

2020年(6)

2019年(2)

2018年(2)

2017年(34)

2016年(49)

2015年(53)

2014年(47)

2013年(72)

2012年(79)

分类: Mysql/postgreSQL

2022-04-14 14:41:35

    MyCat是一个基于第三方应用中间件的数据库代理框架,客户端所有的 jdbc 请求都必须要先交给 MyCat ,再由 MyCat 转发到具本的真实服务器中。Sharding-jdbc 是一个jar形式,在本地应用层重写的 jdbc 原生的方法,实现数据库分片形式。
    MyCat 属于服务器端的数据库中间件,而 Sharding-jdbc 是一个 本地 数据库中间件框架,从设计理念上看确实有一定的相似性。 主要流程都是SQL解析 -> SQL路由 ->SQL改写 -> SQL执行->结果归并,但架构设计上是不同的。MyCat 是基于Proxy,它复写了MyCat协议,将MyCat server伪装成一个 MyCat 数据库;而Sharding-jdbc 是基于 jdbc 的扩展是以jar包的形式提供轻量级服务的,使用MyCat时不需要改代码,而使用Sharding-jdbc时需要修改代码,对应用入侵性比较强。
    MyCat是支持SQL92标准,遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理。由于遵守Mysql原生协议,应用时不需要特殊处理,和使用MySQL是一样的,所以应用场景不受限制;但是mycat不支持二维路由,仅支持单库多表或多库单表,同时由于自定义连接池,这样就会存在mycat自身维护一个连接池,MySQL也有一个连接池,任何一个连接池上限都会成为性能的瓶颈,而mycat的连接池设计也略显粗暴,当请求链接数大于设置连接池上限时直接抛出异常,因此在配置mycat连接池的大小是,需要结合场景做合理设置。总的来说,mycat以逻辑表的形式屏蔽掉应用处理分库分表的复杂逻辑,遵守Mysql原生协议,跨语言,跨平台,有着更为通用的应用场景。
      从架构上看Sharding-jdbc更符合分布式架构的设计,直连数据库,没有中间应用,理论性能是最高的(实际性能需要结合具体的代码实现,理论性能可以理解为上限,通过不断优化代码实现,逐渐接近理论性能)。同时缺点也很明显,由于作为组件存在,需要集成在应用内,意味着作为使用方,必须要集成到代码里,使得开发成本相对较高。
     以下为Mycat 和 ShardingSphere(包括 Sharding-JDBC、Sharding-Proxy 和 Sharding-Sidecar 3 款产品)功能的比较:
    
阅读(4991) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~