Hunter的大杂烩 技术学习笔记

2010-10-08

LinkIn基于Dynamo设计的系统:伏地魔(voldemort)设计[转]

Filed under: 技术话题 — hunter @ 12:50 am

from:http://www.54chen.com/document/dynamo-based-systems.html

原文地址:http://project-voldemort.com/design.php

翻译:陈臻 http://www.54chen.com 我是陈科学院

版本:1.0

日期:2009-8-25

Key-Value存储

为了实现高性能和高可用性,我们只允许非常简单的键值数据存取。key和value可以是list和map的复杂类型,但美中不足的是只有以下的查询是有效的:

value = store.get(key) store.put(key, value) store.delete(key)

这可不是解决了所有的问题,其实做了许多的取舍:

缺点

没有复杂的查询过滤器

所有的联合查询必须在代码实现

没有外键的结构

没有触发器和视图

优点

只有高效的查询可用,性能是可想像的

容易分布到集群

不管怎样,面向服务常常不允许外键的结构,并且强制在代码中实现联合(因为和数据相关的key这个关系 在另一个服务中维护着)

使用关系型数据库你必须要有一个缓存层用来扩展读操作,不过这个缓存层很典型地强制你使用了key-value的存储系统

为了性能,最后不得不使用xml或者是其他不够正规的一砣文本

使逻辑和存储分离清晰(出于性能原因,SQL鼓励将商业逻辑和存储操作混在一起)

没有对象-关系数据的丢失匹配问题

数据模型的详细的讨论将在下面给出。

(more…)

对等网络中主流分布式哈希算法比较分析[转]

Filed under: 技术话题 — hunter @ 12:46 am

from:http://www.54chen.com/architecture/peer-to-peer-distributed-hash-algorithm-in-the-mainstream-of-comparative-analysis-of-the-collection.html 

本文首先从P2P的定义出发,介绍了结构化P2P与非结构化P2P的区别以及结构化P2P的核心技术DHT。而后,本文深入介绍了几种主流的DHT算法与协议并对每种协议进行了讨论。文章的最后展望了DHT在未来的发展趋势。

对 等网络(Peer-to-Peer,简称P2P)是目前非常热门的应用,自1999年以来,P2P的研究一直是国外知名学府(如美国麻省理工学院,加州大 学伯克利分校和莱斯大学等)以及知名企业的研发机构(如微软,诺基亚的研究院)关注的重点。它甚至被美国《财富》杂志称为改变因特网发展的四大新技术之 一,被认为是代表无线宽带互联网未来的关键技术。

作为一项新兴的技术,目前学术界对P2P在 技术层面上的定义尚未统一。Keith W. Ross (Polytechnic University)和Dan Rubenstein(Columbia University)在[9]中提到了对P2P系统的3个基本定义:

相比中央服务器而言有明显的自治性(Autonomy)。

利用网络边缘的资源,如存储/计算能力和信息资源。

网络边缘的资源处在动态的变化中(新的资源加入,已有的资源消失)。

自治性的要求使得P2P系统不再需要特定的中央管理机制,所有节点之间拥有对等的关系。这一方面为系统带来了自组织、容错性好、可扩展性强等优点;另一方面也提出了新的问题:如何在没有集中管理机制的情况下实现系统的自组织和自管理?

定义2,3中分布性和动态性的特点使得上述问题的实现具有更大的难度。在分布式系统中,过多过快的信息交互可能消耗大量的网络资源;而为了实时反映系统的变化,又要求节点及时获得更新信息,这就需要在节点之间进行通信。

为了解决这一对矛盾,已经有许多P2P的框架和协议被提出来并得到了很好的应用。

(more…)

人人网UGC海量存储系统Nuclear介绍 – 原理展望篇[转]

Filed under: 技术话题 — hunter @ 12:30 am

from:http://ugc.renren.com/2010/01/28/ugc-nuclear-guide-theory/

 原理篇

Nuclear系统构建于java之上,NIO组件使用Netty,数据序列化使用google的Protocol Buffers,Spring当然是用了的。下图是Nuclear系统内部的一个预览:  

Nuclear Overview

嗯……其实这张图对各位看官意义不大,只是罗列出了Nuclear中的各个组件及简单的层次关系。下面着重分析分区、节点增减、路由的原理。

分区

(more…)

Dynamo 简介

Filed under: 技术话题 — hunter @ 12:29 am

from:http://rdc.taobao.com/blog/cs/?p=52

    这个小文打算写成入门级的介绍,所以很多语言不追求准确性。本介绍参考 Amazon 的 Dynamo 论文。需要更详细更准确信息的同学请直接阅读原文。(原文地址http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf) 这篇论文本身没提出什么新的思想,正如论文中所说,贡献在于把非常多的技术结合到了一起,来完成一个系统。

    Dynamo 是个什么东东呢?他是 Amazon 公司的一个分布式 key/value 存储引擎。那么这个什么引擎又是什么?首先,假设一个场景,你的网站要存储用户登陆的ip。这个问题怎么解决呢?传统的方法是用数据库。数据库提供了方便的操作接口,复杂的查询能力以及事物的保证。多好的解决方案啊。尽管应用不需要什么复杂查询,也不需要事物。好,现在假设大家都很喜欢你的网站,访问的人越来越多。一个数据库已经处理不过来了。于是你安装了3台数据库主机,把用户分成了三类(男人,女人,it人;总是有某种方法把用户分成数目大致差不多的几个部分吧)。每次访问的时候,先看用户属于哪一类,然后直接访问存储那类用户数据的数据库。于是处理能力增加了三倍。这个时候你已经实现了一个分布式的存储引擎,Dynamo 就是一个类似的东西。只是它的可靠性,可用性等方面更好一点而已。下面我们看看那个简单的分布式存储系统有什么不方便的地方,而Dynamo是如何解决的。
    先列举一下简单的分布式系统可能存在的问题吧:
    1 很难扩容:如果现在业务发展迅速,3台主机撑不住了,需要加到5台主机,那要如何处理呢?首先要更改分类方法,把用户分成5类,然后重新迁移已经存在的数据。你要在网站上贴个条子,“系统维护中”,然后开始伟大的迁移工程,等到终于迁移完成,发现其实3台也不用了,用户都走光了。

(more…)

2010-10-07

ØMQ(ZeroMQ)简介[转]

Filed under: 技术话题 — hunter @ 9:40 pm

from : http://www.infoq.com/cn/news/2010/09/introduction-zero-mq

 

ZeroMQ网站解释:

ØMQ是网络栈中新的一层,它是个可伸缩层,分散在分布式系统间。因此,它可支持任意大的应用程序。ØMQ不是简单的点对点交互,相反,它定义了分布式系统的全局拓扑。ØMQ应用程序没有锁,可并行运行。此外,它可在多个线程、内核和主机盒之间弹性伸缩。

« Newer PostsOlder Posts »

Powered by WordPress