golang编写的数据库中间件kingshard

bigfrog 发布于1年前 阅读24320次
0 条评论

偶然网上看到这个kingshard,自己对golang感兴趣就试玩了一下,可以正常跑成功。

数据库中间件是什么呢?简单的说和数据库类似,不同的是当程序里发送sql给它的时候,它会根据配置对sql进行分析,而后将sql发送到指定的节点(node)上,它的后面是若干数据库运行实例。

当应用发展起来后,随着数据库的压力逐渐变大,通常都要进行分库,分表,主从分离,这些东西在应用程序里实现也可以,但是会造成应用程序过于复杂,后续难以维护。使用中间件,将分库、分表、主从分离逻辑放到中间件上就更好的分离代码。

kingshard整体架构如下:

kingshard架构图

kingshard架构图

其中

  • client是需要连接数据库的客户端;
  • kingshard就是数据库中间件了;
  • node1和node2就是不同的mysql数据库节点,其中master表示主库,slave表示从库;

整体的安装过程还算顺利。碰到几个问题:

1、一开始想要安装golang 1.5发现golang 1.5需要自举,需要更早的版本,后来重新装了1.4。

2、装完golang后,执行hello world程序,提示:

warning: GOPATH set to GOROOT (/root/software/go) has no effect

将GOPATH加入bash路径即可:

$ vi ~/.bash_profile
 export GOROOT=/root/software/go #go安装目录
 export GOPATH=/root/go
$ source ~/.bash_profile

Tips:测试机上,笔者将golang安装在了/root/software/go目录是一种比较随意的方式,比较好的建议是安装在/usr/local/go目录。

3、安装kingshard的时候,make命令无法执行,提示如下错误:

go build -o bin/kingshard ./cmd/kingshard
 make: go: Command not found
 make: *** [kingshard] Error 127

看错误分析,将go命令加入系统可执行路径即可,下面直接建立一个符号链接。

$ ln -s go安装目录/bin/go /usr/local/bin/go

4、mysql远程无法访问,注意是否是防火墙的问题

参考地址:
kingshard:https://github.com/flike/kingshard,kingshard项目主页
中文说明地址:https://github.com/flike/kingshard/blob/master/README_ZH.md,其中有一些不错的文章可以参考

需要 登录 后回复方可回复, 如果你还没有账号你可以 注册 一个帐号。