golang编写的数据库中间件kingshard

陈杰斌 · · 7799 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

偶然网上看到这个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,其中有一些不错的文章可以参考


有疑问加站长微信联系(非本文作者)

本文来自:快乐编程

感谢作者:陈杰斌

查看原文:golang编写的数据库中间件kingshard

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

7799 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传