项目作者: benkris1

项目描述 :
a simple mongo proxy depend vertx3. write by kotlin lang
高级语言: Kotlin
项目地址: git://github.com/benkris1/mongo-proxy.git
创建时间: 2017-08-22T13:24:57Z
项目社区:https://github.com/benkris1/mongo-proxy

开源协议:

下载


Mongo Proxy —Bifrost-kotlin

xxx

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

  1. $ mvn clean install -Dmaven.test.skip=true
开始使用

1.首先启动bifrost服务,可以使用docker启动或者在项目中执行Bootstrap.kt。 默认占用端口为27017,可以自行更改配置信息 config.json 。用户需要配置代理mongo 服务器地址,本项目是写死的,在DefaultNamespace.kt中,可以根据自己的业务实现。目前仅支持mongo3.0版本

2.模拟mongo终端登录

  1. $ ./mongo localhost:27017/geo_blocks -u "username" -p "password" --authenticationDatabase "geo_blocks" --authenticationMechanism SCRAM-SHA-1

term

支持标准mongo驱动程序访问。默认用户名&密码:bifrost/bifrost

监控

bifrost-kotlin 会记录操作耗时大于10ms的请求,使用Es或者OpenTsDB来实现打点监控。效果如下:

term