轻量级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集群 一 ...
随机推荐
- Kubernetes service 代理模式
Kubernetes service 代理模式 底层流量转发与负载均衡实现:• Iptables(默认)• IPVS IPVS 了解代理模式之IPVS工作原理LVS 基于 IPVS内核调度模块实现的负 ...
- 【java提高】---patchca生成验证码
Java使用patchca生成验证码 Patchca是Piotr Piastucki写的一个java验证码开源库,打包成jar文件发布,patchca使用简单但功能强大. 本例实现了自定 ...
- WEBAPI 设置上传文件大小
参考资料:https://stackoverflow.com/questions/33399267/cors-error-when-uploading-larger-files https:// ...
- python3的hashlib库sha256、pbkdf2_hmac、blake2b基本用法
hashlib.sha256: import hashlib x = hashlib.sha256()x.update(b"asd")print("x_1 = " ...
- 关于javascript,多种函数封装!!
1.获取最终的属性 function getStyleAttr(obj, attr){ if(window.getComputedStyle){ return window.getComputedSt ...
- node整个环境的启动
1.启动mongodb服务 在 下载 / mongodb-osx- / 文件夹 新建终端窗口 ,输入命令,启动mongodb服务: mongod --dbpath data --logpath log ...
- 信号量(Posix)
Posix信号量分为有名信号量和无名信号量 1. Posix有名信号量 有名信号量既可以用于线程间的同步也可以用于进程间的同步 sem都是创建在/dev/shm目录下,名字格式sem.xxx,只需要指 ...
- 201871010118-唐敬博《面向对象程序设计(java)》第十三周学习总结
博文正文开头格式:(2分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.co ...
- Centos 安装Django2.1
一.环境准备 1.1 服务器系统 Centos7 1.2.所需工具 python3(Django 2.0 版本是基于python3 版本,故而安装时需安装python3) Setuptools(> ...
- 浅谈SOA与RPC
一.SOA 英文名称:Service Oriented Ambiguity 中文名称:面向服务架构 SOA是一种思想,目的是提供一种设计项目的思路,让开发时更有效率. 例如原来的分布式项目中,在每个项 ...