kingshard 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
kingshard 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
kingshard 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
kingshard 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
kingshard 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 MIT
开发语言 Google Go 查看源码 »
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
投 递 者 flikecn
适用人群 未知
收录时间 2015-07-23

软件简介

kingshard 是一个由 Go 开发高性能 MySQL Proxy 项目,kingshard 在满足基本的读写分离的功能上,致力于简化 MySQL 分库分表操作;能够让 DBA 通过 kingshard 轻松平滑地实现 MySQL 数据库扩容。

kingshard 的性能是直连 MySQL 性能的 80% 以上。

主要功能:

1. 基础功能

  • 支持SQL读写分离。
  • 支持透明的MySQL连接池,不必每次新建连接。
  • 支持平滑上线DB或下线DB,前端应用无感知。
  • 支持多个slave,slave之间通过权值进行负载均衡。
  • 支持强制读主库。
  • 支持主流语言(java,php,python,C/C++,Go)SDK的mysql的prepare特性。
  • 支持到后端DB的最大连接数限制。
  • 支持SQL日志及慢日志输出。
  • 支持SQL黑名单机制。
  • 支持客户端IP访问白名单机制,只有白名单中的IP才能访问kingshard(支持IP 段)。
  • 支持字符集设置。
  • 支持last_insert_id功能。
  • 支持热加载配置文件,动态修改kingshard配置项(具体参考管理端命令)。
  • 支持以Web API调用的方式管理kingshard。
  • 支持多用户模式,不同用户之间的表是权限隔离的,互补感知。

2. sharding功能

  • 支持按整数的hash和range分表方式。
  • 支持按年、月、日维度的时间分表方式。
  • 支持跨节点分表,子表可以分布在不同的节点。
  • 支持跨节点的count,sum,max和min等聚合函数。
  • 支持单个分表的join操作,即支持分表和另一张不分表的join操作。
  • 支持跨节点的order by,group by,limit等操作。
  • 支持将sql发送到特定的节点执行。
  • 支持在单个节点上执行事务,不支持跨多节点的分布式事务。
  • 支持非事务方式更新(insert,delete,update,replace)多个node上的子表。
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (3)

加载中
该评论暂时无法显示,详情咨询 QQ 群:912889742
其实MYSQL中间件,用哪个语言并不重要吧。。 #kingshard#
2015/07/28 11:58
回复
举报
y有没有ms sqlserver的proxy? #kingshard#
2015/07/28 23:37
回复
举报
2015/07/30 21:30
回复
举报
更多评论
暂无内容
发表于软件架构专区
2018/07/20 14:30

KingShard使用

对于kingshard的功能,在git中可以看到明确的功能说明 主要功能: 1. 基础功能 支持SQL读写分离。 支持透明的MySQL连接池,不必每次新建连接。 支持平滑上线DB或下线DB,前端应用无感知。 支持多个slave,slave之间通过权值进行负载均衡。 支持强制读主库。 支持主流语言(java,php,python,C/C++,Go)SDK的mysql的prepare特性。 支持到后端DB的最大连接数限制。 支持SQL日志及慢日志输出。 支持SQL黑名单机制。 支持客户端IP访问...

0
0
发表了博客
2019/03/13 09:32

使用kingshard遇到的坑

禁止用mysqldump 连接kingshard, 会导致表锁死 读取NULL值变为文本 通过kingshard连接 select出来的null值变为文本"NULL" kingshard 无法join分片表 假设a与b都是分片表, 即使a与b分片一致也无法join kingshard只能在分片表与不分片表之间join 不使用join,改写为嵌套语句 kingshard也不支持 kingshard分片前先预估数据量和iops iops满了 必须分物理机才能解决 kingshard不支持insert on duplicated key update这样的高级语句 ...

0
0
发表于数据库专区
2018/05/04 18:44

kingshard最佳实践(一)

一、kingshard简介 kingshard是一个Go开发的mysql中间件,可以实现读写分离、分库分表、连接池等功能 1.1 kingshard工作流程 kingshard采用Go开发,充分地利用了Go语言的并发特性。Go语言在并发方面,做了很好的封装,这大大简化了kingshard的开发工作。kingshard的整体工作流程如下所述: 读取配置文件并启动,在配置文件中设置的监听端口监听客户端请求。 收到客户端连接请求后,启动一个goroutine单独处理该请求。 首选进行登...

1
1
发表于数据库专区
2018/05/07 17:30

kingshard最佳实践(二)

