偶然网上看到这个kingshard,自己对golang感兴趣就试玩了一下,可以正常跑成功。
数据库中间件是什么呢?简单的说和数据库类似,不同的是当程序里发送sql给它的时候,它会根据配置对sql进行分析,而后将sql发送到指定的节点(node)上,它的后面是若干数据库运行实例。
当应用发展起来后,随着数据库的压力逐渐变大,通常都要进行分库,分表,主从分离,这些东西在应用程序里实现也可以,但是会造成应用程序过于复杂,后续难以维护。使用中间件,将分库、分表、主从分离逻辑放到中间件上就更好的分离代码。
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,其中有一些不错的文章可以参考
有疑问加站长微信联系(非本文作者)