??xml version="1.0" encoding="utf-8" standalone="yes"?>一本色道久久88综合日韩精品 ,久久综合五月丁香久久激情,久久精品亚洲欧美日韩久久http://www.shnenglu.com/mysileng/archive/2013/06/22/201231.html鑫龙鑫龙Sat, 22 Jun 2013 15:03:00 GMThttp://www.shnenglu.com/mysileng/archive/2013/06/22/201231.htmlhttp://www.shnenglu.com/mysileng/comments/201231.htmlhttp://www.shnenglu.com/mysileng/archive/2013/06/22/201231.html#Feedback0http://www.shnenglu.com/mysileng/comments/commentRss/201231.htmlhttp://www.shnenglu.com/mysileng/services/trackbacks/201231.htmlZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务Q配|维护和命名服务{。Zookeeper是hadoop的一个子目Q其发展历程无需赘述。在分布式应用中Q由于工E师不能很好C用锁机制Q以及基于消息的协调机制不适合在某些应用中使用Q因此需要有一U可靠的、可扩展的、分布式的、可配置的协调机制来l一pȝ的状态。Zookeeper的目的就在于此。本文简单分析zookeeper的工作原理,对于如何使用zookeeper不是本文讨论的重炏V?/p>

1 Zookeeper的基本概?/h1>

1.1 角色

Zookeeper中的角色主要有以下三c,如下表所C:

1.2 设计目的

1.最l一致性:client不论q接到哪个ServerQ展C给它都是同一个视图,q是zookeeper最重要的性能?/p>

2 .可靠性:h单、健壮、良好的性能Q如果消息m被到一台服务器接受Q那么它被所有的服务器接受?/p>

