Shark简介
前身为Kratos,轻量级Mysql分库分表(Sharding)中间件,丰富的Sharding算法支持(2类4种分片算法),能够方便DBA实现库的水平扩容和降低数据迁移成本。Shark站在巨人的肩膀上(SpringJdbc、Druid),采用与应用集成架构,放弃通用性,只为换取更好的执行性能与降低分布式环境下外围系统的宕机风险。

Shark的优点
动态数据源的无缝切换;
master/slave一主一从读写分离;
Sql独立配置,与逻辑代码解耦;
单线程读重试(取决于的数据库连接池是否支持);
单独且友好支持Mysql数据库;
非Proxy架构,与应用集成,应用直连数据库,降低外围系统依赖所带来的宕机风险;
使用简单,侵入性低,站在巨人的肩膀上,依赖于SpringJdbc、Druid;
基于淘宝Druid的SqlParser完成Sql解析任务,解析性能高效、稳定;
分库分表路由算法支持2类4种分片模式,库内分片/一库一片;
提供自动生成全局唯一的sequenceId的API支持;
提供自动生成配置文件的支持,降低配置出错率;
提供内置验证页面,方便开发、测试以及运维对执行后的sql进行验证;
专注于Sharding领域,无需兼容通用性,因此核心代码量少、易读易维护;
Shark的分片模型
Shark支持2类4种分片算法:
库内分片类型:
片名连续的库内分片算法;
非片名连续的库内分片算法;
一库一片类型:
片名连续的一库一片算法;
非片名连续的一库一片算法;
Shark的使用注意事项
不支持强一致性的分布式事务,建议在业务层采用依赖MQ、异步操作等方式实现事物,保证事物的最终一致性;
不建议、不支持多表查询,所有多表查询sql,务必全部打散为单条sql逐条执行;
sql语句的第一个参数务必是路由条件;
不支持sql语句中出现数据库别名;
路由条件必须是整数类型;

参考 https://www.iteye.com/news/31289

GitHub https://github.com/gaoxianglong/shark/wiki/shark-benchmark-result

轻量级Mysql Sharding中间件——Shark的更多相关文章

  1. 笔者带你剖析轻量级Sharding中间件——Kratos1.x

    之所以编写Kratos其实存在一个小插曲,当笔者满山遍野寻找成熟.稳定.高性能的Sharding中间件时,确实是翻山越岭,只不过始终没有找到一款合适笔者项目场景的中间件产品.依稀记得当年第一款使用的S ...

  2. 轻量级的REST中间件

    轻量级的REST中间件 纯净的REST中间件,绝对的轻量级,不需要安装任何三方控件 基于HTTPS.SYS和WEBSOCKET通信,支持海量并发 支持跨越DELPHI6~DELPHI10.2.2的开发 ...

  3. 常见mysql分布式数据中间件

    一般分为三种: 1. proxy sharding,目前由cobar,mycat,drds,atlas修改,这几个产品的起源一般是mysqlproxy 或 ameoba,特点是mysql协议基本兼容, ...

  4. MySQL sharding的几个参考地址

    http://stackoverflow.com/questions/5541421/mysql-sharding-approaches http://www.oschina.net/search?s ...

  5. 转:阿里开源Mysql分布式中间件:Cobar

    原文来自于:http://hualong.iteye.com/blog/2102798 这几天研究了下Cobar, Cobar是阿里巴巴研发的关系型数据的分布式处理系统(Amoeba的升级版,该产品成 ...

  6. 阿里开源Mysql分布式中间件:Cobar

    目前在从事数据库中间件的开发和维护工作,我们使用的数据库中间件就是由cobar改造而来,所以对于cobar的一些说明一看就明白了: 下面是看到的一个很不错的分析文档 这里整理了下方便自己学习使用. C ...

  7. mysql数据库中间件研究

    随着互联网的发展,数据量的不断增大. 单台实例已经远远无法满足业务的需要. 对数据库分库分表的需求不断的增加随之而来的就是数据库中间件的开发. 一. 单台实例主要面临下面几个问题: 1.  数据量太大 ...

  8. mySql 数据库中间件 atlas的使用

    MySQL 中间件Atlas 实现读写分离 原创 MySQL 作者:神谕丶 时间:2016-08-05 17:07:51  2410  0 〇 Atlas架构介绍 <span "=&q ...

  9. mysql mycat 中间件安装与使用

    一,什么是mycat 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务.ACID.可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群 一 ...

随机推荐

  1. Logstash:处理多个input

    Logstash:处理多个input Logstash的整个pipleline分为三个部分: input插件:提取数据. 这可以来自日志文件,TCP或UDP侦听器,若干协议特定插件(如syslog或I ...

  2. C# vb .NET生成QR二维码

    二维码比条形码具有更多优势,有些场合使用二维码比较多,比如支付.通过将某些数据生成二维码,就可以实现一码走天下.那么如何在C#,.Net平台代码里生成二维码呢?答案是使用SharpBarcode! S ...

  3. Pytest 测试框架

    一 . Pytest 简介 Pytest是python的一种单元测试框架. 1. pytest 特点 入门简单,文档丰富 支持单元测试,功能测试 支持参数化,重复执行,部分执行,测试跳过 兼容其他测试 ...

  4. JavaScript HTML DOM 节点

    要向HTML DOM添加新元素,必须首先创建元素(元素节点),然后将其附加到现有元素. <!DOCTYPE html> <html> <meta charset=&quo ...

  5. 好用的APS系统是什么样的?这篇文章来告诉你!

    APS系统除了为生产部门提供生产制造的依据,还关系采购计划.安全库存.订单交付等各环节,管理起来十分复杂.一款好用的APS系统,不仅能全面集成生产相关的业务流程,确保生产计划顺畅进行,还能大大提升生产 ...

  6. 汇编指令之ADC、SBB、XCHG、MOVS指令

    版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明.2019-08-25,23:52:49作者By-----溺心与沉浮----博客园 介绍完这些基础指令,后面就讲到汇编JCC指令了,我觉得介 ...

  7. Android四大组件:BroadcastReceiver 介绍

    介绍 BroadcastReceiver 即广播组件,是 Android 的四大组件之一.用于监听和接收广播消息,并做出响应.有以下一些应用: 不同组件之间的通信(应用内或不同应用之间). 多线程之间 ...

  8. adb 连接夜神和逍遥模拟器

    然后运行cmd命令,cd到夜神安装目录,执行命令 adb connect 127.0.0.1:62001 nox_adb.exe connect 127.0.0.1:62001 逍遥模拟器 adb c ...

  9. [Go] golang的用途和windows搭建环境

    Golang核心编程: 区块链研发工程师(分布式账本技术,互联网数据库技术,特点是去中心化) Go服务器端/游戏软件工程师(现在主流是C C++,处理日志,数据打包,文件处理,美团后台流量支撑,处理大 ...

  10. Docker介绍及安装(一)

    一.Docker简介 1.1 docker介绍 Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的cgroup,namespace,以及 AUFS 类的 ...