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

原创 2011年01月14日 10:18:00

     这两天阅读有关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数据统计、分析服务。这样两边的网络流量就互不影响了。

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

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

相关文章推荐

一种高可用性、高性能、高实时性的服务器架构设计

http://blog.csdn.net/romandion/article/details/1688271 【主要从期货市场的需求获取灵感】 一、需求 (一)、高可用性 1、持续运行无间...
  • cjsycyl
  • cjsycyl
  • 2013年03月19日 15:47
  • 1212

30分钟学MongoDB系列 ——MapReduce处理和Mongo管理工具使用

MapReduce Online(Doc)版一

  • 2013年07月04日 09:51
  • 679KB
  • 下载

“嵌入式实时系统的DSP软件开发——多核架构”Notes

本文以典型的视频应用为例解释了在嵌入式多核DSP平台上的实时软件开发,分析了针对典型视频应用的SOC在信号处理能力、功耗、性能、实时性,可扩展性、硬件加速协处理器等方面的特性。然后针对一个典型的视频应...
  • yuyin86
  • yuyin86
  • 2012年05月07日 13:38
  • 909

Android 解决ListView 和 ScrollView 共存冲突的问题(另一种解决方案)

ListView 与 ScrollView 同在一个界面用头脑想想都觉得不大可能这样做,但还真的有美工这样做了,有点郁闷~!!沟通无果,解决之~~~~!初期还真没啥头绪,Google 一下看到有很多同...

C#中两个listBox双击与拖放共存的一种实现【转】

引言:    今天做前台C#的同事,纠结在了,“拖拽事件使用的listBox1_MouseDown(s, e)会‘屏蔽掉’双击事件的使用的listBox1_DoubleClick”,这一问题上。查证...
  • longcsy
  • longcsy
  • 2012年08月31日 18:38
  • 443

MongoDB架构——sharding分片

这是一种将海量数据水平扩展的数据库集群系统,数据分表存储在sharding各个节点上,用户通过简单的配置可以完成一个分布式MongoDB集群。MongoDB的数据分块称为chunk,每个chunk都是...

MongoDB(四)——管理架构

前边介绍了MongoDB的基础,这里推荐两个网站,大家可以查看一下,讲解的还是比较详细的:http://www.w3cschool.cc/mongodb/mongodb-tutorial.html,h...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MapReduce和online实时访问共存的一种架构——MongoDB
举报原因:
原因补充:

(最多只允许输入30个字)