3 .实时性:Zookeeper保证客户端将在一个时间间隔范围内获得服务器的更新信息Q或者服务器失效的信息。但׃|络延时{原因,Zookeeper不能保证两个客户端能同时得到刚更新的数据Q如果需要最新数据,应该在读数据之前调用sync()接口?/p>

4 .{待无关Qwait-freeQ:慢的或者失效的client不得q预快速的client的请求,使得每个client都能有效的等待?/p>

5.原子性:更新只能成功或者失败,没有中间状态?/p>

6 .序性:包括全局有序和偏序两U:全局有序是指如果在一台服务器上消息a在消息b前发布,则在所有Server上消息a都将在消息b前被发布Q偏序是指如果一个消息b在消息a后被同一个发送者发布,a必将排在b前面?/p>

2 ZooKeeper的工作原?/h1>

Zookeeper的核心是原子q播Q这个机制保证了各个Server之间的同步。实现这个机制的协议叫做Zab协议。Zab协议有两U模式,它们分别是恢复模式(选主Q和q播模式Q同步)。当服务启动或者在领导者崩溃后QZabp入了恢复模式Q当领导者被选D出来Q且大多数Server完成了和leader的状态同步以后,恢复模式q束了。状态同步保证了leader和Serverh相同的系l状态?/p>

Z保证事务的顺序一致性,zookeeper采用了递增的事务idPzxidQ来标识事务。所有的提议QproposalQ都在被提出的时候加上了zxid。实Czxid是一?4位的数字Q它?2位是epoch用来标识leader关系是否改变Q每ơ一个leader被选出来,它都会有一个新的epochQ标识当前属于那个leader的统L期。低32位用于递增计数?/p>

每个Server在工作过E中有三U状态:

  • LOOKINGQ当前Server不知道leader是谁Q正在搜?/li>
  • LEADINGQ当前Server即ؓ选D出来的leader
  • FOLLOWINGQleader已经选D出来Q当前Server与之同步

2.1 选主程

当leader崩溃或者leader失去大多数的followerQ这时候zkq入恢复模式Q恢复模式需要重新选DZ个新的leaderQ让所有的Server都恢复到一个正的状态。Zk的选D法有两U:一U是Zbasic paxos实现的,另外一U是Zfast paxos法实现的。系l默认的选D法为fast paxos。先介绍basic paxos程Q?/p>

  1. 1 .选DU程由当前Server发v选D的线E担任,其主要功能是Ҏ结果进行统计,q出推荐的ServerQ?/li>
  2. 2 .选DU程首先向所有Server发v一ơ询?包括自己)Q?/li>
  3. 3 .选DU程收到回复后,验证是否是自己发L询问(验证zxid是否一?Q然后获取对方的id(myid)Qƈ存储到当前询问对象列表中Q最后获取对Ҏ议的leader相关信息(id,zxid)Qƈ这些信息存储到当次选D的投记录表中;
  4. 4.  收到所有Server回复以后Q就计算出zxid最大的那个ServerQƈ这个Server相关信息讄成下一ơ要投票的ServerQ?/li>
  5. 5.  U程当前zxid最大的Server讄为当前Server要推荐的LeaderQ如果此时获胜的Server获得n/2 + 1的Server数Q?讄当前推荐的leader胜的ServerQ将Ҏ莯的Server相关信息讄自己的状态,否则Ql这个过E,直到leader被选D出来?/li>

通过程分析我们可以得出Q要使Leader获得多数Server的支持,则ServerL必须是奇?n+1Q且存活的Server的数目不得少于n+1.

每个Server启动后都会重复以上流E。在恢复模式下,如果是刚从崩溃状态恢复的或者刚启动的serverq会从磁盘快照中恢复数据和会话信息,zk会记录事务日志ƈ定期q行快照Q方便在恢复时进行状态恢复。选主的具体流E图如下所C:


fast paxos程是在选Dq程中,某Server首先向所有Server提议自己要成为leaderQ当其它Server收到提议以后Q解决epoch和zxid的冲H,q接受对方的提议Q然后向Ҏ发送接受提议完成的消息Q重复这个流E,最后一定能选D出Leader。其程囑֦下所C:

2.2 同步程

选完leader以后Qzkp入状态同步过E?/p>

  1. 1. leader{待serverq接Q?/li>
  2. 2 .Followerq接leaderQ将最大的zxid发送给leaderQ?/li>
  3. 3 .LeaderҎfollower的zxid定同步点;
  4. 4 .完成同步后通知follower 已经成ؓuptodate状态;
  5. 5 .Follower收到uptodate消息后,又可以重新接受client的请求进行服务了?/li>

程囑֦下所C:


2.3 工作程

2.3.1 Leader工作程

Leader主要有三个功能:

  1. 1 .恢复数据Q?/li>
  2. 2 .l持与Learner的心跻I接收Learnerhq判断Learner的请求消息类型;
  3. 3 .Learner的消息类型主要有PING消息、REQUEST消息、ACK消息、REVALIDATE消息Q根据不同的消息cdQ进行不同的处理?/li>

PING消息是指Learner的心跳信息;REQUEST消息是Follower发送的提议信息Q包括写h及同步请求;ACK消息是Follower的对提议的回复,过半数的Follower通过Q则commit该提议;REVALIDATE消息是用来g长SESSION有效旉?br />Leader的工作流E简囑֦下所C,在实际实CQ流E要比下囑֤杂得多,启动了三个线E来实现功能?/p>

2.3.2 Follower工作程

Follower主要有四个功能:

  1. 1. 向Leader发送请求(PING消息、REQUEST消息、ACK消息、REVALIDATE消息Q;
  2. 2 .接收Leader消息q进行处理;
  3. 3 .接收Client的请求,如果为写hQ发送给Leaderq行投票Q?/li>
  4. 4 .q回Clientl果?/li>

Follower的消息@环处理如下几U来自Leader的消息:

  1. 1 .PING消息Q?心蟩消息Q?/li>
  2. 2 .PROPOSAL消息QLeader发v的提案,要求Follower投票Q?/li>
  3. 3 .COMMIT消息Q服务器端最Cơ提案的信息Q?/li>
  4. 4 .UPTODATE消息Q表明同步完成;
  5. 5 .REVALIDATE消息Q根据Leader的REVALIDATEl果Q关闭待revalidate的sessionq是允许其接受消息;
  6. 6 .SYNC消息Q返回SYNCl果到客LQ这个消息最初由客户端发P用来强制得到最新的更新?/li>

Follower的工作流E简囑֦下所C,在实际实CQFollower是通过5个线E来实现功能的?/p>

对于observer的流E不再叙qͼobserver程和Follower的唯一不同的地方就是observer不会参加leader发v的投?/span>



鑫龙 2013-06-22 23:03 发表评论
]]>
分布式服务框?Zookeeper -- 理分布式环境中的数?/title><link>http://www.shnenglu.com/mysileng/archive/2013/06/22/201230.html</link><dc:creator>鑫龙</dc:creator><author>鑫龙</author><pubDate>Sat, 22 Jun 2013 14:19:00 GMT</pubDate><guid>http://www.shnenglu.com/mysileng/archive/2013/06/22/201230.html</guid><wfw:comment>http://www.shnenglu.com/mysileng/comments/201230.html</wfw:comment><comments>http://www.shnenglu.com/mysileng/archive/2013/06/22/201230.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/mysileng/comments/commentRss/201230.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/mysileng/services/trackbacks/201230.html</trackback:ping><description><![CDATA[     摘要: 安装和配|详解本文介l的 Zookeeper 是以 3.2.2 q个E_版本为基Q最新的版本可以通过官网 http://hadoop.apache.org/zookeeper/来获取,Zookeeper 的安装非常简单,下面从单机模式和集模式两个方面介l?Zookeeper 的安装和配置。单机模式单机安装非常简单,只要获取?Zookeeper 的压~包q解压到某个目录如:/hom...  <a href='http://www.shnenglu.com/mysileng/archive/2013/06/22/201230.html'>阅读全文</a><img src ="http://www.shnenglu.com/mysileng/aggbug/201230.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/mysileng/" target="_blank">鑫龙</a> 2013-06-22 22:19 <a href="http://www.shnenglu.com/mysileng/archive/2013/06/22/201230.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Google利器之Chubby http://www.shnenglu.com/mysileng/archive/2013/06/22/201222.html鑫龙鑫龙Sat, 22 Jun 2013 04:18:00 GMThttp://www.shnenglu.com/mysileng/archive/2013/06/22/201222.htmlhttp://www.shnenglu.com/mysileng/comments/201222.htmlhttp://www.shnenglu.com/mysileng/archive/2013/06/22/201222.html#Feedback0http://www.shnenglu.com/mysileng/comments/commentRss/201222.htmlhttp://www.shnenglu.com/mysileng/services/trackbacks/201222.html

http://blog.csdn.net/historyasamirror/article/details/3870168

Google利器之Chubby 

写完了Google ClusterQ该轮到Chubby了?/span>

参考文献:
[1] The Chubby lock service for loosely-coupled distributed systems 
[2] Paxos Made Simple

声明

文中大部分的观点来自于文献[1]中的描述Q但也夹杂了部分本h自己的理解,所以不能保证本文的正确性。真x入了解Chubbyq是好好d版论文吧Q?

前言

MapReduce很多人已l知道了Q但关于Chubyyg熟悉它的非常有限,q倒是不奇怪,因ؓMapReduce是一个针对开发h员的ProgrammingModelQ自然会有很多hd习它Q而Chubby更多的是一Uؓ了实现MapReduce或者Bigtable而构建的内部?nbsp;工具Q对于开发h员来说基本上是透明的。文献[1]我反复读了至有两三天,但感觉也只是一个囫囵吞枣的l果Q里面有很多工程实现上的l节Q如果不是自?nbsp;亲自去设计或者实玎ͼ很难体会到其中的道理和奥妙。但是,对于q样一个分布式service的研IӞq是让我对一个分布式pȝ的结构和设计思想有了更加?nbsp;观的感觉?/span>

从distributed consensus problem说v

distributed consensus problem(分布的一致性问?是分布式法中的一个经兔R题。它的问题描q大概是q样的:在一个分布式pȝ中,有一l的ProcessQ它们需要确 定一个Value。于是每个Process都提Z一个ValueQconsensus是指只有其中的一个Value能够被选中作ؓ最后确定的|q且 当这个D选出来以后,所有的Process都需要被通知到?/span>
表面上看Q这个问题很Ҏ解决。比如设|一个serverQ所有的process?nbsp;向这个server提交一个ValueQ这个server可以通过一个简单的规则来挑选出一个ValueQ例如最先到辄Value被选中Q,然后p个server通知所有的Process。但是在分布式系l中Q就会有各种的问题发生,例如Q这个server崩溃了怎么办,所以我们可能需要有几台server共同军_。还有,Process提交Value的时间都不一P|络传输q程中由于gq这些Value到达server的顺序也都没有保证?/span>
?nbsp;了解册个问题,有很多h提出了各U各LProtocolQ这些Protocol可以看做是一l需要遵循的规则Q按照这些规则,q些Processp 够选DZ个唯一的Value。其中,最有名的一个Protocol是Paxos法。(八卦一下,Paxos的提叫做LamportQ有很多分布 式的法都是他提出的Q他q是Latex的作者,大牛?..Q。想更加了解Paxos法可以参考文献[2]Q很漂亮的一文章?/span>

那么 q些和Chubby有什么关pdQ其实Chubby是Zq个问题而构建出来的。只是它q不是一个Protocol或者是一个算法,而是google_?nbsp;心设计的一个service。这个service不仅能够解决一致性问题,q有其它的一些很实用的好处,会在下文慢慢介绍?/span>

一个实?/span>

在Google File System(GFS)中,有很多的serverQ这些server需要选D其中的一C为master server。这其实是一个很典型的consensus问题QValue是master server的地址。GFS是用Chubby来解决的q个问题Q所有的server通过Chubby提供的通信协议到Chubby server上创建同一个文Ӟ当然Q最l只有一个server能够获准创徏q个文gQ这个server成ZmasterQ它会在q个文g中写入自?nbsp;的地址Q这样其它的server通过dq个文gp知道被选出的master的地址?/span>

Chubby是什?/span>

?nbsp;上面的这个实例可以看出,Chubby首先是一个分布式的文件系l。Chubby能够提供机制使得client可以在Chubby service上创建文件和执行一些文件的基本操作。说它是分布式的文gpȝQ是因ؓ一个Chubby cell是一个分布式的系l,一般包含了5台机器,整个文gpȝ是部|在q?台机器上的?/span>
但是Q从更高一点的语义层面上,Chubby是一个lock serviceQ一个针Ҏ耦合的分布式pȝ的lock service。所谓lock serviceQ就是这个service能够提供开发h员经常用?#8220;?#8221;Q?#8220;解锁”功能。通过ChubbyQ一个分布式pȝ中的上千个client都能?nbsp;对于某项资源q行“加锁”Q?#8220;解锁”?/span>
那么QChubby是怎样实现q样?#8220;?#8221;功能的?是通过文g。Chubby中的“?#8221;是文gQ在上例 中,创徏文g其实是q行“加锁”操作Q创建文件成功的那个server其实是抢占C“?#8221;。用户通过打开、关闭和d文gQ获取共享锁或者独占锁Q?nbsp;q且通过通信机制Q向用户发送更C息?/span>

lg所qͼChubby是一个lock serviceQ通过q个lock service可以解决分布式中的一致性问题,而这个lock service的实现是一个分布式的文件系l?/span>

可能会有人问Qؓ什么不是直接实C个类gPaxos法q样的Protocol来解决一致性问题,而是要通过一个lock service来解冻I文献[1]中提刎ͼ用lock serviceq种方式有几个好处:
1.大部分开发h员在开始开发service的时候都不会考虑到这U一致性的问题Q所以一开始都不会使用consensus protocol。只有当service慢慢成熟以后Q才开始认真对待这个问题。采用lock service可以使得在保持原有的E序架构和通信机制的情况下Q通过d单的语句可以解决一致性问题;
2.正如上文实例中所展现Q很多时候ƈ不仅仅是选DZ个masterQ还需要将q个master的地址告诉其它人或者保存某个信息,q种时候,使用Chubby中的文gQ不仅仅是提供锁功能Q还能在文g中记录下有用的信息(比如master的地址Q。所以,很多的开发h员通过使用Chubby来保存metadata和configuration?/span>
3. 一个基于锁的开发接口更Ҏ被开发h员所熟悉。ƈ不是所有的开发h员都了解consensus protocol的,但大部分人应该都用过锁?/span>
4. 一个consensus protocol一般来说需要用到好几台副本来保证HAQ详见Paxos法Q,而用ChubbyQ就只有一个client也能用?/span>
可以看出Q之所以用lock serviceq样的Ş式,是因为Chubby不仅仅想解决一致性问题,q可以提供更多更有用的功能。事实上QGoogle有很多开发h员将Chubby当做name service使用Q效果非常好?/span>

关于lock serviceQ还有两个名词需要提及?/span>
一 个是advisory lock。Chubby中的lock都是advisory lock。所谓的advisory lockQD个例子,是说当有h某个文仉住以后,如果有其他的人想不解锁而直接访问这个文Ӟq种行ؓ是不会被L的。和advisory lock对应的是mandatory lockQ即如果某个文g被锁住以后,如果有其他的人直接访问它Q那么这U行为是会生exception的?/span>
?nbsp;一个是coarse-grainedQ粗颗粒度的Q。Chubby的lock service是coarse-grainedQ就是说Chubby中的lock一般锁住的旉都比较长Q可能是几小时或者几天。与之对应的是fined-grainedQ这Ulock一般只l持几秒或者更。这两种锁在实现的时候是会有很多不同的考虑的,比如coarse-grained的lock service的负载要很多,因ؓ加锁解锁q不会太频繁。其它的差别详见文献[1]?/span>


Chubby的架?/span>



上图是Chubby的系l架构?nbsp;

基本上分Z两部分:服务器一端,UCؓChubby cellQclient一端,每个Chubby的client都有一个Chubby library。这两部分通过RPCq行通信?/span>
client端通过Chubby library的接口调用,在Chubby cell上创建文件来获得相应的锁的功能?/span>
׃整个Chubbypȝ比较复杂Q且l节很多Q我个h又将整个pȝ分ؓ了三个部分:
Chubby cell的一致性部?/span>
分布式文件系l部?/span>
client与Chubby cell的通信和连接部?/span>

先从Chubby cell的一致性部分说赗?/span>
一般来_一个Chubby cell׃台serverl成Q可以支持一整个数据中心的上万台机器的lock service?/span>
cell中的每台server我们UC为replicasQ副本)?/span>
当Chubby工作的时候,首先它需要从q些replicas中选DZ个master。注意,q其实也是一个distributed consensus problemQ也是说Chubby也存在着分布式的一致性问题。Chubby是通过采用consensus protocolQ很可能是Paxos法Q来解决q个问题的。所以,Chubby的client用Chubby提供的lock service来解决一致性问题,而Chubbypȝ内部的一致性问题则是用consensus protocol解决的?/span>
每个master都具有一定的期限Q成为master lease。在q个期限中,副本们不会再选D一个其它的master?/span>
?nbsp;了安全性和定w的考虑Q所有的replicasQ包括masterQ都l护的同一个DB的拷贝。但是,只有master能够接受client提交的操作对DBq行d写,而其它的replicas只是和masterq行通信来update它们各自的DB。所以,一旦一个master被选D出来后,所有的client端都之和masterq行通信Q如图所C)Q如果是L作,那么master一台机器就搞定了,如果是写操作Qmaster会通知其它的replicasq行update。这L话,一旦master意外停机Q那么其它的replicas也能够很快的选D出另外一个master?/span>

再说说Chubby的文件系l?/span>
?nbsp;文说q,Chubby的底层实现其实就是一个分布式的文件系l。这个文件系l的接口是类gUnixpȝ的。例如,对于文g?#8220;/ls/foo /wombat/pouch”Qls表示的是“lock service”Qfoo表示的是某个Chubby cell的名字,wombat/pouch则是q个cell上的某个文g目录或者文件名。如果一个client端用Chubby library来创样一个文件名Q那么这样一个文件就会在Chubby cell上被创徏?/span>
Chubby的文件系l由于它的特D用途做了很?nbsp;的简化。例如它不支持文件的转移Q不记录文g最后访问时间等{。整个文件系l只包含有文件和目录Q统一UCؓ“Node”。文件系l采用Berkeley DB来保存Node的信息,主要是一Umap的关pRKey是Node的名字,Value是Node的内宏V?/span>
q有一炚w要提及的 是,Chubby cell和client之间用了event形式的通知机制。client在创Z文g之后会得C个handleQƈ且还可以订阅一pd的eventQ例 如文件内容修改的event。这L话,一旦client相关的文件内容被修改了,那么cell会通过机制发送一个event来告诉client该文件被 修改了?/span>

最后谈谈client与cell的交互部?/span>
q里大致包含两部分的内容Qcache的同步机制和KeepAlive握手协议?/span>
?nbsp;了降低client和cell之间通信的压力和频率Qclient在本C保存一个和自己相关的Chubby文g的cache。例如如果client通过Chubby library在cell上创Z一个文Ӟ那么在client本地Q也会有一个相同的文g在cache中创建,q个cache中的文g的内容和cell上文件的内容是一L。这L话,client如果惌问这个文Ӟ可以直接访问本地的cache而不通过|络去访问cell?/span>
cache有两个状态,有效和无效。当 有一个client要改变某个File的时候,整个修改会被master blockQ然后master会发送无效标志给所有cache了这个数据的clientQ它l护了这么一个表Q,当其它client端收到这个无效标?nbsp;后,׃cache中的状态置为无效,然后q回一个acknowledgeQ当master定收到了所有的acknowledge之后Q才完成整个modification?/span>
需要注意的是,masterq不是发送updatelclient而是发送无效标志给client。这是因为如果发送updatelclientQ那么每 一ơ数据的修改都需要发送一大堆的updateQ而发送无效标C的话,对一个数据的很多ơ修改只需要发送一个无效标C,q样大大降低了通信量?/span>

至于KeepAlive协议Q则是ؓ了保证client和master随时都保持着联系。client和master每隔一D|间就会KeepAlive一ơ,q样的话Q如果master意外停机Qclient可以很快的知道这个消息,然后q速的转移到新的master上。ƈ且,q种转移对于client端的application是透明的,也就是说applicationq不会知道master发生了错误。关于cache和KeepAliveq有很多?nbsp;l节Q想了解的读文献[1]吧?/span>

ȝ

其实在我的这文章中Q还有一个很大的主题没有提及Q那是Chubby的容错机制。基本上Q容错这个思想贯穿了文献[1]的始l,也正是因此,我很隑ְ 它单独提取出来解释,因ؓ它散落在了Chubbypȝ设计的所有角落。我个h感觉Q容错是一个分布式pȝ设计的核心思想Q在设计的时候要求考虑到所有可?nbsp;会发生的错误Q不仅仅包括了硬件的错误Q网l的故障Q还包括了开发h员可能出现的错误。我惻Iq是我读q篇文章[1]最大的收获?br />

/Files/mysileng/Paxos法深入分析.doc



鑫龙 2013-06-22 12:18 发表评论
]]>
高ƈ发处理方?/title><link>http://www.shnenglu.com/mysileng/archive/2013/06/19/201153.html</link><dc:creator>鑫龙</dc:creator><author>鑫龙</author><pubDate>Wed, 19 Jun 2013 08:33:00 GMT</pubDate><guid>http://www.shnenglu.com/mysileng/archive/2013/06/19/201153.html</guid><wfw:comment>http://www.shnenglu.com/mysileng/comments/201153.html</wfw:comment><comments>http://www.shnenglu.com/mysileng/archive/2013/06/19/201153.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/mysileng/comments/commentRss/201153.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/mysileng/services/trackbacks/201153.html</trackback:ping><description><![CDATA[<span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">时常看到高ƈ发的问题Q但高ƈ发其实是最不需要考虑的东ѝؓ何,他虚无I~,很少有网站真的需要这些东西,而且其中很多技术,其实你已l在用了。有q个意识够了,不需要时ȝ着q个问题。只有很的|站真的能达到高q发?nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">单做一个归UI从低成本、高性能和高扩张性的角度来说有如下处理方案: </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">  1、HTML静态化 </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">  2、图片服务器分离 </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">  3、数据库集群和库表散?nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">  4、缓?nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">  5、镜?nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">  6、负载均?一个典型的使用负蝲均衡的策略就是,在Y件或者硬件四层交换的基础上搭建squid集群Q这U思\在很多大型网站包括搜索引擎上被采用,q样的架构低成本、高性能q有很强的扩张性,随时往架构里面增减节点都非常容易?nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">下面也是一个牛人所做的ȝQ跟上面部分相同?nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">高ƈ发时Q性能瓉及当前常用的应对措施 </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">1.数据库瓶颈。Mysqlq发链接100 </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">2.apache q发链接1500 </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">3.E序执行效率 </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">1.有数据库瓉Ӟ当前处理Ҏ无外?MQ集。增加cache(memcached). </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">如:手机之家新系l介l及架构分nQhttp://www.slideshare.net/Fenng/ss-1218991?from=ss_embedQ?nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">是在cache层做优化 </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">又拍|架构(http://www.bopor.com/?p=652Q?nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">是以增加数据库,分表分库的方法解冟?nbsp;<br /></span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">Sina增加了mq(消息队列)来分发数据?nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">q有风站用了key-value的数据库。其实这可以理解成一个持久化的缓存?nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">2.apache瓉?nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">增加服务器。负载均衡。如sina的F5 </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">׃q程数的限制。会把一些基本不变的代码挪出来放到单独的服务器。如css/js/囄?nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">国内成功的案例是tom的cdn </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">又如nginx的横I出世和squid的反向代理都是基于这个原因出来的?nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">3.php的执行效率。原因有多个?nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">1Q?本n的效率低?nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">解决的成功案例是Zend Optimizer ?facebooke的hiphop </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">Taobao是把php代码~译成模块解x率问题?nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">2). 数据库查询效率问题。如可能有order by ,group by {Sql数据问题?nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">q个其实应该归结到数据库设计问题?nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">解决的办法是建立正确的烦引。增加memcache.?nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">对like?用专用的sphinx.和lucence {搜索服务?nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">E序员都应该会用explain对sql语句作分析?nbsp;</span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; " /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">说到底。解决高q发是上面所列技术,E序员要做的是把每个技术具体实现?nbsp;</span> <img src ="http://www.shnenglu.com/mysileng/aggbug/201153.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/mysileng/" target="_blank">鑫龙</a> 2013-06-19 16:33 <a href="http://www.shnenglu.com/mysileng/archive/2013/06/19/201153.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.panxl.cn" target="_blank">þþɫۺϾɫ99</a>| <a href="http://www.michellebranch.cn" target="_blank">99þ99þþƷƬ </a>| <a href="http://www.gz2378.cn" target="_blank">þۺϳDž</a>| <a href="http://www.bestfarms.cn" target="_blank">þۺϾƷһ</a>| <a href="http://www.jkzk.com.cn" target="_blank">þøƬ</a>| <a href="http://www.hbksinukse.cn" target="_blank">þùƷ77777</a>| <a href="http://www.33759gov.cn" target="_blank">þþƷ5555</a>| <a href="http://www.99341.cn" target="_blank">ھƷþþþӰԺһ</a>| <a href="http://www.ttkanshu.cn" target="_blank">ɫۺɫþû</a>| <a href="http://www.gzkyzc.com.cn" target="_blank">ݺɫþþۺ</a>| <a href="http://www.mengdie.net.cn" target="_blank">þݺҹҹ2020һ</a>| <a href="http://www.trjyzj.cn" target="_blank">һaƬþëƬ</a>| <a href="http://www.haibin860313.com.cn" target="_blank">þùƷ</a>| <a href="http://www.gbagba.cn" target="_blank">ݾþþù</a>| <a href="http://www.batlive.cn" target="_blank">ƷþþþþþҹƬ</a>| <a href="http://www.h6343.cn" target="_blank">þ99Ʒһ</a>| <a href="http://www.m20008.cn" target="_blank">þþƷAvӰƬ </a>| <a href="http://www.bltt.net.cn" target="_blank">޾Ʒþò</a>| <a href="http://www.zhengulao.cn" target="_blank">ݺɫþþһ</a>| <a href="http://www.iaro.cn" target="_blank">þþ</a>| <a href="http://www.zhouyimen.cn" target="_blank">þĻԴվ</a>| <a href="http://www.gzquanjing.cn" target="_blank">žȾþƵ</a>| <a href="http://www.jsrst-gov.cn" target="_blank">þ㽶߿ۿ</a>| <a href="http://www.thankers.com.cn" target="_blank">Ʒþþþþۺձ</a>| <a href="http://www.yweishang.cn" target="_blank">Ʒþþþþø</a>| <a href="http://www.a88wx.cn" target="_blank">99þѹƷ</a>| <a href="http://www.szmry.cn" target="_blank">һaƬþëƬ16</a>| <a href="http://www.05xx.cn" target="_blank">þþþۺϹŷһ</a>| <a href="http://www.sskca.cn" target="_blank">Ʒþþþþùţţapp</a>| <a href="http://www.blog91.cn" target="_blank">ŷ޾þav</a>| <a href="http://www.bekin.com.cn" target="_blank">Ʒ99þþþþ</a>| <a href="http://www.hwaq.cn" target="_blank">ŷaƬѿþ</a>| <a href="http://www.lakesys.com.cn" target="_blank">һɫþۺ޾Ʒ</a>| <a href="http://www.gx263.cn" target="_blank">þþƷһ</a>| <a href="http://www.zjhgkjjt.com.cn" target="_blank">պŮ18վþþƷ</a>| <a href="http://www.mdz8.cn" target="_blank">ݺݸɺݺݾþ</a>| <a href="http://www.newcr.cn" target="_blank">þŷƷ</a>| <a href="http://www.exye.cn" target="_blank">þۺɫһ</a>| <a href="http://www.focuan.cn" target="_blank">ۺϾþþ</a>| <a href="http://www.mllp.net.cn" target="_blank">Ʒٸavþ</a>| <a href="http://www.ecscrm.com.cn" target="_blank">ĻƷþþþ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>