基于Java语言编写的轻量级分库分表(Sharding)中间件:kratos

ygp8 9年前

kratos简介

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

Kratos的使用手册:http://gao-xianglong.iteye.com/blog/2237277
Kratos的分片模型:http://gao-xianglong.iteye.com/blog/2238901
Kratos的注意事项:http://gao-xianglong.iteye.com/blog/2239007

kratos的优点:

1、动态数据源的无缝切换;
2、master/slave一主一从读写分离;
3、单线程读重试(取决于的数据库连接池是否支持);
4、单独且友好支持Mysql数据库,不支持其它RDBMS库;
5、非Proxy架构,与应用集成,应用直连数据库,降低外围系统依赖带来的down机风险;
6、使用简单,侵入型低,站在巨人的肩膀上,依赖于Spring JDBC;
7、不做真正意义上的Sql解析任务,规避Sql解析过程中由词法解析、语法解析、语义解析等操作所带来的性能延迟,仅用正则表达式解析 片名和Route条件,解析过程仅耗时约<=1ms;
8、分库分表路由算法支持2类4种分片模式,库内分片/一库一片;
9、提供自动生成sequenceId的API支持;
10、提供自动生成配置文件的支持,降低配置出错率;
11、目标和职责定位明确,仅专注于Sharding,不支持其它多余或鸡肋功能、无需兼容通用性,因此核心代码量少、易读易维护

项目主页:http://www.open-open.com/lib/view/home/1441376113034