mongo-kafka: mongodb 数据到kafka的实时传输

    mongodb 作为文档型的NoSQL数据库,性能较传统的关系型数据库有较大提升,而且可以利用其自带的capped collection 来实现消息队列的功能,但是sharding方式是不支持capped collection的,来新公司刚接触mongo, 公司这边的运行状态大概有两种,一种是master-slave的方式,另外一种是sharding+replication方式,由于相当的数据都存储在mongo上面,但是同时有很多离线数据需要去mongo拉取数据,针对公司业务,准备实现mongo-kafka的数据传输功能,主要为了实时的数据流计算, 数据从mongo迁移到kafka 可以降低对mongo的数据依赖, 另外kafka的读取性能要高很多。

    从mongo 拉取数据,主要利用了mongo 的oplog 来实现, 其中oplog的op字段有i/u/d等,o/o2表示操作的内容, 当op为u的时候才有o2,表示修改的内容。当mongo工作方式为master-slave的方式时,可以直接利用local数据库的oplog来实现,当为sharding+replication的方式时,需要去admin数据库获取sharding 的信息, 然后去每个分片下面去获取相关的oplog。

   相关的代码: mongo-kakfa  

你可能感兴趣的:(学习,工作)