Hunter的大杂烩 技术学习笔记

2010-10-27

系统优化节奏

Filed under: 技术话题 — hunter @ 11:36 pm

按1-5步骤逐渐深入,每个步骤内部又按由易到难逐步深入,两者结合,把握好优化的

节奏和时间点

1. 动静分离
    a. nginx/反向代理
    b. 资源长期cache化
    c. 数据静态化
    d. 资源分摊到多个子域名
    e. 前端渲染速度优化、SEO
    f. 动静独立域名
    g. 静态数据多机房分布

(more…)

2010-10-10

五分钟法则(five minute rules)[转]

Filed under: 技术话题 — hunter @ 2:37 pm

from: http://blog.csdn.net/pennyliang/archive/2010/09/24/5903181.aspx

 1987年,Jim Gray和Gianfranco Putzolu推出了著名的5分钟法则[Gray 1987],他们通过内存,硬盘的性能以及当时的成本,给出了这样的公式:BreakEvenIntervalinSeconds =

(PagesPerMBofRAM /AccessesPerSecondPerDisk) × (PricePerDiskDrive /PricePerMBofRAM)。并由该公式得到了5分钟左右的近似值,因此做出这样的判断,如果一个数据的访问周期在5分钟以内则存放在内存中,否则应该存放在硬盘中。其中:

PagesPerMBofRAM:表示内存每兆字节的Page数,如果page size = 4KB,则该值为1MB/(4KB/page) = 256 page/MB。

AccessesPerSecondPerDisk:每块磁盘每秒支持的最大IO请求数,如下表所示为250Page/(Second*Disk)。

(PagesPerMBofRAM /AccessesPerSecondPerDisk):表示1兆的空间通过磁盘访问的方式所需要的秒数。256/200 = 1.25(Second*Disk)/MB,表示1兆字节需要1.25个盘秒来完成(类似工作任务按人月来做单位)。

PricePerDiskDrive:表示一块磁盘的成本,如下表所示为48$/disk。

PricePerMBofRAM:表示每兆内存的代价,如下表所示为50$/(2048)=0.024$/MB。

PricePerDiskDrive/ PricePerMBofRAM:表示用来买磁盘的钱可以买多少兆内存。48/0.024=2000MB /disk。

(PagesPerMBofRAM /AccessesPerSecondPerDisk)* (PricePerDiskDrive/ PricePerMBofRAM):表示用磁盘读取的耗费时间界限,2000MB *1.25=2500second,合41min。如果一条数据的访问周期低于41分钟,则应该放在内存中,否则应该放在磁盘中。

对于这个公式我们可以这样理解。

(more…)

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…)

Older Posts »

Powered by WordPress