轻量级Mysql Sharding中间件——Shark
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的更多相关文章
- 笔者带你剖析轻量级Sharding中间件——Kratos1.x
之所以编写Kratos其实存在一个小插曲,当笔者满山遍野寻找成熟.稳定.高性能的Sharding中间件时,确实是翻山越岭,只不过始终没有找到一款合适笔者项目场景的中间件产品.依稀记得当年第一款使用的S ...
- 轻量级的REST中间件
轻量级的REST中间件 纯净的REST中间件,绝对的轻量级,不需要安装任何三方控件 基于HTTPS.SYS和WEBSOCKET通信,支持海量并发 支持跨越DELPHI6~DELPHI10.2.2的开发 ...
- 常见mysql分布式数据中间件
一般分为三种: 1. proxy sharding,目前由cobar,mycat,drds,atlas修改,这几个产品的起源一般是mysqlproxy 或 ameoba,特点是mysql协议基本兼容, ...
- MySQL sharding的几个参考地址
http://stackoverflow.com/questions/5541421/mysql-sharding-approaches http://www.oschina.net/search?s ...
- 转:阿里开源Mysql分布式中间件:Cobar
原文来自于:http://hualong.iteye.com/blog/2102798 这几天研究了下Cobar, Cobar是阿里巴巴研发的关系型数据的分布式处理系统(Amoeba的升级版,该产品成 ...
- 阿里开源Mysql分布式中间件:Cobar
目前在从事数据库中间件的开发和维护工作,我们使用的数据库中间件就是由cobar改造而来,所以对于cobar的一些说明一看就明白了: 下面是看到的一个很不错的分析文档 这里整理了下方便自己学习使用. C ...
- mysql数据库中间件研究
随着互联网的发展,数据量的不断增大. 单台实例已经远远无法满足业务的需要. 对数据库分库分表的需求不断的增加随之而来的就是数据库中间件的开发. 一. 单台实例主要面临下面几个问题: 1. 数据量太大 ...
- mySql 数据库中间件 atlas的使用
MySQL 中间件Atlas 实现读写分离 原创 MySQL 作者:神谕丶 时间:2016-08-05 17:07:51 2410 0 〇 Atlas架构介绍 <span "=&q ...
- mysql mycat 中间件安装与使用
一,什么是mycat 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务.ACID.可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群 一 ...
随机推荐
- Oracle 查询练习
非常经典的一些日常醒脑练习内容!! 如有更高效的写法欢迎赐教! .已知Oracle的Scott用户中提供了三个测试数据库表,名称分别为dept,emp和salgrade.使用SQL语言完成以下操作 ) ...
- WPF-数据模板深入(加载XML类型数据)
一.我们知道WPF数据模板是当我们给定一个数据类型,我们为这个数据类型写好布局,就给这种数据类型穿上了外衣. 下面这个例子,能够帮助大家充分理解数据模板就是数据类型的外衣的意思:(里面的MyListB ...
- SpirngBoot整合Spring-data-JPA
0.引言 使用SpringBoot data jpa技术相比mybatis是比较难的,这里只给出整合方法 1.引入SpringBoot data jpa <!--JPA依赖--> < ...
- React + Ts 实现三子棋小游戏
在这里阅读效果更佳 还记得当年和同桌在草稿纸上下三子棋的时光吗 今天我们就用代码来重温一下年少(假设你有react基础,没有也行,只要你会三大框架的任意一种,上手react不难) 游戏规则 双方各执一 ...
- 第九届极客大挑战——小帅的广告(二阶sql注入)
也是经过一通扫描和测试,没发现其他有用信息,感觉这是个sql注入.其实对于二阶sql注入我以前没实践过,也没看过资料,只是知道这个名字,但不知道为何看到这道题就让我回想起了这个名词,所以查了一下二阶s ...
- maven 学习---使用Maven运行单元测试
要通过Maven运行单元测试,发出此命令: mvn test 这会在你的项目中运行整个单元测试. 案例学习 创建两个单元测试,并通过 Maven 的运行它.参见一个简单的 Java 测试类: pack ...
- Linux signal与定时器
1. signal sighandler_t signal(int signum, sighandler_t handler); signum:是一个信号.除了SIGKILL和SIGSTOP外的任何一 ...
- ca动画
//动画上下文-(void)animationOfUIKit{ UIView *redView=[[UIView alloc]initWithFrame:CGRectMake(10, 10, 1 ...
- CATransform3D 特效详解
http://blog.sina.com.cn/s/blog_8f5097be0101b91z.html
- 【Java】简体中文、繁体中文转换
项目中用到繁体中文语言适配,目前已经有开源的框架可以将简体中文转换成繁体中文,在此基础上封装了一个工具类,可以直接将简体中文的strings.xml转换成繁体中文的strings.xml. 引用Jar ...