上篇主要介绍了kingshard的工作流程、搭建及部分功能测试,今天来测试一下kingshard对sharding的支持 一、kingshard的sharding介绍 1.1 kingshard的sharding优势 现在开源的MySQL Proxy已经有几款了,并且有的已经在生产环境上广泛应用。但这些proxy在sharding方面,都是不能分子表的。也就是说一个node节点只能分一张表。但我们的线上需求通常是这样的: 我有一张非常大的表,行数超过十亿,需要进行拆分处理。假设拆分因子是5...

0
2
2019/12/30 17:40

4.MySQL读写分离中间件-kingshard搭建

1.kingshard简介 2. 安装Go语言环境 2.1 下载源码包 2.2. 解压到指定目录下 2.3. 更新环境变量 2.4. 查看go的版本信息 3.安装kingshard 3.1 下载tar包 3.2 解压文件 3.3运行kingshard 1.kingshard简介 kingshard是一个由Go开发高性能MySQL Proxy项目,kingshard在满足基本的读写分离的功能上,致力于简化MySQL分库分表操作;能够让DBA通过kingshard轻松平滑地实现MySQL数据库扩容。 kingshard的性能是直连MySQL性能的80%以上。线...

0
0
发表于DevOps专区
2019/12/30 17:42

Linux安装supervisor工具-管理kingshard

1.前言 2.安装 2.1 安装Python 2.2 安装supervisor 2.3 编辑配置文件 2.3.1 生成配置文件 2.3.2 配置supervisord.conf 3.管理supervisor 4.设置开机自启动 1.前言 在一个分布式环境中,每台机器上可能需要启动和停止多个进程,使用命令行方式一个一个手动启动和停止非常麻烦,而且查看每个进程的状态也很不方便。如果有一个工具能够实现每台机器上多个进程的简单高效中心化管理将是非常方便的。于是Supervisord工具应运而生。与...

0
0
发表于服务端专区
2015/11/02 20:49

Go语言项目(kingshard)性能优化实例剖析

# kingshard性能优化网络篇 最近kingshard的功能开发节奏慢了许多。一方面是工作确实比较忙,另一方面是我觉得kingshard的功能已经比较完善了,下一步的开发重点应该是性能优化。毕竟作为一个MySQL proxy,如果转发SQL的性能很差,再多的功能都无济于事。所以这个周末一直宅在家里优化kingshard的转发性能。经过两天的探索发现,将kingshard的转发SQL性能提升了18%左右,在这个过程中学到了一下知识。借此机会分享一下,同时也是...

13
80
发表于数据库专区
2015/11/22 18:42

一个高性能的MySQL proxy(kingshard)的性能测试报告

# kingshard的性能测试报告 之前的几篇blog,给大家分享的都是kingshard(https://github.com/flike/kingshard )的架构与设计。其实很多人对kingshard的性能也非常关心。最近热心的网友[bigpyer](https://github.com/bigpyer)对kingshard做了详细的性能测试。在此分享一下。 ## 1.测试环境 ### 1.1服务器配置 |类别|名称| |---|---| |OS |云主机 Ubuntu 14.04 LTS| |CPU |Common KVM CPU @ 2.40GHz *4| |RAM |8GB| |DISK |500GB...

0
0
发表于数据库专区
2015/09/05 20:17

如何利用一个数据库中间件扩展MySQL集群——kingshard使用指南

上次写了一篇有关kingshard(https://github.com/flike/kingshard) 架构设计的[文章](https://github.com/flike/kingshard/blob/master/doc/KingDoc/architecture_of_kingshard_CN.md),得到了很多热心网友的关注。其中有网友提到:希望再写一篇关于如何利用kingshard搭建一个可扩展的MySQL集群的文档。利用假期时间,写了一篇kingshard使用指南,在这篇文章中,我将结合自己对MySQL Proxy的理解,为大家讲述如何正确使用kingsha...

21
178
发表于数据库专区
2015/08/16 17:11

如何用Go语言打造一个高性能MySQL Proxy

# kingshard架构设计和功能实现 kingshard(https://github.com/flike/kingshard) 开源有一段时间了,有些热心的用户发邮件来咨询kingshard的设计和实现问题。于是周末抽空写了一篇介绍kingshard)架构和功能实现的文章,希望通过本文能够让用户对[v有更深的了解。下面分模块来介绍kingshard的核心组件的设计和实现。 ## 1. 整体架构 kingshard采用Go开发,充分地利用了Go语言的并发特性。Go语言在并发方面,做了很好的封装,这大...

18
197
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
3 评论
149 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部