MapReduce和online实时访问共存的一种架构——MongoDB

     这两天阅读有关MongoDB的技术文章,也一直在思考一个问题。使用MongoDB的MapReduce在做数据的统计运算时,如何不影响MongoDB提供的实时访问服务。结合HBase的使用经验,谈谈自己的体会。

     这段时间,我一直思考并打算使用MongoDB替换MySQL,存储社区的相关数据,提供实时的数据查询服务。除此之外,MongoDB还支持MapReduce计算模型和GridFS分布式文件系统。那么就问自己:除了让MongoDB提供实时的数据查询服务,能不能同时担当数据的统计、分析工作,这是MapReduce的强项。

     在淘宝做产品搜的项目的时候(hbase),由于其他原因,ops当时临时拼凑了45台服务器,搭建产品搜的离线运算集群。这45台机器和淘宝的主搜索(宝贝搜索)在一个机房内,并且分散在不同交换机下,导致在做运算的时候,挤占了大量带宽,致使主搜索丢弃了大量用户请求。MongoDB同时担当两种角色,服务器的网络拓扑结构就更显得重要。

     假设存在MongoDB里的数据可以有3份拷贝,那么我们可以让两份数据放在一个机柜(机柜A)下面,第三份数据放在另一个机柜(机柜B)下,这样机柜B也有一份完整的数据。master优先选择机柜A的两份数据,机柜A提供实时数据访问服务,机柜B提供MapReduce数据统计、分析服务。这样两边的网络流量就互不影响了。

     这样的架构还有一个好处,就是当一个机柜坏掉的时候,还有另一个机柜有完整的数据。

     这是一个基本模型,多个机柜的情况下,可以按此逻辑扩展。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值