凌鲨定位于连接研发过程中一切信息和工具。下面是数据库代理的大概框架:
技术选型
- 使用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