2018年(273)
分类: 大数据
2018-06-26 15:25:47
滴,滴滴……为什么是这么一个开头,刷抖音的都懂,有段时间开着车在路上,一堆抖友按喇叭让你接暗号,尴了个尬,那这个和今天聊的话题有什么关系?告诉你,毛关系都没有。哈哈哈哈哈打不过我吧,没有办法我就是这么强大,哈哈哈哈哈追不上我吧,啦啦啦啦啦啦啦啦啦啦啦
不调皮了,每天撸代码也挺累的,刷会抖音放送下也正常,那么今天要聊的话题,和这个抖音有关系么,还是真的毛关系都没有,非要说有点关系,就是一个“抖”字,英文名:shake。有文化还是可以zhuangbility的,哈哈哈。
今天的主角叫MongoShake,我们开发小哥哥第一次和我说这个名字的时候,我以为他去那灯红酒绿之所太多,取名字都是夜店风了,结果下一秒就是我被啪啪啪打脸了,这个shake可不是抖音的抖,也不是夜店的抖,这个shake可厉害了,我们一起来看看:
MongoShake是一个以golang语言进行编写的通用的平台型服务,通过读取MongoDB集群的Oplog操作日志,对的数据进行复制,后续通过操作日志实现特定需求。日志可以提供很多场景化的应用,为此,我们在设计时就考虑了把MongoShake做成通用的平台型服务。通过操作日志,我们提供日志数据订阅消费PUB/SUB功能,可通过SDK、Kafka、MetaQ等方式灵活对接以适应不同场景(如日志订阅、数据中心同步、Cache异步淘汰等)。集群数据同步是其中核心应用场景,通过抓取oplog后进行回放达到同步目的,实现灾备和多活的业务场景。
MongoShake的应用场景大致有这几种:
1.MongoDB集群间数据的异步复制,免去业务双写开销。
2.MongoDB集群间数据的镜像备份(当前1.0开源版本支持受限)
3.日志离线分析
4.日志订阅
5.数据路由。根据业务需求,结合日志订阅和过滤机制,可以获取关注的数据,达到数据路由的功能。
6.Cache同步。日志分析的结果,知道哪些Cache可以被淘汰,哪些Cache可以进行预加载,反向推动Cache的更新
7.基于日志的集群监控