开发日记-凌鲨中数据库代理的实现

凌鲨定位于连接研发过程中一切信息和工具。下面是数据库代理的大概框架:

开发日记-凌鲨中数据库代理的实现_第1张图片

技术选型

  • 使用golang开发各种数据库协议代理,redis-proxy,mysql-proxy,mongo-proxy
  • 使用swagger提供代理协议的调试

选型原因

我们的客户端使用了tauri作为框架,在实现扩展功能的时候需要使用rust语言,在网络方面的库上,rust不如go语言。而且数据库协议代理计算量很小,rust收益不明显。使用外挂子进程的方式可以保证客户端核心功能稳定。

子进程提供一个端口独立监听http请求,为了保证接口安全,我们在代理程序启动的时候,生成一个token,在后续的所有接口调用上都会带上这个token。

未来改进

把数据库代理程序作为sidecar放在安装包内,会造成如下问题:

  • 安装包体积变大
  • 代理程序修改,需要发布新版本的客户端

在数据库代理变多的情况下,我们会把代理程序做出按需下载和更新。

相关代码

  • redis代理协议定义 redis-proxy-proto
  • redis代理协议生成代码 redis-proxy-api
  • redis数据访问微应用 minapp-redis
  • mongo代理协议定义 mongo-proxy-proto
  • mongo代理协议生成代码 mongo-proxy-api
  • mongo数据访问微应用 minapp-mongo

 

你可能感兴趣的:(数据库)