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

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

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

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远程无法访问,注意是否是防火墙的问题

golang mysql 中间件_golang编写的数据库中间件kingshard相关推荐

  1. 主从复制MySQL的安装和用数据库中间件MyCat实现分库分表、读写分离

    1.MySql主从复制 1.1.安装mysql 1.1.1.下载 下载地址:https://dev.mysql.com/downloads/mysql/ 1.1.2.卸载预装mysql #查看已安装: ...

  2. mysql fa连接池中间件_小米开源数据库中间件gaea

    简介 Gaea是小米商城/系统组研发的基于 mysql 协议的 数据库 中间件,目前在小米商城大陆和海外得到广泛使用,包括订单.社区.活动等多个业务.Gaea支持分库分表.sql路由.读写分离.连接池 ...

  3. java访问数据库的中间件有哪些_数据库中间件是什么?

    面向数据库的中间件是促进与数据库通信的中间件,无论是来自应用程序还是数据库之间. 开发人员通常使用面向数据库的中间件作为从本地或远程数据库提取信息的机制. 例如,为了从Oracle数据库提取信息,开发 ...

  4. golang mysql 事务_golang的嵌套事务管理-Go语言中文社区

    golang的事务管理是一件很麻烦的事,,能不能像Java那样,通过Spring管理事务,最近琢磨了一下,写了一个demo,用来管理golang的事务,使其支持golang事务的嵌套调用. 其思想很简 ...

  5. golang mysql 回调_Golang操作MySQL的正确姿势

    封装原因: 查看了很多网上提供的ORM类型的数据库操作,觉得比较麻烦,需要提前配置很多的表结构体,然后才能使用,对于数据表很多的项目就配置起来就比较麻烦,所以对golang的mysql包进行了外层包装 ...

  6. golang mysql封装_golang如何封装路由

    封装方式一.路由写在 main函数中,数据库初始连接放在 init() 函数中.. 首先看 main.go 一个初始化函数,初始化 dbfunc init() { db.Connect() } 第二, ...

  7. golang mysql 单元测试_golang 之单元测试

    测试 测试是自动化测试的简称,即编写简单的程序来确保程序(产品代码)在测试中针对特定输入产生预期的输出.Go的测试方法看上去相对比较低级,它依赖于命令go test和一些能用go test运行的测试函 ...

  8. golang mysql单元测试_golang test测试使用

    1.创建测试文件夹mysql,文件夹下的go文件的package必须与文件夹名一致(不然会识别不到) 2.创建需要测试的文件mysql.go(使用github.com/go-sql-driver/my ...

  9. golang mysql 超时_golang中mysql建立连接超时时间timeout 测试

    本文测试连接mysql的超时时间. 这里的"连接"是建立连接的意思. 连接mysql的超时时间是通过参数timeout设置的. 1.建立连接超时测试 下面例子中,设置连接超时时间为 ...

最新文章

  1. 映射date类型_JPA 日历映射到日期示例
  2. oracle11g自带优化吗,windows下Oracle11g的优化教程
  3. 概述VB.NET正则表达式简化程序代码
  4. 图解:从单个服务器扩展到百万用户的系统
  5. 深度学习笔记 第四门课 卷积神经网络 第三周 目标检测
  6. 【转】ubuntu,你改变了我的人生
  7. Volley简单学习使用五—— 源代码分析三
  8. 可观测性PHP秩判据,线性系统的可控性与可观测性
  9. 眉山市2021高考成绩查询,四川省眉山市2021年普通高校招生网上报名入口
  10. java计算机毕业设计计算机系教师教研科研管理系统源码+数据库+系统+lw文档+mybatis+运行部署
  11. 入侵服务器的一种方法
  12. 笔记本电脑内外网(无线和本地网络)优先顺序选择
  13. sendcloud php 群发,laravel sendcloud发送邮件
  14. 连分数与丢番图方程简介
  15. 【求回答】如何在mac上使用pip?zsh: command not found: pip
  16. Android的读写文件权限
  17. 美信监控易:石油销售公司全省IT一体化运维解决方案
  18. ReactNative解决方案研究
  19. 60种数据可视化图表总结
  20. Java开发培训班该怎样选择?

热门文章

  1. Spring Cloud组件之GetWay
  2. cesium 获取多边形polygon中心点
  3. ios 高德地图加载瓦片地图_集成iOS高德地图
  4. Lighthouse性能监测工具
  5. Lighthouse二周年 如约而至
  6. 红旗2000胡才勇:开源软件伸向移动设备
  7. Android——常用定时器
  8. Vim入门(六):行的光标移动
  9. 简书发布文章时要求绑定微信号后才能发布
  10. Linux的SOCKET编程详解