Shark

分布式mysql分库分表中间件,sharding领域的一站式解决方案。(Distributed mysql sub-database sub-table middleware, one-stop solution in the sharding field)

  • 所有者: gaoxianglong/shark
  • 平台: BSD, Cross-platform, Linux, Mac, Solaris, Unix-like, Windows
  • 許可證: Apache License 2.0
  • 分類:
  • 主題:
  • 喜歡:
    2
      比較:

Github星跟蹤圖

Shark简介 License Join the chat at https://gitter.im/gaoxianglong/shark GitHub release Maven Central

分布式mysql分库分表中间件,sharding领域的一站式解决方案。具备丰富、灵活的路由算法支持,能够方便DBA实现库的水平扩容和降低数据迁移成本。shark采用应用集成架构,放弃通用性,只为换取更好的执行性能与降低分布式环境下外围系统的宕机风险。目前shark每天为不同的企业、业务提供亿级别的sql读/写服务


Shark的优点

  • 完善的技术文档支持;
  • 动态数据源的无缝切换;
  • 丰富、灵活的分布式路由算法支持;
  • 非proxy架构,应用直连数据库,降低外围系统依赖所带来的宕机风险;
  • 业务零侵入,配置简单;
  • 站在巨人的肩膀上(springjdbc、基于druid的sqlparser完成sql解析任务),执行性能高效、稳定;
  • 提供多机sequenceid的API支持,解决多机sequenceid难题;
  • 缺省支持基于zookeeper、redis3.x cluster作为集中式资源配置中心;
  • 基于velocity模板引擎渲染内容,支持sql语句独立配置和动态拼接,与业务逻辑代码解耦;
  • 提供内置验证页面,方便开发、测试及运维人员对执行后的sql进行验证;
  • 提供自动生成配置文件的API支持,降低配置出错率;

Shark总体架构

Shark采用应用集成架构,其领域模型位于持久层(JdbcTemplate)和JDBC之间,也就是分布式数据层。


Shark与其它Sharding中间件功能对比

我们并不认为Shark是最优秀的,但却始终坚信Shark是最好用的。

功能 Cobar Mycat Heisenberg Shark TDDL Sharding-JDBC
是否开源 开源 开源 开源 开源 部分开源 开源
架构模型 Proxy架构 Proxy架构 Proxy架构 应用集成架构 应用集成架构 应用集成架构
数据库支持 MySQL 任意 任意 MySQL 任意 MySQL
外围依赖 Diamond
使用复杂度 一般 一般 一般 简单 复杂 一般
技术文档支持 较少 付费 较少 丰富 一般

Shark的使用注意事项

  • 不支持强一致性的分布式事务,建议在业务层依赖MQ,保证最终数据一致性;
  • 不建议、不支持多表查询,所有多表查询sql,务必全部打散为单条sql逐条执行;
  • sql语句的第一个参数务必是shard key;
  • shard key必须是整数类型;

学习 & 联系我们

  • wiki:https://github.com/gaoxianglong/shark/wiki
  • issues:https://github.com/gaoxianglong/shark/issues
  • blog:http://gao-xianglong.iteye.com
  • email:gaoxl@yunjiweidian.com

典型案例


概覽

名稱與所有者gaoxianglong/shark
主編程語言Java
編程語言Java (語言數: 2)
平台BSD, Cross-platform, Linux, Mac, Solaris, Unix-like, Windows
許可證Apache License 2.0
發布數9
最新版本名稱2.0.2.RELEASE (發布於 )
第一版名稱shark1.3.6 (發布於 )
創建於2016-01-07 05:11:11
推送於2017-07-28 10:26:55
最后一次提交2017-07-28 18:26:17
星數500
關注者數83
派生數201
提交數216
已啟用問題?
問題數19
打開的問題數7
拉請求數0
打開的拉請求數1
關閉的拉請求數0
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?
去到頂部