Bifrost 是基于vertx3 开发的mongo代理服务器,使用kotlin编写。
由于Sass后台各个服务中间件需要访问mongo越来越多,mongo集群数量也逐渐增加。为了管理和监控方便,必须要统一mongo访问。Bifrost 对开发者屏蔽了后端mongo架构,直接访问bifrost即可。
- 通过解析 mongo 协议 实现 mongo SCRAM 认证协议,达到开发者访问mongo的安全隔离
- 通过实现Namespace 获取db和cluster之间的关系
- 通过拦截mongo协议请求,实现mongo慢查询监控
本项目默认会自动打包成docker容器,images名称以bifrost-server:version的形式存放在registry里.
通过docker命令docker run --name bifrost-kotlin --net=host -d bifrost-server:0.0.1-SNAPSHOT 默认服务占用271017
$ mvn clean install -Dmaven.test.skip=true 1.首先启动bifrost服务,可以使用docker启动或者在项目中执行Bootstrap.kt。 默认占用端口为27017,可以自行更改配置信息 config.json 。用户需要配置代理mongo 服务器地址,本项目是写死的,在DefaultNamespace.kt中,可以根据自己的业务实现。目前仅支持mongo3.0版本
2.模拟mongo终端登录
$ ./mongo localhost:27017/geo_blocks -u "username" -p "password" --authenticationDatabase "geo_blocks" --authenticationMechanism SCRAM-SHA-1支持标准mongo驱动程序访问。默认用户名&密码:bifrost/bifrost
bifrost-kotlin 会记录操作耗时大于10ms的请求,使用Es或者OpenTsDB来实现打点监控。效果如下: