摘要:对于商业搜索引擎来说,分布式爬虫架构是必须采用的技术。面对海量待抓取网页,只有采取分布式架构,才有可能在较短时间内完成一轮抓取工作。 分布式爬虫可以分为若千个分布式层级。不同的应用可能由其中部分层级构成,下图是一个大型分布式爬虫的3个层级:分布式数据中心、分布式抓取服务器及分布式爬虫程序。整个爬虫...
阅读全文
随笔分类 - 分布式系统
摘要:在这篇文章里总结了几种网上或者论文中常见的MapReduce模式和算法,并系统化的解释了这些技术的不同之处。所有描述性的文字和代码都使用了标准hadoop的MapReduce模型,包括Mappers, Reduces, Combiners, Partitioners,和 sorting。如下图所示:...
阅读全文
摘要:和所有事物一样,NoSQL的兴起也是由许多理论支撑作为前提的,正是由下面一些理论的支撑,NoSQL的方向才能如此明朗。1.CAP理论CAP理论无疑是导致技术趋势由关系数据库系统向NoSQL系统转变的最重要原因。CAP(Consistency,Availability,Patition toleran...
阅读全文
摘要:Chrod算法是P2P中的四大算法之一,是有MIT(麻省理工学院)于2001年提出,其他三大算法分别是:CANPastryTapestryChord的目的是提供一种能在P2P网络快速定位资源的的算法,Cord并不关心资源是如何存储的,只是从算法层面研究资源的取得,因此Chord的API就简单到只有一...
阅读全文
摘要:本文译自Distributed Algorithms in NoSQL Databases系统的可扩展性是推动NoSQL运动发展的的主要理由,包含了分布式系统协调,故障转移,资源管理和许多其他特性。这么讲使得NoSQL听起来像是一个大筐,什么都能塞进去。尽管NoSQL运动并没有给分布式数据处理带来根...
阅读全文
摘要:当我们在生产线上用一台服务器来提供数据服务的时候,我会遇到如下的两个问题:1)一台服务器的性能不足以提供足够的能力服务于所有的网络请求。2)我们总是害怕我们的这台服务器停机,造成服务不可用或是数据丢失。于是我们不得不对我们的服务器进行扩展,加入更多的机器来分担性能上的问题,以及来解决单点故障问题。 ...
阅读全文
摘要:什么是“脑裂”现象?由于某些节点的失效,部分节点的网络连接会断开,并形成一个与原集群一样名字的集群,这种情况称为集群脑裂(split-brain)现象。这个问题非常危险,因为两个新形成的集群会同时索引和修改集群的数据。如何避免脑裂问题?避免脑裂现象,用到的一个参数是:discovery.zen.mi...
阅读全文
摘要:一、分布式系统的难点分布式系统比起单机系统存在哪些难点呢?1. 网络因素由于服务和数据分布在不同的机器上,每次交互都需要跨机器运行,这带来如下几个问题:1. 网络延迟:性能、超时同机房的网络IO还是比较块的,但是跨机房,尤其是跨IDC,网络IO就成为不可忽视的性能瓶颈了。并且,延迟不是带宽,带宽可以...
阅读全文
摘要:摘要本文将会从实际应用场景出发,介绍一致性哈希算法(Consistent Hashing)及其在分布式系统中的应用。首先本文会描述一个在日常开发中经常会遇到的问题场景,借此介绍一致性哈希算法以及这个算法如何解决此问题;接下来会对这个算法进行相对详细的描述,并讨论一些如虚拟节点等与此算法应用相关的话题...
阅读全文
摘要:一致性哈希算法,当我第一次听到这个名字的时候,感觉特别高深。而它往往会和分布式系统相关,准确的说,是分布式缓存。在Web服务中,缓存是介于数据库和服务端程序之间的一个东西。在网站的业务还不是很大的时候,一般不会需要这个东西,每次都可以从数据库中查询获得数据,但是随着网站的访问量增大,每次请求都访问数...
阅读全文
摘要:1,什么是Paxos算法?Paxos算法是分布式计算领域中一个非常重要的算法,主要解决分布式系统如何就某个值(决议)达成一致的问题。一个典型的场景是分布式数据库的一致问题:如果分布式数据库的各个节点初始状态一致,又能执行相同的操作序列,那么最后能达到一个一致的状态。但是如何保证在每个节点上执行相同的...
阅读全文
摘要:互联网创业中大部分人都是草根创业,这个时候没有强劲的服务器,也没有钱去买很昂贵的海量数据库。在这样严峻的条件下,一批又一批的创业者从创业中获得成功,这个和当前的开源技术、海量数据架构有着必不可分的关系。比如我们使用mysql、nginx等开源软件,通过架构和低成本服务器也可以搭建千万级用户访问量的系...
阅读全文
摘要:Chrod算法是P2P中的四大算法之一,是有MIT(麻省理工学院)于2001年提出,其他三大算法分别是:CANPastryTapestryChord的目的是提供一种能在P2P网络快速定位资源的的算法,Cord并不关心资源是如何存储的,只是从算法层面研究资源的取得,因此Chord的API就简单到只有一...
阅读全文
摘要:ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。Zookeeper是hadoop的一个子项目,其发展历程无需赘述。在分布式应用中,由于工程师不能很好地使用锁机制,以及基于消息的协调机制不适合在某些...
阅读全文