二楞子's profile疯癫二楞子PhotosBlogListsMore Tools Help

Blog


    IP地址子网掩码位数换算方法

    记得之前很长一段时间都不会算这玩意儿,很实用的文章,备用。多给自己出点题,多算2次就OK了。

    IP地址子网掩码:
    子网位    /主机位         子网掩码           子网最大数       /主机最大数
    2         /22         /10 | 255.192.0.0           2           /4194302
    3         /21         /11 | 255.224.0.0           6           /2097150
    4         /20         /12 | 255.240.0.0           14          /1048574
    5         /19         /13 | 255.248.0.0           30          /524286
    6         /18         /14 | 255.252.0.0           62          /262142
    7         /17         /15 | 255.254.0.0           126         /131070
    8         /16         /16 | 255.255.0.0           254         /65536
    9         /15         /17 | 255.255.128.0         510         /32766
    10        /14         /18 | 255.255.192.0         1022        /16382
    11        /13         /19 | 255.255.224.0         2046        /8190
    12        /12         /20 | 255.255.240.0         4094        /4094
    13        /11         /21 | 255.255.248.0         8190        /2046
    14        /10         /22 | 255.255.252.0         16382       /1022
    15        /9          /23 | 255.255.254.0         32766       /510
    16        /8          /24 | 255.255.255.0         65536       /254
    17        /7          /25 | 255.255.255.128       131070      /126
    18        /6          /26 | 255.255.255.192       262142      /62
    19        /5          /27 | 255.255.255.224       524286      /30
    20        /4          /28 | 255.255.255.240       1048574     /14
    21        /3          /29 | 255.255.255.248       2097150     /6
    22        /2          /30 | 255.255.255.252       4194302     /2

    子网掩码的快速算法     

    大家都应该知道2的0次方到10次方是多少把?也给大家说一下,分别是:
      1 2 4 8 16 32 64 128 256 512 1024。
      如果你希望每个子网中只有5个ip地址可以给机器用,那么你就最少需要准备给每个子网7个ip地址,因为需要加上两头的不可用的网络和广播ip,所以你需要选比7多的最近的那位,也就是8,就是说选每个子网8个ip。好,到这一步,你就可以算掩码了,这个方法就是:最后一位掩码就是256减去你每个子网所需要的ip地址的数量,那么这个例子就是256-8=248,那么算出这个,你就可以知道那些ip是不能用的了,看:0-7,8-15,16-23,24-31依此类推,写在上面的0、7、8、15、16、23、24、31(依此类推)都是不能用的,你应该用某两个数字之间的IP,那个就是一个子网可用的IP,怎么了?是不是不相信?太简单了。
      我再试验一下,就拿200台机器分成4个子网来做例子吧。
      200台机器,4个子网,那么就是每个子网50台机器,设定为192.168.10.0,C类的IP,大子网掩码应为255.255.255.0,对巴,但是我们要分子网,所以按照上面的,我们用32个IP一个子网内不够,应该每个子网用64个IP(其中 62位可用,足够了吧),然后用我的办法:子网掩码应该是256-64=192,那么总的子网掩码应该为:255.255.255.192。不相信?算算:0-63,64-127,128-191,192-255,这样你就可以把四个区域分别设定到四个子网的机器上了,是不是很简单?不需要软件算了吧。

    /24就是255.255.255.0~子网掩码哦。

    一个10进制的255~就是2进制的8个1

    三个255.255.255`就是24个1~所以写24

    比如我ip是:218.77.26.114/255.255.255.192应该怎么换算成缩略子网掩码方式 

    255.255.255.192 换算成二进制:
    11111111.11111111.11111111.11000000

    前三组都是8bit, 第四组 192 -> 11000000 表示2bit (左起11) 用做subnet(子网)
    那末这个子网掩码中共有8+8+8+2 = 26 bit 是用作网络标识。

    结果:
    218.77.26.144/255.255.255.192 => 218.77.26.144/26

    HA-http 配置、测试通过(存档自留)

    HA-http 测试

    2台HP585
    第一块网卡接交换机,第二块网卡为直连
    ha:192.168.1.70
    ha-1:
    eth0:192.168.1.71
    eth1:10.25.0.1
    ha-2:
    eth0:192.168.1.72
    eth1:10.25.0.2

    环境:
    RH4.6
    ipvsadm-1.24.tar.gz
    libnet.tar                           下载地址:http://www.packetfactory.net/libnet/  稳定版本是:1.1.2.1
    e2fsprogs                            4.6系统自带
    heartbeat-2.0.2.tar.gz   http://linux-ha.org/download/heartbeat-2.0.2.tar.gz

    配置过程:
    make install完3个包之后
    cp ha.cf haresources authkeys /etc/ha.d/
    cp /contrib/ipfail /usr/lib/heartbeat/
    groupadd -g 694 haclient
    useradd -u 694 -g haclient hacluster

    主要配置文件
    vi /etc/hosts
    vi /etc/sysconfig/network
    vi /var/www/html/index.html
    vi /etc/ha.d/ha.cf
    vi /etc/ha.d/haresources
    vi /etc/ha.d/authkeys
    开始:

    vi /etc/hosts
    127.0.0.1       localhost.localdomain   localhost
    192.168.1.71    HA-1
    192.168.1.72    HA-2

    vi /etc/sysconfig/network
    NETWORKING=yes
    HOSTNAME=HA-1(2)

    vi /var/www/html/index.html

    vi /etc/ha.d/ha.cf
    logfile /var/log/ha-log
    logfacility     local0
    keepalive 2
    deadtime 30
    warntime 10
    initdead 120
    udpport 694
    baud    19200
    serial  /dev/ttyS0      # Linux
    bcast   eth1            # Linux
    mcast eth0 225.0.0.1 694 1 0
    auto_failback on
    node    HA-1
    node    HA-2
    ping_group group1 192.168.1.71 192.168.1.72
    respawn root /usr/lib/heartbeat/ipfail
    apiauth ipfail gid=root uid=root
    (ha.cf里面都有很详细的注释,也可以只要以上信息)

    vi /etc/ha.d/haresources
    HA-1 IPaddr::192.168.1.70/24/eth0 httpd

    vi /etc/ha.d/authkeys
    auth 1
    1 crc
    #2 sha1 HI!
    #3 md5 Hello!

    chmod 600 /etc/ha.dauthkeys  

    2台服务器配置保持一致

    /etc/init.d/heartbeat start
    如果成功启动:
    Starting High-Availability services:
    [  OK  ]
    否则会给出错误信息。依照着找错误便OK了。
    RH4.6自带apache。
    将heartbeat服务加入自启动。
    将配置文件复制到第二台服务器,并启动服务。

    然后访问:http://192.168.1.70,等到网页,内容显示的是192.168.1.71/var/www/html/index.html下面的内容,
    网卡显示:
    eth0:0    Link encap:Ethernet  HWaddr 00:16:35:7C:72:8B 
              inet addr:192.168.1.70  Bcast:192.168.1.255  Mask:255.255.255.0
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              Interrupt:201
    poweroff掉192.168.1.71,刷新网页,内容显示的是192.168.1.72/var/www/html/index.html下面的内容,
    网卡显示:
    eth0:0    Link encap:Ethernet  HWaddr 00:16:35:7C:83:C3 
              inet addr:192.168.1.70  Bcast:192.168.1.255  Mask:255.255.255.0
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              Interrupt:201          
    重新启动192.168.1.71,服务器启动之后刷新网页,apache切回192.168.1.71/var/www/html/index.html下面的内容。
    Ha配置、测试完毕。

    3.15值班

    值班很痛苦。。。

    传统行业筹备ing。。。

    psp的java模拟器 pspkvm v0.0.9 发布 支持3.XX核心

    今天在电脑里乱点,发现自己还有一堆java电子书没看,咋办呢?不可能抢老婆的多普达吧,自己的黑莓又没刷,clie又没卡,嘿嘿,只有小P了,搜了一阵子,发现去年就有人开始发布PSP平台上面的java模拟器了,OK,终于找到了一个,pspkvm v0.0.9,自己刚好又刷了3.8M33-5的系统,down下来开整。(不错,一堆没看的书找到出路了。呵呵,happying)

    ############################################

    原文http://www.pspkvm.cn/
    下载地址: http://www.pspkvm.com-a.googlepages.com/PSPKVM_v0.0.9.zip

    这是一个在PSP上运行j2me程序的虚拟机。
    安装方法:
    把Zip包中的“PSPKVM”目录拷贝到记忆棒中的/PSP/GAME目录下。
    使用方法:
    启动PSPKVM,在文件浏览界面中选择一个.jar文件,按圈键开始运行。
    默认模拟的手机(屏幕大小和键值)是索爱K800i,你也可以在文件浏览界面下按三角键调出手机型号选择菜单选择其他的手机,比如Nokia S60、Motolora Triplets等等,这些设备的区别主要是屏幕大小和键值不一样。
    当PSPKVM下一次启动的时候,将会默认选择你最后选中的手机型号。


    按键设置(PSP->手机):
    Up              -> NUM2
    Left            -> NUM4
    Right           -> NUM6
    Down            -> NUM8
    AnalogStick     -> D-pad(上下左右导航键)
    Cross           -> NUM0
    Square          -> NUM1
    Triangle        -> NUM3
    Circle          -> NUM5
    L+Square        -> NUM7
    L+Triangle      -> NUM9
    L+Circle        -> SELECT(确认键)
    L+Cross         -> CLEAR(删除键/后退键)
    SELECT          -> L-Soft(左软键)
    START           -> R-Soft(右软键)
    L               -> *
    R               -> #
    L+R+Cross       -> Red-key(红键,可以快速终止当前java程序)

    支持的API:
    midp2.0
    nokia UI(部分实现)
    WMA2.0(JSR205, 无功能)
    计划支持的API:
    nokia UI
    M3G(JSR184)
    Bug报告和建议:
    pspkvm@gmail.com
    版本历史:
    2008-02-09 20:19 v0.0.9
        支持3.XX核心的PSP,在我的PSP-1000 3.71m33和3.90m33上测试过:)。
        增加了WMA2.0/1.1API, 很多需要发短信功能支持的中文游戏可以运行了,以前大部分不用运行的中文游戏是因为这个原因。
        增加了对"String Midlet.getAppProperty(String key)"函数调用的响应, 可以运行《苍神录》了。
        增加了对command bar的支持。
        增加了重启时自动选择上次手机型号的功能,感谢Shawn Winnie提出的建议。
        增加了一个按键"L+Cross -> CLEAR", 感谢Jörg Westphal的建议。
        禁用了一些不必要的java异常。
        修正了一个内存溢出的bug。
        修正了一个部分图片透明色显示不正确的bug,感谢asenchai的报告。
        修正了部分特殊字符显示不正确的bug,感谢SOUDAN Gael的报告。
        修正了有时“确定”键不响应的bug,感谢Anton Buckov的报告。
    2008-01-07 00:37 v0.0.8 修正了一些导致部分游戏不能运行的bug。
    2008-01-04 20:04 v0.0.7 修正了一个白屏的bug,增加一个新按键"SELECT"。
    2008-01-03 01:04 v0.0.6 增加了选择手机型号的功能。
    2008-01-02 00:20 v0.0.5 修正了一些bug。
    2007-12-31 23:50 v0.0.4 修正了两个严重bug。
    2007-12-31 00:14 v0.0.3 修正了一个严重bug,进行了部分优化。
    2007-12-23 01:48 v0.0.2 修正了一些bug。
    2007-12-10 00:42 v0.0.1 第一个版本放出。

    ############################################

    测试通过,运行正常,只是屏幕还没有全屏幕的:(可惜了。

    QQ2009preview小用

        今天找了一下最新版本的QQ,因为昨天有人在某个群里炫了一把QQ2009,所以目标十分明确,直接google,马上便有N多下载点,随便down了一下下来,qq2009preview_chs.exe(在IT168的迅雷下载链接),下载下来了只有6.69M了,貌似比以前的很多版本都要小,难怪还是preview版。直接setup,一路下来,安装也多快的,文件夹下面看到少了很多东西,OK,废话不说,直接启动,自己的号是会员,能直接登录,老婆的号不是会员,也没申请啥,也直接登录,昏,看来是RP爆发了(N多同事和同学都没法登陆)。

        呵呵,发现QQ2009越来越像MSN了,不管功能还是界面,连以前保存每个帐号的目录也由他程序的根目录变到现在我的文档下面的QQ Files目录下了,这个好得多了呢,不但减少了程序目录的大小(贴的图太多了),还可以控制很多东西呢,2009的preview版本现在看来好像没有其他游戏和其他很多扩展功能,设置和界面也挺清爽的。就不贴图上来了,网上N堆,自己瞅吧:)大家自己琢磨吧,都是N年的Q人了。

        转给无法登陆的朋友:(同事测试通过)

    办法如下:

    1.下载QQ2009 Preview

    官方下载地址:简体中文版本
    官方下载地址:繁体中文版本

    2.再下载Bin.rar,该压缩包里包含2个文件(62.4 KB ),均是从官方TM2008 Preview4.提取,网上说还要安装TM2008 Preview4,完全没必要,只需这2个文件即可!

    官方下载地址:Bin.rar简体中文版本
    官方下载地址:Bin.rar繁体中文版本

    3.安装QQ2009 Preview版,然后解压Bin.rar,把里面的vi.dat和QQ.exe复制到QQ2009\Bin目录下,然后用QQ.exe登陆即可...

    说明:QQ2007II 正式版接下来正式对外的是QQ2008系列的版本。最新的QQ2008 贺岁版预计是在1月底左右发布,和QQ2009 Preview的发布并没有什么直接关联。
    QQ2009 Preview是QQ2008系列版本之后的一个技术预览版本,目前仅仅提供了部分功能的预览,限量邀请部分用户参与内部测试。我们会在后续QQ2009的多个技术预览版中不断完善相关功能,并持续小范围的邀请用户参与内测。

    水煮三国--实现有效授权的九大障碍

    障碍一:不信任员工

      作为一位管理者,很多时候您会装出一副很信任部属的样子。然而,很多事实证明您放心不下。在具体的工作中,您没法不去过问您的部属是如何开展工作的,甚至把一些关键的环节留给自己亲自操作。您在自己的心里打了个很大的问号,您的部属会像你一样尽职尽责吗?

      也许,您的担心是有原因的,有些员工的工作绩效总是不能做得像你预期的那样好。然而,一味地批评抱怨又有什么用呢?如果您怀疑员工的人品,您应该问问自己,是不是因为您没有通过信任来激励他们;如果您怀疑员工的工作能力,您应该也问问自己,有没有对他们进行必要的培训或给他们锻炼的机会?总而言之,您应该反复寻找失利的原因,然后和大家一起探索提升业绩的办法。事实就是这样简单,通过您的信任、鼓励和培养,您的部属终将会成长为一个真正值得您信赖的人。

      障碍二:害怕失去对任务的控制

      很多管理者之所以对授权特别敏感,是因为害怕失去对任务的控制。一旦失控,后果很可能就无法预料了。问题是:难道您非得把任务控制在自己手中吗?可不可以通过合适的手段避免任务失控呢?

      只要您能够保持沟通与协调的顺畅,采用类似“关键会议制度”、“书面汇报制度”、“管理者述职”等手段,强化信息流通的效率与效果,任务在完成的过程中,失控的可能性其实是很小的。同时,在安排任务的时候,您应该尽可能地把问题、目标、资源等,向部属交代清楚,也有助于避免任务失控。

      另外,管理者和员工也很容易在解决问题的方法上产生分歧。由于您相信自己的经验,您甚至会强迫部属执行您的意见,致使部属不愿意对任务负责。其实条条大路通罗马,问题的关键不是方法,而是结果。一些具体的处理细节,您完全可以授权给自己的部属来全权处理。也许,在此过程中,您的下属能够创造出比您的经验更科学、更出色的解决办法呢!

      障碍三:过高强调自己在组织中的重要性

      由于您很能干,在很多时候您会产生“什么事情离了我不行”的错觉。是的,也许您能够成功地完成许多任务,但您得像孙悟空一样分身有术才行。

      其实,你的下属就是你手里拥有的最大的财富,他们帮你把产品卖掉,帮你和经销商讨价还价,帮你与消费者做沟通……在具体的业务内容和常规工作程序方面,他们中的一些人甚至具有比你还要丰富的经验,这么好的资源,你为什么不去好好利用呢?即使看在钱的份儿上,你也该让他们的能力得到更充分的发挥啊。

      障碍四:以为自己可以做得比别人好

      有些管理者宁可自己做得那么辛苦,也不愿意把工作内容给部下。为什么呢?他们认为,教会部下怎么做,得花上好几个小时;自己做的话,不到半小时就做好

      了—有那个闲工夫教他们,还不如自己做更爽快些。

      问题是:难道您就这样一直把所有的事情都自己做吗?尽管现在您自己亲自动手可以做得比别人好,但是您如果能够教会您的员工,您会发现,其实别人也可以做得和您一样好,甚至更好。也许今天您要耽误几个小时来教他们干活,但以后他们会为您节省几十、几百个小时,让您有空做更多的更深入的思考,以促成您在事业上的更大发展。

      障碍五:害怕削弱自己在组织中的地位

      这是许多管理者非常害怕的一件事情:如果把自己的权力授予别人的话,会不会因此影响自己对于组织的重要性,从而削弱自己在组织中的地位呢?

      答案显然是否定的。如果您能够让您的部下能够更加积极、主动地处理问题,您就能充分发挥团队的力量,将任务完成得更多、更快、更好,从而使自己的地位有机会得到进一步的巩固或提升。您将得到一个更有效率的工作团队,并且能够把精力集中在那些值得您全心投入的事情上。

      障碍六:喜欢与部下争功

      作为一名管理者,您在很多时候需要扮演“幕后支持者和策划者”的角色,您将很少有机会像从前一样,站在前台接受观众的欢呼。所以,关羽可以过五关斩六将,张飞可以吼断霸王桥,而您只能独自忍受幕后的寂寞。可是您想过没有,正是因为您能够忍受寂寞,关羽、张飞才有勇冠千军的英雄壮举。

      曾经有一位业务员,非常能干,推销能力很强,曾经在公司连续四年被评为“金牌销售员”。后来,他当了区域销售经理,走上了管理岗位。很快,他与部属之间的冲突也随之而起。为了蝉联“金牌销售员”的荣誉称号,他不仅无法积极地向部属提供帮助,反而抢他们的单。于是,他的员工们只好纷纷离开了他,另寻出路。喜欢与部下争功的管理者,等待他的将是众叛亲离的悲惨结局。

      障碍七:认为授权会降低灵活性

      对于一件事而言,事必躬亲确实有利于掌握处理问题的灵活性。可是,对于日理万机的总经理而言,毕竟不可能在同一时间做好几件事情。如果强迫自己面面俱到,就很有些勉为其难了。

      然而,通过授权把具体的工作分派出去,让自己从一个更高的层面来统帅全局,思路往往会更加灵活,同时也有更多的时间和精力来处理那些棘手的问题和突发性的事件。

      障碍八:害怕影响员工的正常工作

      也许您会认为,员工们连现有的工作都做不好,怎么可能承担更大的责任呢?乍一听起来,您似乎是位体恤下情的好领导,但不会有人感激您。俗话说:“强将手下无弱兵。”如果您的员工在工作能力上乏善可陈,问题很可能就出在您的身上。

      在自然界,老鹰会把自己的孩子逼向悬崖,以迫使胆怯的雏鹰学会飞行。您也应该问问自己,是不是由于您的这种“体恤”,让公司养了一群永远也张不开翅膀的雏鹰?

      很多优秀员工的流失不是因为您的“体恤”,而是因为没有足够的施展才能的机会。他们不希望自己变成对工作满不在乎的懒人。他们和您一样,渴望接受挑战、面对挑战、战胜挑战、获得成功—但是,如果你不授权的话,他们怎么有机会实现理想呢?

      障碍九:他们不了解公司的发展规划

      他们为什么不了解公司的发展规划呢?因为您没有告诉他们,更谈不上去赢得他们的深刻认同。

      有一些管理者,出于某种可笑的目的,故意把信息管理搞得神神秘秘,以致无法在公司内实现正常的信息传递与分享,甚至连一些重要的信息都不告诉自己的员工。也许,他会觉得,只有这样才能树立管理者的权威,牵着员工们的鼻子走。事实上这些信息对于员工们顺利展开工作十分重要,所以,他的目的往往能够得逞。

      但是,如果您的员工无法分享公司的发展规划,他们怎么会关心公司的未来呢?公司的发展远景有赖于所有人的努力,特别是那些在其工作领域内堪称专家的员工,更是能为公司实现远景目标铺就道路。您怎么能够把他们和公司的远景规划分开呢?

    水煮三国--治人者如何致人--论管理的游戏规则

         1.管理就是一场控制性的游戏,如果你足够聪明你就会赢,否则就只能听天由命。

      2.为了在游戏中尽可能地胜出,你应该首先设计好游戏的规则—一套完整的职场规则,包括职务权限、员工行为规范,以及“胡萝卜+大棒”式的奖惩制度。

      3.在游戏面前,您只有两种选择:或者,你确信自己能够赢,于是你投入足够多的能量来赢得一切;或者,你不进行这个游戏。

      4.如果你只是希望而并非确信,那么,在这场游戏中你是否能赢的决定权就不在你的手中。一颗不安定的心会阻止你按决定行动,从而使决定是否获胜的大权旁落。

      5.因为每一个参与游戏的人都是你生活中的一部分,如果你能够控制自己,你就能战胜所有人。

      6.很多时候你可以发现,为了自己能赢,最好的办法是和别人联合起来共赢。奇怪的是,在一场共赢游戏中总有人会输。如果你聪明,那个输的人就不是你。

      7.你是所有人的对手,你或者被利用或者被清除;所有人也都是你的对手,有些人须要利用,有些人须要清除。

      8.所有参与游戏的人都在捕捉别人的弱点,并设法加以利用。为此,你必须信念坚定,充满警觉。

      9.因为足够聪明而故意表现出某种弱点(例如装糊涂)是一种聪明的办法,这样就能让你的对手松懈下来。

      10.为了赢得一场控制性的游戏,你应该学会利用情感。你的情感能够打动别人,也能被对手利用。

      11.所谓做人其实就是如何跟对手打交道。你就是你自己最大的对手。

      12.在管理工作中,不要作茧自缚地受困于某种游戏规则。所有的规则都是为了顺利地赢得游戏,请善加利用这些规则。

         13.每个人都在管理自己的生活,所以人与人的关系是互动的,谁都会受到别人某种形式的控制。

    作者评说:

    管理是一种控制性的游戏,管理也因此常常有背离社会伦理的危险。故而,实效的管理学往往会舍弃世俗的道德观。中国古代有“正人用邪法,而邪法亦正”的煌煌论述,西人马丁·路德亦有“为了完成最高道德,可以不择手段”的千古名言。

      马基雅弗利(Niccol* Machiavelli)是实效管理学的代表人物,他在那本著名的《君主论》中,写下了许多惊世骇俗的言论:

         ·一个称职的君主(领导者),必须拥有狮子般的威严、狐狸般的狡诈。

      ·只拥有世俗美德的君主(领导者),常常会因为过分在意世俗美德,从而丧失管理上的有效控制,从而导致国家(组织)的毁灭。

      ·只要结果对正义的达成有必要,任何违犯世俗美德的“罪行”都是被允许的。

      ·做君主(领导者)的,要懂得如何牺牲别人。

      在一个组织中,领导者身负组织存亡兴衰的重责,所以他的眼光必须超越世俗美德的束缚,要为善,更要能够为达成善的目标而为“恶”。

      一将功成万骨枯,你可能会因此而背上许多骂名。可是,如果你连承受骂名的勇气都没有,你又靠什么力量去保证管理的实效和目标的达成?

    YouTube架构学习

    YouTube发展迅速,每天超过1亿的视频点击量,但只有很少人在维护站点和确保伸缩性。
    平台
    Apache
    Python
    Linux(SuSe)
    MySQL
    psyco,一个动态的Python到C的编译器
    lighttpd代替Apache做视频查看
    状态
    支持每天超过1亿的视频点击量
    成立于2005年2月
    于2006年3月达到每天3千万的视频点击量
    于2006年7月达到每天1亿的视频点击量
    2个系统管理员,2个伸缩性软件架构师
    2个软件开发工程师,2个网络工程师,1个DBA
    处理飞速增长的流量
    代码

      while (true)       {         identify_and_fix_bottlenecks();        drink();         sleep();         notice_new_bottleneck();      


    每天运行该循环多次
    Web服务器
    1,NetScaler用于负载均衡和静态内容缓存
    2,使用mod_fast_cgi运行Apache
    3,使用一个Python应用服务器来处理请求的路由
    4,应用服务器与多个数据库和其他信息源交互来获取数据和格式化html页面
    5,一般可以通过添加更多的机器来在Web层提高伸缩性
    6,Python的Web层代码通常不是性能瓶颈,大部分时间阻塞在RPC
    7,Python允许快速而灵活的开发和部署
    8,通常每个页面服务少于100毫秒的时间
    9,使用psyco(一个类似于JIT编译器的动态的Python到C的编译器)来优化内部循环
    10,对于像加密等密集型CPU活动,使用C扩展
    11,对于一些开销昂贵的块使用预先生成并缓存的html
    12,数据库里使用行级缓存
    13,缓存完整的Python对象
    14,有些数据被计算出来并发送给各个程序,所以这些值缓存在本地内存中。这是个使用不当的策略。应用服务器里最快的缓存将预先计算的值发送给所有服务器也花不了多少时间。只需弄一个代理来监听更改,预计算,然后发送。
    视频服务
    1,花费包括带宽,硬件和能源消耗
    2,每个视频由一个迷你集群来host,每个视频被超过一台机器持有
    3,使用一个集群意味着:
    -更多的硬盘来持有内容意味着更快的速度
    -failover。如果一台机器出故障了,另外的机器可以继续服务
    -在线备份
    4,使用lighttpd作为Web服务器来提供视频服务:
    -Apache开销太大
    -使用epoll来等待多个fds
    -从单进程配置转变为多进程配置来处理更多的连接
    5,大部分流行的内容移到CDN:
    -CDN在多个地方备份内容,这样内容离用户更近的机会就会更高
    -CDN机器经常内存不足,因为内容太流行以致很少有内容进出内存的颠簸
    6,不太流行的内容(每天1-20浏览次数)在许多colo站点使用YouTube服务器
    -长尾效应。一个视频可以有多个播放,但是许多视频正在播放。随机硬盘块被访问
    -在这种情况下缓存不会很好,所以花钱在更多的缓存上可能没太大意义。
    -调节RAID控制并注意其他低级问题
    -调节每台机器上的内存,不要太多也不要太少
    视频服务关键点
    1,保持简单和廉价
    2,保持简单网络路径,在内容和用户间不要有太多设备
    3,使用常用硬件,昂贵的硬件很难找到帮助文档
    4,使用简单而常见的工具,使用构建在Linux里或之上的大部分工具
    5,很好的处理随机查找(SATA,tweaks)
    缩略图服务
    1,做到高效令人惊奇的难
    2,每个视频大概4张缩略图,所以缩略图比视频多很多
    3,缩略图仅仅host在几个机器上
    4,持有一些小东西所遇到的问题:
    -OS级别的大量的硬盘查找和inode和页面缓存问题
    -单目录文件限制,特别是Ext3,后来移到多分层的结构。内核2.6的最近改进可能让Ext3允许大目录,但在一个文件系统里存储大量文件不是个好主意
    -每秒大量的请求,因为Web页面可能在页面上显示60个缩略图
    -在这种高负载下Apache表现的非常糟糕
    -在Apache前端使用squid,这种方式工作了一段时间,但是由于负载继续增加而以失败告终。它让每秒300个请求变为20个
    -尝试使用lighttpd但是由于使用单线程它陷于困境。遇到多进程的问题,因为它们各自保持自己单独的缓存
    -如此多的图片以致一台新机器只能接管24小时
    -重启机器需要6-10小时来缓存
    5,为了解决所有这些问题YouTube开始使用Google的BigTable,一个分布式数据存储:
    -避免小文件问题,因为它将文件收集到一起
    -快,错误容忍
    -更低的延迟,因为它使用分布式多级缓存,该缓存与多个不同collocation站点工作
    -更多信息参考Google ArchitectureGoogleTalk ArchitectureBigTable
    数据库
    1,早期
    -使用MySQL来存储元数据,如用户,tags和描述
    -使用一整个10硬盘的RAID 10来存储数据
    -依赖于信用卡所以YouTube租用硬件
    -YouTube经过一个常见的革命:单服务器,然后单master和多read slaves,然后数据库分区,然后sharding方式
    -痛苦与备份延迟。master数据库是多线程的并且运行在一个大机器上所以它可以处理许多工作,slaves是单线程的并且通常运行在小一些的服务器上并且备份是异步的,所以slaves会远远落后于master
    -更新引起缓存失效,硬盘的慢I/O导致慢备份
    -使用备份架构需要花费大量的money来获得增加的写性能
    -YouTube的一个解决方案是通过把数据分成两个集群来将传输分出优先次序:一个视频查看池和一个一般的集群
    2,后期
    -数据库分区
    -分成shards,不同的用户指定到不同的shards
    -扩散读写
    -更好的缓存位置意味着更少的IO
    -导致硬件减少30%
    -备份延迟降低到0
    -现在可以任意提升数据库的伸缩性
    数据中心策略
    1,依赖于信用卡,所以最初只能使用受管主机提供商
    2,受管主机提供商不能提供伸缩性,不能控制硬件或使用良好的网络协议
    3,YouTube改为使用colocation arrangement。现在YouTube可以自定义所有东西并且协定自己的契约
    4,使用5到6个数据中心加CDN
    5,视频来自任意的数据中心,不是最近的匹配或其他什么。如果一个视频足够流行则移到CDN
    6,依赖于视频带宽而不是真正的延迟。可以来自任何colo
    7,图片延迟很严重,特别是当一个页面有60张图片时
    8,使用BigTable将图片备份到不同的数据中心,代码查看谁是最近的
    学到的东西
    1,Stall for time。创造性和风险性的技巧让你在短期内解决问题而同时你会发现长期的解决方案
    2,Proioritize。找出你的服务中核心的东西并对你的资源分出优先级别
    3,Pick your battles。别怕将你的核心服务分出去。YouTube使用CDN来分布它们最流行的内容。创建自己的网络将花费太多时间和太多money
    4,Keep it simple!简单允许你更快的重新架构来回应问题
    5,Shard。Sharding帮助隔离存储,CPU,内存和IO,不仅仅是获得更多的写性能
    6,Constant iteration on bottlenecks:
    -软件:DB,缓存
    -OS:硬盘I/O
    -硬件:内存,RAID
    7,You succeed as a team。拥有一个跨越条律的了解整个系统并知道系统内部是什么样的团队,如安装打印机,安装机器,安装网络等等的人。With a good team all things are possible。(hideto/javaeye)

    ==========================================

        流媒体网络视频、在线听歌,现在技术上貌似已经完全成熟了,从用户角度上来看,在线听歌,看flash、播放视频,速度比以前不知道提升了多少倍了(即使他们服务器没在中国),从商业上,在美国租用服务器、带宽、或者是CDN很多东西并不是现在我们能比的,所以他能做很多这边没法完成的投资来完成跟多的事,从技术上来看,CDN是必不可少的东西,然后再是自己架构及程序开发的能力了吧,跟myspace和我们不一样,他们不能大把大把的砸钱去不停的提升机器的性能,毕竟是已盈利为目的吧?所以只能不断的修改代码,都已经达到瓶颈是RPC了,那么就不是写代码能再度提升很高性能的时候了吧。是否应该更多的注重其他方面的东西了呢?毕竟听歌我只用腾讯、视频只看土豆,中国硕大的市场还没开发,可惜了。而且记得去年10月份的时候YouTube香港和YouTube台湾在中国都无法访问,有点被封杀的感觉。

        感觉好多东西自己看了有点懂,但是又表达不出来很有条理性的东西。缺啥呢?

    通过了解MySpace的六次重构经历,来认识分布式系统到底该如何创建.

    领导发到邮件里让大家阅读,今天早上才有机会把它好好看一遍:

    ==============================

    这是我在网上无意中看到的一篇文章,介绍了myspace的六次重构,对于做海量用户系统的朋友来说,应该能从中受到很多启发.
    在每个里程碑,站点负担都会超过底层系统部分组件的最大载荷,特别是数据库和存储系统。接着,功能出现问题,用户失声尖叫。最后,技术团队必须为此修订系统策略。

    虽然自2005年早期,站点账户数超过7百万后,系统架构到目前为止保持了相对稳定,但MySpace仍然在为SQL Server支持的同时连接数等方面继续攻坚,Benedetto说,"我们已经尽可能把事情做到最好"。

    里程碑一:50万账户

    按Benedetto 的说法,MySpace最初的系统很小,只有两台Web服务器和一个数据库服务器。那时使用的是Dell双CPU、4G内存的系统。

    单个数据库就意味着所有数据都存储在一个地方,再由两台Web服务器分担处理用户请求的工作量。但就像MySpace后来的几次底层系统修订时的情况一样,三服务器架构很快不堪重负。此后一个时期内,MySpace基本是通过添置更多Web服务器来对付用户暴增问题的。

    但到在2004年早期,MySpace用户数增长到50万后,数据库服务器也已开始汗流浃背。

    但和Web服务器不同,增加数据库可没那么简单。如果一个站点由多个数据库支持,设计者必须考虑的是,如何在保证数据一致性的前提下,让多个数据库分担压力。

    在第二代架构中,MySpace运行在3个SQL Server数据库服务器上——一个为主,所有的新数据都向它提交,然后由它复制到其他两个;另两个全力向用户供给数据,用以在博客和个人资料栏显示。这种方式在一段时间内效果很好——只要增加数据库服务器,加大硬盘,就可以应对用户数和访问量的增加。

    里程碑二:1-2百万账户

    MySpace注册数到达1百万至2百万区间后,数据库服务器开始受制于I/O容量——即它们存取数据的速度。而当时才是2004年中,距离上次数据库系统调整不过数月。用户的提交请求被阻塞,就像千人乐迷要挤进只能容纳几百人的夜总会,站点开始遭遇"主要矛盾",Benedetto说,这意味着MySpace永远都会轻度落后于用户需求。

    "有人花5分钟都无法完成留言,因此用户总是抱怨说网站已经完蛋了。"他补充道。

    这一次的数据库架构按照垂直分割模式设计,不同的数据库服务于站点的不同功能,如登录、用户资料和博客。于是,站点的扩展性问题看似又可以告一段落了,可以歇一阵子。

    垂直分割策略利于多个数据库分担访问压力,当用户要求增加新功能时,MySpace将投入新的数据库予以支持它。账户到达2百万后,MySpace还从存储设备与数据库服务器直接交互的方式切换到SAN(Storage Area Network,存储区域网络)——用高带宽、专门设计的网络将大量磁盘存储设备连接在一起,而数据库连接到SAN。这项措施极大提升了系统性能、正常运行时间和可靠性,Benedetto说。

    里程碑三:3百万账户

    当用户继续增加到3百万后,垂直分割策略也开始难以为继。尽管站点的各个应用被设计得高度独立,但有些信息必须共享。在这个架构里,每个数据库必须有各自的用户表副本——MySpace授权用户的电子花名册。这就意味着一个用户注册时,该条账户记录必须在9个不同数据库上分别创建。但在个别情况下,如果其中某台数据库服务器临时不可到达,对应事务就会失败,从而造成账户非完全创建,最终导致此用户的该项服务无效。

    另外一个问题是,个别应用如博客增长太快,那么专门为它服务的数据库就有巨大压力。

    2004年中,MySpace面临Web开发者称之为"向上扩展"对"向外扩展"(译者注:Scale Up和Scale Out,也称硬件扩展和软件扩展)的抉择——要么扩展到更大更强、也更昂贵的服务器上,要么部署大量相对便宜的服务器来分担数据库压力。一般来说,大型站点倾向于向外扩展,因为这将让它们得以保留通过增加服务器以提升系统能力的后路。

    但成功地向外扩展架构必须解决复杂的分布式计算问题,大型站点如Google、Yahoo和Amazon.com,都必须自行研发大量相关技术。以Google为例,它构建了自己的分布式文件系统。

    另外,向外扩展策略还需要大量重写原来软件,以保证系统能在分布式服务器上运行。"搞不好,开发人员的所有工作都将白费",Benedetto说。

    因此,MySpace首先将重点放在了向上扩展上,花费了大约1个半月时间研究升级到32CPU服务器以管理更大数据库的问题。Benedetto说,"那时候,这个方案看似可能解决一切问题。"如稳定性,更棒的是对现有软件几乎没有改动要求。

    糟糕的是,高端服务器极其昂贵,是购置同样处理能力和内存速度的多台服务器总和的很多倍。而且,站点架构师预测,从长期来看,即便是巨型数据库,最后也会不堪重负,Benedetto说,"换句话讲,只要增长趋势存在,我们最后无论如何都要走上向外扩展的道路。"

    因此,MySpace最终将目光移到分布式计算架构——它在物理上分布的众多服务器,整体必须逻辑上等同于单台机器。拿数据库来说,就不能再像过去那样将应用拆分,再以不同数据库分别支持,而必须将整个站点看作一个应用。现在,数据库模型里只有一个用户表,支持博客、个人资料和其他核心功能的数据都存储在相同数据库。

    既然所有的核心数据逻辑上都组织到一个数据库,那么MySpace必须找到新的办法以分担负荷——显然,运行在普通硬件上的单个数据库服务器是无能为力的。这次,不再按站点功能和应用分割数据库,MySpace开始将它的用户按每百万一组分割,然后将各组的全部数据分别存入独立的SQL Server实例。目前,MySpace的每台数据库服务器实际运行两个SQL Server实例,也就是说每台服务器服务大约2百万用户。Benedetto指出,以后还可以按照这种模式以更小粒度划分架构,从而优化负荷分担。

    当然,还是有一个特殊数据库保存了所有账户的名称和密码。用户登录后,保存了他们其他数据的数据库再接管服务。特殊数据库的用户表虽然庞大,但它只负责用户登录,功能单一,所以负荷还是比较容易控制的。

    里程碑四:9百万到1千7百万账户

    2005年早期,账户达到9百万后,MySpace开始用Microsoft的C#编写ASP.NET程序。C#是C语言的最新派生语言,吸收了C++和Java的优点,依托于Microsoft .NET框架(Microsoft为软件组件化和分布式计算而设计的模型架构)。ASP.NET则由编写Web站点脚本的ASP技术演化而来,是Microsoft目前主推的Web站点编程环境。

    可以说是立竿见影, MySpace马上就发现ASP.NET程序运行更有效率,与ColdFusion相比,完成同样任务需消耗的处理器能力更小。据技术总监Whitcomb说,新代码需要150台服务器完成的工作,如果用ColdFusion则需要246台。Benedetto还指出,性能上升的另一个原因可能是在变换软件平台,并用新语言重写代码的过程中,程序员复审并优化了一些功能流程。

    最终,MySpace开始大规模迁移到ASP.NET。即便剩余的少部分ColdFusion代码,也从Cold-Fusion服务器搬到了ASP.NET,因为他们得到了BlueDragon.NET(乔治亚州阿尔法利塔New Atlanta Communications公司的产品,它能将ColdFusion代码自动重新编译到Microsoft平台)的帮助。

    账户达到1千万时,MySpace再次遭遇存储瓶颈问题。SAN的引入解决了早期一些性能问题,但站点目前的要求已经开始周期性超越SAN的I/O容量——即它从磁盘存储系统读写数据的极限速度。

    原因之一是每数据库1百万账户的分割策略,通常情况下的确可以将压力均分到各台服务器,但现实并非一成不变。比如第七台账户数据库上线后,仅仅7天就被塞满了,主要原因是佛罗里达一个乐队的歌迷疯狂注册。

    某个数据库可能因为任何原因,在任何时候遭遇主要负荷,这时,SAN中绑定到该数据库的磁盘存储设备簇就可能过载。"SAN让磁盘I/O能力大幅提升了,但将它们绑定到特定数据库的做法是错误的。"Benedetto说。

    最初,MySpace通过定期重新分配SAN中数据,以让其更为均衡的方法基本解决了这个问题,但这是一个人工过程,"大概需要两个人全职工作。"Benedetto说。

    长期解决方案是迁移到虚拟存储体系上,这样,整个SAN被当作一个巨型存储池,不再要求每个磁盘为特定应用服务。MySpace目前采用了一种新型SAN设备——来自加利福尼亚州弗里蒙特的3PARdata。

    在3PAR的系统里,仍能在逻辑上按容量划分数据存储,但它不再被绑定到特定磁盘或磁盘簇,而是散布于大量磁盘。这就使均分数据访问负荷成为可能。当数据库需要写入一组数据时,任何空闲磁盘都可以马上完成这项工作,而不再像以前那样阻塞在可能已经过载的磁盘阵列处。而且,因为多个磁盘都有数据副本,读取数据时,也不会使SAN的任何组件过载。

    当2005年春天账户数达到1千7百万时,MySpace又启用了新的策略以减轻存储系统压力,即增加数据缓存层——位于Web服务器和数据库服务器之间,其唯一职能是在内存中建立被频繁请求数据对象的副本,如此一来,不访问数据库也可以向Web应用供给数据。换句话说,100个用户请求同一份资料,以前需要查询数据库100次,而现在只需1次,其余都可从缓存数据中获得。当然如果页面变化,缓存的数据必须从内存擦除,然后重新从数据库获取——但在此之前,数据库的压力已经大大减轻,整个站点的性能得到提升。

    缓存区还为那些不需要记入数据库的数据提供了驿站,比如为跟踪用户会话而创建的临时文件——Benedetto坦言他需要在这方面补课,"我是数据库存储狂热分子,因此我总是想着将万事万物都存到数据库。"但将像会话跟踪这类的数据也存到数据库,站点将陷入泥沼。

    增加缓存服务器是"一开始就应该做的事情,但我们成长太快,以致于没有时间坐下来好好研究这件事情。"Benedetto补充道。

    里程碑五:2千6百万账户

    2005年中期,服务账户数达到2千6百万时,MySpace切换到了还处于beta测试的SQL Server 2005。转换何太急?主流看法是2005版支持64位处理器。但Benedetto说,"这不是主要原因,尽管这也很重要;主要还是因为我们对内存的渴求。"支持64位的数据库可以管理更多内存。

    更多内存就意味着更高的性能和更大的容量。原来运行32位版本的SQL Server服务器,能同时使用的内存最多只有4G。切换到64位,就好像加粗了输水管的直径。升级到SQL Server 2005和64位Windows Server 2003后,MySpace每台服务器配备了32G内存,后于2006年再次将配置标准提升到64G。

    意外错误

    如果没有对系统架构的历次修改与升级,MySpace根本不可能走到今天。但是,为什么系统还经常吃撑着了?很多用户抱怨的"意外错误"是怎么引起的呢?

    原因之一是MySpace对Microsoft的Web技术的应用已经进入连Microsoft自己也才刚刚开始探索的领域。比如11月,超出SQL Server最大同时连接数,MySpace系统崩溃。Benedetto说,这类可能引发系统崩溃的情况大概三天才会出现一次,但仍然过于频繁了,以致惹人恼怒。一旦数据库罢工,"无论这种情况什么时候发生,未缓存的数据都不能从SQL Server获得,那么你就必然看到一个'意外错误'提示。"他解释说。

    去年夏天,MySpace的Windows 2003多次自动停止服务。后来发现是操作系统一个内置功能惹的祸——预防分布式拒绝服务攻击(黑客使用很多客户机向服务器发起大量连接请求,以致服务器瘫痪)。MySpace和其他很多顶级大站点一样,肯定会经常遭受攻击,但它应该从网络级而不是依靠Windows本身的功能来解决问题——否则,大量MySpace合法用户连接时也会引起服务器反击。

    "我们花了大约一个月时间寻找Windows 2003服务器自动停止的原因。"Benedetto说。最后,通过Microsoft的帮助,他们才知道该怎么通知服务器:"别开枪,是友军。"

    紧接着是在去年7月某个周日晚上,MySpace总部所在地洛杉矶停电,造成整个系统停运12小时。大型Web站点通常要在地理上分布配置多个数据中心以预防单点故障。本来,MySpace还有其他两个数据中心以应对突发事件,但Web服务器都依赖于部署在洛杉矶的SAN。没有洛杉矶的SAN,Web服务器除了恳求你耐心等待,不能提供任何服务。

    Benedetto说,主数据中心的可靠性通过下列措施保证:可接入两张不同电网,另有后备电源和一台储备有30天燃料的发电机。但在这次事故中,不仅两张电网失效,而且在切换到备份电源的过程中,操作员烧掉了主动力线路。

    2007年中,MySpace在另两个后备站点上也建设了SAN。这对分担负荷大有帮助——正常情况下,每个SAN都能负担三分之一的数据访问量。而在紧急情况下,任何一个站点都可以独立支撑整个服务,Benedetto说。

    MySpace仍然在为提高稳定性奋斗,虽然很多用户表示了足够信任且能原谅偶现的错误页面。

    "作为开发人员,我憎恶Bug,它太气人了。"Dan Tanner这个31岁的德克萨斯软件工程师说,他通过MySpace重新联系到了高中和大学同学。"不过,MySpace对我们的用处很大,因此我们可以原谅偶发的故障和错误。" Tanner说,如果站点某天出现故障甚至崩溃,恢复以后他还是会继续使用。

    这就是为什么Drew在论坛里咆哮时,大部分用户都告诉他应该保持平静,如果等几分钟,问题就会解决的原因。Drew无法平静,他写道,"我已经两次给MySpace发邮件,而它说一小时前还是正常的,现在出了点问题……完全是一堆废话。"另一个用户回复说,"毕竟它是免费的。"Benedetto坦承100%的可靠性不是他的目标。"它不是银行,而是一个免费的服务。"他说。

    换句话说,MySpace的偶发故障可能造成某人最后更新的个人资料丢失,但并不意味着网站弄丢了用户的钱财。"关键是要认识到,与保证站点性能相比,丢失少许数据的故障是可接受的。"Benedetto说。所以,MySpace甘冒丢失2分钟到2小时内任意点数据的危险,在SQL Server配置里延长了"checkpoint"操作——它将待更新数据永久记录到磁盘——的间隔时间,因为这样做可以加快数据库的运行。

    Benedetto说,同样,开发人员还经常在几个小时内就完成构思、编码、测试和发布全过程。这有引入Bug的风险,但这样做可以更快实现新功能。而且,因为进行大规模真实测试不具可行性,他们的测试通常是在仅以部分活跃用户为对象,且用户对软件新功能和改进不知就里的情况下进行的。因为事实上不可能做真实的加载测试,他们做的测试通常都是针对站点。

    "我们犯过大量错误,"Benedetto说,"但到头来,我认为我们做对的还是比做错的多。"

    MySpace Tech Roster

    January 16, 2007

    By David F. Carr

    我的一些思考:
    看完这篇文章首先很惊讶myspace居然是基于.net平台的系统,windows2003+asp.net+IIS+SQLSERVER,虽然我是一个纯粹的MS技术者,但是对于MS的WEB应用总是有点疑虑,我的担心大概是来自于到处都在鼓吹的LAMP,我并不敌视开源,但是我承认,它给我带来了很大的压力.看了这篇文章,我有点庆幸也有点笑自己之前的迂腐,其实对于技术来说,优劣只在于开发者本身,myspace的六次重构,很好的说明了这一点.
    我们常常讲分布式系统,这个概念很大,简单点说,就是把系统给拆分开来,把本来一台服务器做的事,分到两台服务器来做.如果只在一台服务器上部署两个程序来执行之前一个程序做的事,我认为那不叫分布式,也是完全没必要的,分布式的原则是"后分布"(lazy distribute),因为这本身是件损耗性能的工作,如果不能通过它来获得明显的性能提升,那为什么还要分布式?
    myspace的六次重构基本都是围绕数据库来进行的,做了这么多年的WEB应用,我早就知道了数据库对于一个网站来说是多么的重要.在程序没有额外的问题的基础上,随着流量的增大,最先出现问题的,往往就是数据库.症状通常为,数据库查询/更新变的非常非常的慢,经常超时等.
    这个时候,我们能做的事非常有限,无非是调整下SQLServer的内存大小,给服务器加内存换速度更快的硬盘等.如果要认真的解决这个问题,对于一般的开发者来说,都会自然的想到拆库.海量的数据查询对于SQL来说本就是不该存在的,无论你的数据库优化的多么好,比如你用的Oracle,数据吞吐量很大,难道查询100W的记录会比SQL查询1W条更快吗?拆库又分本地数据库分多个表和多个服务器分多个库,执行顺序为由前到後,当数据库的压力由海量查询变成磁盘IO之后,就需要更多的数据库服务器了.
    除了硬件手段,更常用的是采用缓存.myspace直到第四次改版的后期才开始正式的引入缓存策略,这确实是个失误,如果从最开始就考虑到缓存的作用的话,那么数据库服务器至少不会膨胀的那么快,也可以有更多的时间来思考更好的架构.当然,正如Benedetto所说,这是件一开始就该考虑的事,但是myspace成长的太快了.
    不是谁都有机会来为一个流量在世界上排名前10的网站来设计架构,因此myspace的后面的若干次重构,对于普通的开发者已经很难接触了,我认为,在第三个里程碑时,也就是通过服务器的横向扩展来实现的分布式,已经足够支持巨型网站的应用了.myspace是个交互型特别强的网站,用户执行的请求数会远大于一般的网站,这也是它巨大的数据库压力的来源.
    最后总结一下WEB系统分布式的要点:
    1.不到需要,绝对不要分布
    2.分布式应该围绕数据库展开
    3.分布式系统本身具有很强的扩展性,系统性能的提升和硬件的增加是线性关系.
    感想写的比较乱,基本想到什么写的什么,各位看官各取所需即是.

    ======================================

    mysql、sqlserver和oracle的各自的优劣并不是哪个人,几句话能说得出来的。为了自己方便,留个印子,想到哪儿说道哪儿。且不说他们的免费收费、价格高低(虽然这个是老板很在乎的),单从技术角度讲,sqlserver是不能跨平台的软肋让他很受局限,现在我们几百台服务器也就只有10台SDC(访问日志分析系统)是用的windows,其他的全部都是linux的,所以,我们无缘sqlserver;mysql没有事务功能(貌似新出的版本在往这个方向走),但是他的速度挺快,有数据量的瓶颈(听说腾迅都还在用mysql,所以数据量是个瓶颈这个和上面那个兄台想法一样:对于技术来说,优劣只在于开发者本身),现在,mysql和盘阵已经逐渐从我们的系统里面干掉,几乎全部都用上oracle+EMC了,这也是因为业务量变得很大了,但是最重要的是东家有钱和我们的技术还很薄弱,oracle,我觉得一个很理性但是不人性的系统,因为只是按照文档在上面做了2次stream,和一个话单系统,所以,都还不是真正懂得他的很多细节上的东西,PL\sql,分布式,连乱七八糟的基础都是连门都还没去敲。

    跑题了。分布式系统,我们经历了从myspace的第一个阶段直接到最后阶段的更新(诸多原因掺杂),2web+2app+1DB+1SAN,当业务量到达一定量、技术还无法跟上的时候,我们便变成了web群+app群+DB群+EMC+分析+统计……我觉得可以说是一个网站最后的必经之路,因为无论技术在好,1个孙悟空也搞不定81个妖怪吧。

    笑话(转)

    虽然我不是很愤青,但是今天偶然看到了还是觉得挺好笑的。

    气死日本人的经典笑话,不顶不是中国人

    1.一个美国人 一个日本人 一个中国人 在丛林探险 结果全被吃人部落抓去了   
    可部落 酋 长说:"我今天心情好 不吃你们 但你们都得挨一百板子 但在挨板子前   
    你们可以有一个愿望实现。"先挨板子的是美国人 他说:"挨 板子前 先给我屁股上垫10个坐垫。"垫罢 板子雨 点般落下 先前70板还凑合 70板之后 坐垫被打烂 然后就是板板见血……打完 ,美国老摸着屁股走了 日本人见状后 也要求10个床垫 1,2,3……100打完 日本人起身   
    拍拍屁股 没事 然后张着臭嘴对自己的模仿能力和再创造能力吹嘘一番,   
    并想坐一边看中国人的好戏 中国人慢慢趴下 悠哉悠哉地说:"来把日本人给我垫上,要面朝上"……   
    2. 一个日本人在中国一家饭店里吃饭。当侍者端上一盘龙虾后,日本人问道:请问你 们怎样处理吃剩的虾壳?""当然是倒掉啦,"侍者道。"no!no!no!"日本人摇摇 头说,"在我们日本,吃剩的虾壳就送进工厂里,做成虾饼,然后再卖到你们中国。"一会儿,侍者又端上了一盘水果,日本人指着其中一个柠檬又问:"请问你们怎样 处理吃剩的柠檬皮?""当然是倒掉啦,"侍者道。"no!no!no!"日本人摇摇头说 ,"在我们日本,吃剩的柠檬皮就送进工厂里,做成果珍,然后再卖到你们中国。" 结帐的时候,日本人一边嚼着口香糖,一边笑着问侍: "请问你们怎样处理吃剩 的口香糖?""当然是吐掉啦,"侍者道。 "no!no!no!"日本人摇摇头,得意的 说,"在我们日本,嚼过的口香糖就送进工厂里,做成套套,然后再卖到你们中国。"侍者不耐烦的问道:"那你知道在我们中国,如何处理用过的套套吗?""当然是扔 掉啦。"日本人道。侍者摇摇头说:"no!no!no!在我们中国,用过的套套就送进工厂里,做成口香糖,然后再卖到你们日本。"   
    3.有一架飞机上面坐有一美国人一个德国人一个日本人和一个中国人,飞机飞到一半 突然没油了,机长宣布必须有一人跳机以减轻重量,于是那美国人就发挥其个人英雄主义精神走到飞机舱口高呼一声:美利坚和众国万岁!!然后就跳下去了!飞机 继续飞.....这时机长又宣布:重量还是太重了,还的跳下去一个人!于是德国人就站出来,走到飞机舱口,高呼一声:德意志帝国万岁!也跟着跳了下去!飞机继续飞..... 这时机长又宣布说:不行,还是重了,必须再跳下去一个人!中国人看了日本人一眼,站起来走到了飞机舱口,日本人赶紧走过来紧紧握住中国人的手:好兄弟,我不会忘了你的!中国人高呼一声:中华人民共和国万岁!!接着一脚把日本人给踹下去了!!......   
    4.一个鬼子到北京来学习中文,很刻苦。   
    十几年以後,他不但会说普通话,还会说粤语和客家话,而且一点鬼子的腔调都没有。   
    “这下应该没有人再把我当鬼子了吧……”他心想。   
    有一天他到天津的一个小渔港去旅行,看到了一位捕虾的老伯。   
    于是他心血来潮,满怀信心地用普通话向这位老伯打招呼:「老伯!你知道我是哪里人么?」   
    老伯答:“你的口音听不太出来……”   
    这个鬼子很高兴,心想:“想不到我的汉语己经进步到如此地步了,勘称炉火纯青啊……”   
    这时老伯大量了他一眼,说:“如果你能把偶抓到的虾数清楚,偶就有能知道你是哪里人。”   
    这个鬼子就以相当标准的发音开始数:“一,二,三,……五十……一百……二百……”   
    数了一个多小时,他得意地回答:“九千七百八十七只虾!老伯,我看你绝猜不到我是哪里人吧!!」   
    老伯笑着说:“知道啦!你一定是日本人啦!哈哈哈……”   
    鬼子非常惊讶,但仍旧用发音标准的普通话问老伯:“你……你……为什么知道呢?”   
    老伯答道:“啊,这个简单,中国人问鱼虾都是问斤两的,没有你们这么蠢的啦!”   
    5.  
    美国人,英国人,中国人,日本人,在一起讨论本国的军事.   
    日本人说:“我们崇尚武士道,不畏惧牺牲,我敢头上顶着苹果让你们来比试枪法.“于   
    是他把一个苹果放在了头顶上.   
    美国人转身向后走了20步,然后回头就是一枪,苹果被打爆了,他骄傲的说:   
    “ I am Hunter(亨特).”   
    日本人又放了一个苹果在头顶上.   
    英国人转身向后走了50步,然后回头就是一枪,苹果被打爆了,他骄傲的说:   
    “ I am Boon(邦德).”   
    日本人放一个小苹果在头顶上.   
    中国人转身向后走了3步,然后回头就是一枪,脑袋被打爆了,他骄傲的说:   
    “I am sorry.”   
    6.  
    一架飞机在一座小岛上坠毁,机上只剩下一个美国人,一个中国人,和一个日本人幸免遇难,但他们在岛上遇到了食人族.族长对他们说,只要你们三个人DD的长度加在一起超过20公分我们就不吃你们,美国人先量,他的长度为12公分,然后是中国人,他的长度是7公分.美国人和中国人松了口气,心里想,"丫的.小日本不会连2公分都没有吧?"这时轮到量日本人了,他的长度正好是2公分,三人总长度超过了20公分.大家都松了一口气......食人族走后,美国人说:"我的长度都超过一半了,没有我你们不早完了,中国人不服气说:丫的,我的长度都等于平均数了,.没有我你们也不是早完了啊.   
    过了一会儿,日本人爆发了:草你们娘!.刚才我要不是勃起了.你们全都得玩完!!   
    看过了也顶!!!!不顶不是中国人