<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[BIWEB开源PHP WMS系统创始人ArthurXF肖飞的blog]]></title> 
<link>http://www.bizeway.net/index.php</link> 
<description><![CDATA[网务通 - 网务公司发展之路]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[BIWEB开源PHP WMS系统创始人ArthurXF肖飞的blog]]></copyright>
<item>
<link>http://www.bizeway.net/read.php?591</link>
<title><![CDATA[Hadoop分布式文件系统]]></title> 
<author>ArthurXF &lt;arthurxf@gmail.com&gt;</author>
<category><![CDATA[网站架构]]></category>
<pubDate>Fri, 10 Jun 2011 04:01:13 +0000</pubDate> 
<guid>http://www.bizeway.net/read.php?591</guid> 
<description>
<![CDATA[ 
	一个分布式系统基础架构，由Apache基金会开发。用户可以在不了解分布式底层细节的情况下，开发分布式程序。充分利用集群的威力高速运算和存储。Hadoop实现了一个分布式文件系统（Hadoop Distributed File System），简称HDFS。HDFS有着高容错性的特点，并且设计用来部署在低廉的（low-cost）硬件上。而且它提供高传输率（high throughput）来访问应用程序的数据，适合那些有着超大数据集（large data set）的应用程序。HDFS放宽了（relax）POSIX的要求（requirements）这样可以流的形式访问（streaming access）文件系统中的数据。<br/><br/>诸多优点<br/>　　Hadoop 是一个能够对大量数据进行分布式处理的软件框架。但是 Hadoop 是以一种可靠、高效、可伸缩的方式进行处理的。Hadoop 是可靠的，因为它假设计算元素和存储会失败，因此它维护多个工作数据副本，确保能够针对失败的节点重新分布处理。Hadoop 是高效的，因为它以并行的方式工作，通过并行处理加快处理速度。Hadoop 还是可伸缩的，能够处理 PB 级数据。此外，Hadoop 依赖于社区服务器，因此它的成本比较低，任何人都可以使用。 　　Hadoop带有用 Java 语言编写的框架，因此运行在 Linux 生产平台上是非常理想的。Hadoop 上的应用程序也可以使用其他语言编写，比如 C++。<br/><br/>hadoop架构<br/>　　Hadoop 有许多元素构成。最底部是 Hadoop Distributed File Syst &nbsp;Hadoop 集群的简化视图<br/>em（HDFS），它存储 Hadoop 集群中所有存储节点上的文件。HDFS（对于本文）的上一层是 MapReduce 引擎，该引擎由 JobTrackers 和 TaskTrackers 组成。<br/>HDFS<br/>　　对外部客户机而言，HDFS 就像一个传统的分级文件系统。可以创建、删除、移动或重命名文件，等等。但是 HDFS 的架构是基于一组特定的节点构建的（参见图 1），这是由它自身的特点决定的。这些节点包括 NameNode（仅一个），它在 HDFS 内部提供元数据服务；DataNode，它为 HDFS 提供存储块。由于仅存在一个 NameNode，因此这是 HDFS 的一个缺点（单点失败）。 　　制到多个计算机中（DataNode）。这与传统的 RAID 架构大不相同。块的大小（通常为 64MB）和复制的块数量在创建文件时由客户机决定。NameNode 可以控制所有文件操作。HDFS 内部的所有通信都基于标准的 TCP/IP 协议。<br/>NameNode<br/>　　NameNode 是一个通常在 HDFS 实例中的单独机器上运行的软件。它负责管理文件系统名称空间和控制外部客户机的访问。NameNode 决定是否将文件映射到 DataNode 上的复制块上。对于最常见的 3 个复制块，第一个复制块存储在同一机架的不同节点上，最后一个复制块存储在不同机架的某个节点上。注意，这里需要您了解集群架构。 　　实际的 I/O 事务并没有经过 NameNode，只有表示 DataNode 和块的文件映射的元数据经过 NameNode。当外部客户机发送请求要求创建文件时，NameNode 会以块标识和该块的第一个副本的 DataNode IP 地址作为响应。这个 NameNode 还会通知其他将要接收该块的副本的 DataNode。 　　NameNode 在一个称为 FsImage 的文件中存储所有关于文件系统名称空间的信息。这个文件和一个包含所有事务的记录文件（这里是 EditLog）将存储在 NameNode 的本地文件系统上。FsImage 和 EditLog 文件也需要复制副本，以防文件损坏或 NameNode 系统丢失。<br/>DataNode<br/>　　DataNode 也是一个通常在 HDFS 实例中的单独机器上运行的软件。Hadoop 集群包含一个 NameNode 和大量 DataNode。DataNode 通常以机架的形式组织，机架通过一个交换机将所有系统连接起来。Hadoop 的一个假设是：机架内部节点之间的传输速度快于机架间节点的传输速度。 　　DataNode 响应来自 HDFS 客户机的读写请求。它们还响应创建、删除和复制来自 NameNode 的块的命令。NameNode 依赖来自每个 DataNode 的定期心跳（heartbeat）消息。每条消息都包含一个块报告，NameNode 可以根据这个报告验证块映射和其他文件系统元数据。如果 DataNode 不能发送心跳消息，NameNode 将采取修复措施，重新复制在该节点上丢失的块。<br/>文件操作<br/>　　可见，HDFS 并不是一个万能的文件系统。它的主要目的是支持以流的形式访问写入的大型文件。如果客户机想将文件写到 HDFS 上，首先需要将该文件缓存到本地的临时存储。如果缓存的数据大于所需的 HDFS 块大小，创建文件的请求将发送给 NameNode。NameNode 将以 DataNode 标识和目标块响应客户机。同时也通知将要保存文件块副本的 DataNode。当客户机开始将临时文件发送给第一个 DataNode 时，将立即通过管道方式将块内容转发给副本 DataNode。客户机也负责创建保存在相同 HDFS 名称空间中的校验和（checksum）文件。在最后的文件块发送之后，NameNode 将文件创建提交到它的持久化元数据存储（在 EditLog 和 FsImage 文件）。<br/>Linux 集群<br/>　　Hadoop 框架可在单一的 Linux 平台上使用（开发和调试时），但是使用存放在机架上的商业服务器才能发挥它的力量。这些机架组成一个 Hadoop 集群。它通过集群拓扑知识决定如何在整个集群中分配作业和文件。Hadoop 假定节点可能失败，因此采用本机方法处理单个计算机甚至所有机架的失败。<br/><br/>扩展阅读： <br/>1 <br/>http://hadoop.apache.org<br/>2 <br/>http://bbs.hadoopor.com<br/><br/>Tags - <a href="tag.php?tag=hadoop" rel="tag">hadoop</a>
]]>
</description>
</item><item>
<link>http://www.bizeway.net/read.php?587</link>
<title><![CDATA[如何规范化地群发邮件？]]></title> 
<author>ArthurXF &lt;arthurxf@gmail.com&gt;</author>
<category><![CDATA[网站架构]]></category>
<pubDate>Wed, 30 Mar 2011 09:24:19 +0000</pubDate> 
<guid>http://www.bizeway.net/read.php?587</guid> 
<description>
<![CDATA[ 
	<div class="answer"><div><p class="MsoNormal" align="center"></p><span><br /></span>&nbsp; <strong><span><span>一、<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></strong><strong><span>如何选择邮件系统<span><br /></span></span></strong><span>搭建起邮件服务器，你需要邮件系统的基本知识，<span>SMTP</span>协议规范，<span>MIME</span>编码规范，<span>MX</span>记录的基础知识请参考相应的<span>RFC</span>文档。<span><br /></span></span><p class="MsoNormal"><strong><span><span>（一）</span></span><span>IP</span><span>地址选择</span></strong></p><span>选择放置邮件服务器的<span>IDC</span>，更准确地说是所在的<span>IP</span>段，应选择处于完全静态<span>C</span>类<span>IP</span>段之内，最好<span>B</span>类<span>IP</span>段也是静态的。注意有时运营商分配的单个所谓静态<span>IP</span>，可能处于一段<span>C</span>类动态<span>IP</span>段（如<span>ADSL</span>）之内，这时候你的<span>IP</span>就很容易被认为是动态<span>IP</span>，要知道，动态<span>IP</span>在邮件运营商那里是不受欢迎的。另外要检查<span>IP</span>是否被列入国际黑名单（<span>RBL</span>），很多<span>RBL</span>经常将国内的整个<span>B</span>段列入黑名单的。<span><br /></span></span><p class="MsoNormal"><strong><span><span>（二）</span></span><span>邮件发送软件选择</span></strong></p><span>使用一个权威的第三方发送软件，可以免去你很多烦恼。<span>POSTFIX</span>、<span>QMAIL</span>、<span>FOXMAIL</span>、<span>AIMC</span>、<span>COREMAIL</span>等在编码规范、<span>SMTP</span>会话规范方面都有着可靠的经验，基本不会出现协议级的低等错误。如果你选择自主开发，那就要好好补习<span>RFC</span>文档了。<span><br /></span></span><span>如果你的系统有提供给个人用户自定制内容发邮件的功能，如邀请信，贺卡等，你还需要安装一套基本的反垃圾软件，作为一个自律的发送方，这很有必要。<span><br /></span></span><span><br /></span><strong><span><span>二、<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></strong><strong><span><span>需要</span>建立哪些<span>DNS</span>记录<span><br /></span></span></strong><a id="dns" name="dns"></a><p class="MsoNormal"><span><span>&nbsp;&nbsp;&nbsp; </span></span><span>为什么要为<span>IP</span>做<span>DNS</span>记录？就是要告诉接收方，您使用的是静态的IP和域名，并非伪造，您对这些IP和域名有控制权。</span></p><span>&nbsp;&nbsp;&nbsp; </span><span>下面假设邮件服务器有两台：<span>202.100.100.1<span>&nbsp;&nbsp;&nbsp; </span>202.100.100.2, </span>邮箱域名是&ldquo;<span>@abc.com</span>&rdquo;<span><br /></span></span><p class="MsoNormal"><span><span>&nbsp;&nbsp;&nbsp; </span></span><strong><span><span>（一）</span></span><span>A</span><span>记录</span></strong></p><table border="0" cellspacing="0" cellpadding="0" width="500" class="MsoNormalTable"><tbody><tr><td width="188"><span>主机名<span><br /></span></span></td><td width="145"><span>记录类型<span><br /></span></span></td><td width="167"><span>IP<br /></span></td></tr><tr><td width="188"><span>server1.abc.com<br /></span></td><td width="145"><span>A<br /></span></td><td width="167"><span>202.100.100.1<br /></span></td></tr><tr><td width="188"><span>server2.abc.com<br /></span></td><td width="145"><span>A<br /></span></td><td width="167"><span>202.100.100.2<br /></span></td></tr></tbody></table><span>其中<span>server1.abc.com</span>是在<span>SMTP</span>会话时，向对方服务器发送<span>HELO</span>命令后带的主机名参数。如&ldquo;<span>HELO server1.abc.com</span>&rdquo;。该<span>A</span>记录通常在提供<span>abc.com</span>域名的运营商处可以申请。<span><br /></span></span><span>记录生效后<span>,</span>通过<span>nslookup</span>命令查询应该有如下结果<span>,</span>以<span>QQ</span>邮箱为例<span><br /></span></span><span></span><span><br /></span><span><img src="images/faq/a1.jpg" border="0" />&nbsp;</span><span><br /></span><p class="MsoNormal"><strong><span><span>（二）</span></span><span>PTR</span><span>记录</span></strong></p><table border="0" cellspacing="0" cellpadding="0" width="500" class="MsoNormalTable"><tbody><tr><td width="188"><span>IP<br /></span></td><td width="145"><span>记录类型<span><br /></span></span></td><td width="167"><span>主机名<span><br /></span></span></td></tr><tr><td width="188"><span>202.100.100.1<br /></span></td><td width="145"><span>PTR<br /></span></td><td width="167"><span>server1.abc.com<br /></span></td></tr><tr><td width="188"><span>202.100.100.2<br /></span></td><td width="145"><span>PTR<br /></span></td><td width="167"><span>server2.abc.com<br /></span></td></tr></tbody></table><span>如您所见，<span>PTR</span>记录其实是<span>A</span>记录的反向，<span>A</span>记录将域名解释为<span>IP</span>，<span>PTR</span>记录将<span>IP</span>解释为域名。通常在分配<span>IP</span>地址的电信运营商处可以申请。<span><br /></span></span><p class="MsoNormal"><span>记录生效后<span>,</span>通过<span>nslookup</span>命令查询应该有如下结果，以<span>QQ</span>邮箱为例：</span></p><span><br /></span><span><img src="images/faq/a2.jpg" border="0" />&nbsp;</span> <p class="MsoNormal"><span><strong>（三）<span>TXT</span>记录</strong></span></p><table border="0" cellspacing="0" cellpadding="0" width="500" class="MsoNormalTable"><tbody><tr><td width="188"><span>域名<span><br /></span></span></td><td width="145"><span>记录类型<span><br /></span></span></td><td width="167"><span>IP<br /></span></td></tr><tr><td width="188"><span>abc.com<br /></span></td><td width="145"><span>TXT<br /></span></td><td width="167"><span>202.100.100.1<br /></span></td></tr><tr><td width="188"><span>abc.com<br /></span></td><td width="145"><span>TXT<br /></span></td><td width="167"><span>202.100.100.2<br /></span></td></tr></tbody></table><span>如果你用上了整个<span>C</span>段的<span>IP,</span>像下面这样做就省事多了。<span><br /></span></span><table border="0" cellspacing="0" cellpadding="0" width="500" class="MsoNormalTable"><tbody><tr><td width="188"><span>域名<span><br /></span></span></td><td width="145"><span>记录类型<span><br /></span></span></td><td width="167"><span>IP<br /></span></td></tr><tr><td width="188"><span>abc.com<br /></span></td><td width="145"><span>TXT<br /></span></td><td width="167"><span>202.100.100.0/24<br /></span></td></tr></tbody></table><span>TXT</span><span>记录用于声明本邮箱域名的真正发信服务器<span>IP</span>，同样在提供<span>abc.com</span>域名的运营商处可以申请。<span><br /></span></span><p class="MsoNormal"><span>记录生效后<span>,</span>通过<span>nslookup</span>命令查询应该有如下结果<span>,</span>以<span>QQ</span>邮箱为例：</span></p><span><span>&nbsp;&nbsp;&nbsp; <img src="images/faq/a3.jpg" border="0" /></span><br /></span><span>A</span><span>记录与<span>PTR</span>记录互相搭配，表明你的<span>IP</span>地址是静态的，邮件服务器是固定的。<span>TXT</span>记录能帮助接收方排除仿冒你的域名的来源邮件，从而使你发出的邮件更加可信。</span> <p class="MsoNormal"><strong><span>三、如何规范地群发邮件</span></strong><a id="begin" name="begin"></a></p><span><span>&nbsp;&nbsp;&nbsp; </span></span><span>完成上述工作后，总算可以开始群发邮件了，每天给什么人发？给多少人发？每人发多少？发些什么内容？如何规范地群发邮件？以下是你需要尽可能遵守的原则，</span><span><br /></span><span><p class="MsoNormal"><span><span><strong>（一）控制发信速度</strong></span></span></p><p class="MsoNormal"><span><span>1.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span>邮件服务器都有对IP的发信频率限制，达到了每分钟/每小时等上限时，邮件往往就发不过去，这时候最好的方法是暂停发送，过若干分钟或小时后重试。</span></span></span></span></p><p class="MsoNormal"><span><span>2.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>为避免垃圾邮件泛滥，<span>邮件服务器</span>都有日发信量限制，达到每日上限时，当日就不能再发邮件了，只能暂停发送，留待明日继续发信。</span></p><p class="MsoNormal"><span><span>3.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体; font-size: small">运营商设置的发信速度和发信量的限制，是适合绝大多数情况的，如你确实有需要超量发送，而邮件的信誉度和重要性也相当高，可以尝试联系运营商特别处理。</span></span></span></span></p></span><strong><span><span>（二）规范</span></span><span>邮件格式<span><br /></span></span></strong><p class="MsoNormal"><span><span>1.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>整齐简洁的排版，专业的语言。</span></p><span><span>2.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>尽可能缩小邮件体积，夹大附件的邮件通常不太受欢迎。<span><br /></span></span><p class="MsoNormal"><span><span>3.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>在显眼的地方标有退订入口，会为你的诚意增添几分。</span></p><span><br /></span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="images/faq/b1.jpg" border="0" /></span><strong><span><span>（三）规范</span></span><span>邮件内容<span><br /></span></span></strong><p class="MsoNormal"><span><span>1.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>注册信、密保信等重要邮件请在主题标明关键字眼，一般都不会被过滤。</span>&nbsp;</p><span><span>&nbsp;&nbsp;&nbsp;<img src="images/faq/b2.jpg" border="0" /></span></span><span><br /></span><p class="MsoNormal"><span><span>2.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>纯广告的邮件最好少发，这是最常受用户投诉的，大多数情况下，你的会员并不需要铺天盖地的广告，倘若真要发的，请放慢速度，主题别忘了加上&ldquo;（<span>AD</span>）&rdquo;</span></p><p class="MsoNormal"><span>&nbsp;&nbsp;&nbsp;<img src="images/faq/b3.jpg" border="0" /></span></p><span><br /></span><p class="MsoNormal"><span><span>3.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>订阅信息邮件也是一般不会被过滤的。但若是钻空子借订阅邮件大做广告，将引发更多的用户投诉。</span>&nbsp;</p><span><img src="images/faq/b4.jpg" border="0" /></span> <p class="MsoNormal"><strong><span><span>（四）</span></span><span>规范发件人信息</span></strong></p><span><span>1.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>由系统群发的邮件请使用相同的发件人，<span><a href="mailto:如service@abc.com"><u><span><span>如</span></span><span>service@abc.com</span></u></a></span>就比较好辨认。同时该发件人地址应该能收信，避免退信时失败而造成接收方邮件队列堆积。同时应避免频繁变动发件人或发件域。<span><br /></span></span><span><span>2.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>如果是自动中转邮件，即使原文中发件人使用原始发信方，<span><a href="mailto:如mike@163.com"><u><span><span>如</span></span><span>mike@163.com</span></u></a>,</span>但<span>SMTP</span>会话中的<span>mail <a href="mailto:from指令也应该使用本域发件人service@abc.com,否则容易被认为是冒用163.com"><u><span>from</span><span><span>指令也应该使用本域发件人</span></span><span>service@abc.com,</span><span><span>否则容易被认为是冒用163.com</span></span></u></a></span>的域名发送。<span><br /></span></span><span><span>3.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>注册信、密保信等重要邮件最好与纯广告、订阅信分开不同的<span>IP</span>发送，一但发生广告信发送<span>IP</span>被拒，也不会影响正常会员的注册功能。<span><br /></span></span><span><br /></span><strong><span><br /></span></strong><strong><span><span>（五）</span></span><span>更新有效收件人地址<span><br /></span></span></strong><span>经常滚动更新你的会员列表，去掉已经注销的用户或已经退订的会员。做得更细致一点，通过在邮件中放置一些<span>URL</span>，把长期阅读点击率偏低的会员去掉。诚然，这可能会让你损失那么一点潜在用户，但换来好的口碑。何况，激活长期不阅读的沉睡会员的可能性微乎其微。</span><strong><span><span>（六）</span></span><span>主动清理门户<span><br /></span></span></strong><span>有些功能可以提供会员向外发邮件，例如邀请信，贺卡等。别有用心的人可能利用这些功能群发垃圾邮件、欺诈信息、政治敏感信息等，这无异于养虎遗患。这类会员是坚决要清理掉的。</span> <p class="MsoNormal"><strong><span>四、如何定位发送失败原因</span></strong></p><strong><span><span>（一）</span></span><span><span> </span></span><span>定位问题<span><br /></span></span></strong><p class="MsoNormal"><span>定位问题，最直接的方式是查看系统日志，捕捉<span>SMTP</span>会话中接收方返回的错误信息。不同的邮件软件有不同的返回信息，但基本相似。这里需要定位的是究竟是系统问题还是用户问题。我们以下面的例子说明：</span></p><span><br /></span><span><strong>系统问题：<span><br /></span></strong></span><span>Connection time out<br /></span><span>Open relay denied<br /></span><span>IP involved in rbl<br /></span><span>Server refused mail service</span><span><strong>用户问题：<span><br /></span></strong></span><span>User not found<br /></span><span>Mail size exceeded<br /></span><span>No space in mail box<br /></span><span><br /></span><span>正像你看到的，系统问题一般是由网络、<span>RBL</span>、内容过滤，会话规范、频率限制一类的全局问题导致。而用户问题一般是由对方用户名、邮箱空间之类的个别问题导致的。<span><br /></span></span><span>我们需要去解决的，通常仅仅是系统问题。</span><span><span>&nbsp; </span><br /></span><strong><span><span>（二）</span></span><span><span> </span></span><span>沟通申诉<span><br /></span></span></strong><span>沟通申诉之前，你需要准备一些资料，以便提高排查速度和准确率。</span><span><span>1.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>本方发信<span>IP</span>地址<span><br /></span></span><span><span>2.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>返回错误信息的接受方<span>IP</span>地址<span><br /></span></span><span><span>3.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>错误日志，最好具备清晰易懂的日志输出，有完整的时间点，收发件人，错误信息等记录。<span><br /></span></span></div></div><br/>Tags - <a href="tag.php?tag=%E7%BE%A4%E5%8F%91%E9%82%AE%E4%BB%B6" rel="tag">群发邮件</a>
]]>
</description>
</item><item>
<link>http://www.bizeway.net/read.php?586</link>
<title><![CDATA[sohu退信代码]]></title> 
<author>ArthurXF &lt;arthurxf@gmail.com&gt;</author>
<category><![CDATA[网站架构]]></category>
<pubDate>Sun, 20 Mar 2011 05:56:07 +0000</pubDate> 
<guid>http://www.bizeway.net/read.php?586</guid> 
<description>
<![CDATA[ 
	若您的邮件无法送达搜狐各域邮箱，并收到退信。请根据退信里的关键字，在下面的表格中查询具体的退信原因。<br/>退信代码 &nbsp;说明 &nbsp;解决方法 &nbsp;<br/>450 4.1.8 发件人被拒 请检查发件人地址 <br/>554 5.7.1 发件人被拒 请检查发件人地址 <br/>504 5.5.2 发件人被拒 请检查发件人地址 <br/>550 5.1.1 接收人被拒 请检查收件人地址 <br/>554 5.7.1 接收人被拒 请检查收件人地址 <br/>450 4.1.8 发件人被拒 请查看DNS配置 <br/>552 5.3.4 邮件大小超限 请减小邮件的大小 <br/>503 5.5.0 连接被拒 遵守协议规则 <br/>553 5.7.0 IP地址被拒 停止发信,等待其解禁 <br/>553 5.7.1 发件人被拒 停止发信,等其解禁 <br/>553 5.7.2 收件人被拒 联系收件人修改邮箱配置 <br/>553 5.7.3 内容被拒 停止发信,等待其解禁 <br/>553 5.7.4 IP地址被拒 停止发信,等待其解禁 <br/>421 4.2.1 临时错误 重试 <br/>553 5.7.3 &nbsp;不支持附件发送 取消附件重试 <br/><br/>如果上述信息仍不能解决你的问题，请联系abuse@sohu-inc.com 寻求帮助<br/>Tags - <a href="tag.php?tag=%E9%80%80%E4%BF%A1%E4%BB%A3%E7%A0%81" rel="tag">退信代码</a>
]]>
</description>
</item><item>
<link>http://www.bizeway.net/read.php?585</link>
<title><![CDATA[什么是SPF记录？如何设置SPF来防止我的邮件被拒收呢？]]></title> 
<author>ArthurXF &lt;arthurxf@gmail.com&gt;</author>
<category><![CDATA[网站架构]]></category>
<pubDate>Thu, 17 Mar 2011 07:32:17 +0000</pubDate> 
<guid>http://www.bizeway.net/read.php?585</guid> 
<description>
<![CDATA[ 
	<div>什么是SPF记录？如何设置SPF来防止我的邮件被拒收呢？</div><div><div><div><div><span style="color: #555555"><strong>什么是SPF记录？</strong></span></div><div><span style="font-size: 14px">定义：</span></div><div><span style="font-size: 14px">(Sender Policy Framework) 的缩写，一种以IP地址认证发信人身份的技术，</span></div><div><span style="font-size: 14px">作用：</span></div><div><span style="font-size: 14px"><span style="font-size: 14px"><span style="font-size: 14px"><span style="font-size: 14px">可以<span style="font-family: 宋体; font-size: 10pt; mso-ascii-font-family: 'Times new roman'; mso-hansi-font-family: 'Times new roman'; mso-bidi-font-family: 'Times new roman'; mso-font-kerning: 1.0pt; mso-ansi-language: en-Us; mso-fareast-language: ZH-Cn; mso-bidi-language: Ar-sA">避免伪造地址的垃圾邮件，避免有其他人伪造我的域名来投递。提高发送外域邮箱的成功率。</span></span></span></span></span></div><div><span style="font-size: 14px">原理：</span></div><div><span style="font-size: 14px"><span style="font-size: 14px"><span style="font-size: 14px"><span style="font-size: 14px"><span style="font-family: 'Times new roman', 'serif'; font-size: 10pt; mso-font-kerning: 1.0pt; mso-ansi-language: en-Us; mso-fareast-language: ZH-Cn; mso-bidi-language: Ar-sA; mso-fareast-font-family: 宋体">spf</span><span style="font-family: 宋体; font-size: 10pt; mso-ascii-font-family: 'Times new roman'; mso-hansi-font-family: 'Times new roman'; mso-bidi-font-family: 'Times new roman'; mso-font-kerning: 1.0pt; mso-ansi-language: en-Us; mso-fareast-language: ZH-Cn; mso-bidi-language: Ar-sA">规则规定了一个域名下的邮件必须通过哪些</span><span style="font-family: 'Times new roman', 'serif'; font-size: 10pt; mso-font-kerning: 1.0pt; mso-ansi-language: en-Us; mso-fareast-language: ZH-Cn; mso-bidi-language: Ar-sA; mso-fareast-font-family: 宋体">smtp</span><span style="font-family: 宋体; font-size: 10pt; mso-ascii-font-family: 'Times new roman'; mso-hansi-font-family: 'Times new roman'; mso-bidi-font-family: 'Times new roman'; mso-font-kerning: 1.0pt; mso-ansi-language: en-Us; mso-fareast-language: ZH-Cn; mso-bidi-language: Ar-sA">服务器来发送。一个域名可以为自己创建一个</span><span style="font-family: 'Times new roman', 'serif'; font-size: 10pt; mso-font-kerning: 1.0pt; mso-ansi-language: en-Us; mso-fareast-language: ZH-Cn; mso-bidi-language: Ar-sA; mso-fareast-font-family: 宋体">txt</span><span style="font-family: 宋体; font-size: 10pt; mso-ascii-font-family: 'Times new roman'; mso-hansi-font-family: 'Times new roman'; mso-bidi-font-family: 'Times new roman'; mso-font-kerning: 1.0pt; mso-ansi-language: en-Us; mso-fareast-language: ZH-Cn; mso-bidi-language: Ar-sA">解析记录，在这个解析记录里面是这个域名下所有的</span><span style="font-family: 'Times new roman', 'serif'; font-size: 10pt; mso-font-kerning: 1.0pt; mso-ansi-language: en-Us; mso-fareast-language: ZH-Cn; mso-bidi-language: Ar-sA; mso-fareast-font-family: 宋体">smtp</span><span style="font-family: 宋体; font-size: 10pt; mso-ascii-font-family: 'Times new roman'; mso-hansi-font-family: 'Times new roman'; mso-bidi-font-family: 'Times new roman'; mso-font-kerning: 1.0pt; mso-ansi-language: en-Us; mso-fareast-language: ZH-Cn; mso-bidi-language: Ar-sA">服务器的</span><span style="font-family: 'Times new roman', 'serif'; font-size: 10pt; mso-font-kerning: 1.0pt; mso-ansi-language: en-Us; mso-fareast-language: ZH-Cn; mso-bidi-language: Ar-sA; mso-fareast-font-family: 宋体">ip</span><span style="font-family: 宋体; font-size: 10pt; mso-ascii-font-family: 'Times new roman'; mso-hansi-font-family: 'Times new roman'; mso-bidi-font-family: 'Times new roman'; mso-font-kerning: 1.0pt; mso-ansi-language: en-Us; mso-fareast-language: ZH-Cn; mso-bidi-language: Ar-sA">地址。</span> </span></span></span></span></div><div><span style="font-size: 14px">接收邮件方会首先检查对方邮箱后缀域名的SPF记录，来确定发件人的smtp服务器的IP地址是否被包含在SPF记录里面，如果在，就认为是一封正确的邮件，否则会认为是一封伪造的邮件进行退回。</span></div><div>&nbsp;</div><div><p><strong>查询txt记录的方法：</strong></p><p><strong>nslookup</strong></p><p>&gt; <strong>set q=txt</strong></p><p>&gt; net263.com</p><p>Server:&nbsp; ns2.263isp.net</p><p>Address:&nbsp; 211.150.124.66</p><p>Non-authoritative answer:</p><p>net263.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; text =</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;v=spf1 include:spf.263xmail.com ~all&quot;</p><p><strong>查询txt记录下对应的ip的方法</strong></p><p>查询 include 后面字段的域名即可</p><p>&gt; set q=txt</p><p>&gt; <strong>spf.263xmail.com</strong></p><p>Server:&nbsp; ns2.263isp.net</p><p>Address:&nbsp; 211.150.124.66</p><p>Non-authoritative answer:</p><p>spf.263xmail.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; text =</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;v=spf1 ip4:211.150.67.0/24 ip4:211.150.96.0/24 ip4:211.150.100.0/24 ip4</p><p>:211.157.128.0/24 ip4:211.150.64.0/24 ip4:211.150.122.0/24 ip4:74.86.11.0/28 ip4</p><p>:63.217.87.0/28 ip4:211.157.224.0/24 ~all&quot;</p><p>&nbsp;以上所有的IP都SMTP的服务器IP地址</p><p>~all和?all 代表不确定的，我们的mx服务器不会去拒收</p><p>-all 代表确定的，一旦发信人没有使用txt记录下规定的ip投递，我们的mx服务器就会拒收。</p></div><div><span style="font-size: 14px">&nbsp;</span></div></div><div><strong>如何设置域名邮箱的SPF记录呢？</strong></div><div>&nbsp;</div><div><div>为了提升域名邮箱发送外域（@qq.com以外的邮箱）邮件的成功率，建议您给自己的域名设置一条TXT记录来避免这种情况。</div><div>&nbsp;</div></div><div>TXT记录值为：<span style="color: #ff0000; font-size: 14px">v=spf1 include:spf.mail.qq.com ~all</span></div><div><span style="color: #ff0000; font-size: 14px">附263企邮箱的TXT记录值为：v=spf1 include:spf.263xmail.com ~all</span></div><div>&nbsp;</div><div>如图：万网的设置页面</div><div>1.从<a href="http://diy.hichina.com/">diy.hichina.com</a>处登录域名管理系统；</div><div>&nbsp;</div><div>2.在TXT（正文字串）处设置一条TXT记录，如下：</div><div>&nbsp;</div><div><img src="http://service.mail.qq.com/images/faq/%7BD8BDD255-042E-4B1D-8E32-8A6C791E8E0F%7D.tmp" border="0" alt="什么是SPF记录？如何设置SPF来防止我的邮件被拒收呢？" title="什么是SPF记录？如何设置SPF来防止我的邮件被拒收呢？" height="79" /></div><div>&nbsp;</div><div>注：<span style="color: #ff0000; font-size: 14px">易名中国</span>，<span style="color: #ff0000; font-size: 14px">中资源</span>目前不支持设置TXT记录&nbsp;</div><div>--------------------------------------------------------------------------------------------------</div><div>如何增加SPF记录<br />非常简单，在DNS里面添加TXT记录即可。登陆<a href="http://www.openspf.org/">http://www.openspf.org/</a>在里面输入你的域名，点击Begin，然后会自动得到你域名的一些相关信息。<br />a 你域名的A记录，一般选择yes，因为他有可能发出邮件。<br />mx 一般也是yes，MX服务器会有退信等。<br />ptr 选择no，官方建议的。</div><div><p>a：有没有其他的二级域名？比如：mail.abc.com和www不在一台server上，则填入mail.abc.com。否则清空。<br />mx: 一般不会再有其他的mx记录了。<br />ip4： 你还有没有其他的ip发信？可能你的smtp服务器是独立出来的，那么就填入你的IP地址或者网段。<br />include: 如果有可能通过一个isp来发信，这个有自己的SPF记录，则填入这个isp的域名，比如：dgcgw.com<br />~all: 意思是除了上面的，其他的都不认可。当然是yes了。</p><p>好了，点击Continue&hellip;..<br />自动生成了一条SPF记录，比如abc.com的是<br />v=spf1 a mx ~all<br />并且在下面告诉你如何在你的bind里面添加一条<br />abc.com. IN TXT &ldquo;v=spf1 a mx ~all&rdquo;</p><p>加入你的bind，然后ndc reload即可。<br />检查一下：<br />dig -t txt extmail.org</p><p>如果您的域名是我们的dns服务器进行解析的，我们的网页上没有设置TXT记录的地方，但是如果你的DNS主server是在在我们这里的，我们可以代帮忙设置。设置完毕后您即可以通过使用spf策略进行垃圾邮件验证了。</p></div></div></div><br/>Tags - <a href="tag.php?tag=spf" rel="tag">spf</a>
]]>
</description>
</item><item>
<link>http://www.bizeway.net/read.php?584</link>
<title><![CDATA[正常邮件被误判到不明文件夹的解决方案]]></title> 
<author>ArthurXF &lt;arthurxf@gmail.com&gt;</author>
<category><![CDATA[网站架构]]></category>
<pubDate>Thu, 17 Mar 2011 07:30:19 +0000</pubDate> 
<guid>http://www.bizeway.net/read.php?584</guid> 
<description>
<![CDATA[ 
	对于正常邮件被投递到不明文件夹，可以指导用户按采用如下几种方法进行处理：<br/><br/> &nbsp; &nbsp; &nbsp;1、通过WEBMAIL登录邮箱，打开收到不明文件夹中的邮件，点击发件方人右侧的“这不是垃圾邮件”按钮，这样会系统会自动把邮件由不明文件夹移收到收件箱中，并自动把发件方地址添加到地址本，以后所有来自该地址给您发送的邮件均会投递到收件箱中。<br/><br/> &nbsp; &nbsp; &nbsp;2、登录到超级域管理员，使用“域过滤及黑白名单管理”中“邮件地址白名单”或“邮件域名白名单”功能将发件方地址或发件方域添加到白名单中，以后发件方地址或发件域给贵公司所有企业邮箱发送的邮件均会投递到收件箱中。<br/><br/> &nbsp; &nbsp; &nbsp; 3、将收到不明文件夹的正常邮件做为附件转发以“邮件误判”为主题发送至管理员的信箱，公司管理员的反垃圾部门会对邮件特征重新进行分析，使邮件系统慢慢将此类邮件识别为正常邮件，以减小误判率。<br/><br/>Tags - <a href="tag.php?tag=%E6%AD%A3%E5%B8%B8%E9%82%AE%E4%BB%B6%E8%AF%AF%E5%88%A4" rel="tag">正常邮件误判</a>
]]>
</description>
</item><item>
<link>http://www.bizeway.net/read.php?583</link>
<title><![CDATA[IP黑名单解决办法]]></title> 
<author>ArthurXF &lt;arthurxf@gmail.com&gt;</author>
<category><![CDATA[网站架构]]></category>
<pubDate>Thu, 17 Mar 2011 07:28:41 +0000</pubDate> 
<guid>http://www.bizeway.net/read.php?583</guid> 
<description>
<![CDATA[ 
	1、IP黑名单的机制：把垃圾邮件过滤到不明文件夹，只是临时的解决方案，如果想从根本上解决这个问题，必须对垃圾邮件源进行控制，目前263的邮件系统为了对垃圾邮件源进行控制，会时时对263企业邮局MX服务器投递垃圾邮件的IP进行统计，如果单个IP向我们MX服务器投递垃圾邮件达到一定数量时，我们的反垃圾网关会自动把这个IP加入到黑名单，禁止这个IP向我们MX服务器投递邮件。<br/><br/>2、IP黑名单的现像：对于发件方服务器IP被加到黑名单的，发件方服务器连接263企业邮箱服务器投递邮件，在rcpt to命令后，263服务器会返回"598 ip address in blacklist Please see http://211.150.100.59:8083/blacklist/blacklist.htm for more details”提示，发件方邮件系统收到该提示后，会给发件方信箱弹回包含该提示的退信。<br/><br/>3、IP黑名单的处理方法：请发件方邮件服务提供商的邮件管理员直接同abuse@net263.com信箱（263反垃圾专员的联系信箱）联系放开，abuse@net263.com信箱会把263服务器提取到垃圾邮件样本提供给发件方邮件服务提供商的邮件管理员，在对方作出处理或保证以后不在发送垃圾邮件后，反垃圾专员会对IP进行放开。<br/><br/>Tags - <a href="tag.php?tag=%E9%BB%91%E5%90%8D%E5%8D%95" rel="tag">黑名单</a>
]]>
</description>
</item><item>
<link>http://www.bizeway.net/read.php?553</link>
<title><![CDATA[如何选择IDC托管公司呢？]]></title> 
<author>ArthurXF &lt;arthurxf@gmail.com&gt;</author>
<category><![CDATA[网站架构]]></category>
<pubDate>Sat, 22 May 2010 11:02:15 +0000</pubDate> 
<guid>http://www.bizeway.net/read.php?553</guid> 
<description>
<![CDATA[ 
	打开Google，输入"服务器托管"关键字，有135万条搜索结果，而baidu更是有313万条搜索结果。在我们惊叹科技发达的同时，也是我们对于过多选择的迷茫。这么多商家，有些价格较贵，有的却是低的离谱，一时难以弄清其中的玄机，我到底该选择哪家IDC呢？ <br/>　　其实我们先来明确我们自己的目标，然后根据我们自己的目标来筛选服务公司。托管服务器，无外乎下面四个因素：<br/><br/>　　1、价格，这个一般是最为关键的选择因素。<br/><br/>　　解决办法：毕竟数据中心毕竟只有那么几个，可以先选择三个，随机找一些idc公司报价，选择中低的几家报价，然后对报价公司进行了解，基本就能找到合适的报价。<br/><br/>　　2、是服务器要安全，不能钱付了，服务器安全都无法保证。<br/><br/>　　解决办法：去托管服务公司办公场所参观一下，营业执照看一下，销售人员也见面聊聊。<br/><br/>　　3、速度要好，只要是上海电信、网通运营的机房，基本速度都还可以。<br/><br/>　　解决办法：确认是上海电信/网通的机房，基本上速度没有问题。有一种意外情况就是代理公司自身机柜流量过大，被电信、网通限制后，可能速度会影响。<br/><br/>　　4、服务要过得去，看看公司运营时间长短，是不是有24小时专人值班。<br/><br/>　　解决办法： 通过网站或者电话确认非工作时间是否有人值班，网上搜索一下有没有大量负面报道等等。<br/><br/>Tags - <a href="tag.php?tag=idc%E6%89%98%E7%AE%A1" rel="tag">idc托管</a>
]]>
</description>
</item><item>
<link>http://www.bizeway.net/read.php?552</link>
<title><![CDATA[上海地区IDC主机托管业务发展现状——IDC运营商评测]]></title> 
<author>ArthurXF &lt;arthurxf@gmail.com&gt;</author>
<category><![CDATA[网站架构]]></category>
<pubDate>Sat, 22 May 2010 10:34:26 +0000</pubDate> 
<guid>http://www.bizeway.net/read.php?552</guid> 
<description>
<![CDATA[ 
	　　近年来，各行各业都对网络的需求有了飞速的增长，特别是网络游戏和企业信息化的发展，大大促进了互联网数据业务(IDC)，特别是主机（服务器）托管业务的发展。目前IDC市场上，提供主机托管业务的运营商主要分为电信级运营商、 专业IDC服务提供商两大类。其中电信级运营商有着得天独厚的网络资源，拥有大量的数据中心（IDC机房），其庞大的接入用户群可以直接通过网络，登录托管到运营商的服务器，而无需通过其他厂商来中转。因而占有着IDC市场的绝大多数份额。<br/><br/>　　在上海，电信级的IDC运营商有上海电信的长途通信事业部、上海热线数据中心、上海电信信产公司，以及上海联通、上海网通等，这些电信级的运营商通常拥有多个自主兴建或者与其他服务商合作兴建的数据中心（IDC机房），并且自主或合作运营并提供技术维护工作；业务的开拓则是由运营商自身以及代理公司来共同进行；在这些运营商中，上海电信拥有的数据中心数量最多，网络资源也最丰富，因此所占的市场份额也是最多的。一些大型的门户网站、游戏网站、多媒体供应商、大型电子商务网站等对流量要求特别高的公司通常都是这类运营商的客户。<br/><br/>　　其次，非电信级的专业IDC服务提供商，比如上海世纪互联、安莱、润科、中科互联优势等。这些公司的特点是也有自主兴建的数据中心，虽然在数量上没有电信级运营商那么多，但是由于多年来一直专注于提供数据服务，因此在技术维护和增值业务的服务上比较完善，通常获得的评价比较高。其中上海世纪互联拥有多年的IDC运营经验，是电信外高桥机房、网通漕河泾以及苏州科技广场机房的合作开发商，参与了这些机房的兴建和运营管理，拥有独立的技术维护部门，可以直接承接机房托管业务的开拓和维护，并对托管的服务器提供各种技术维护、流量监控、安全保护、灾难备份以及负载均衡等增值服务，而且上海世纪互联是第一家推出7×24小时监控服务的公司，现在这一服务已经成为行内IDC服务商衡量服务级别的关键标准。而安莱、润科、中科互联优势等公司则通过代理运营商的机房和自主运营自身机房的形势，向企业用户提供IDC托管及其他增值服务。这些比较资深而技术力量雄厚的服务提供商的客户通常是一些制造业企业、连锁或跨国机构、互联网内容服务供应商、电子商务公司等等。<br/><br/>　　在非电信级别的专业IDC服务提供商中，还有数量很多的中小型代理商或增值服务商。这些通常以代理的形式经营其他运营商的机房托管业务，对于网络维护等工作也依赖运营商的技术部门来提供，或是向代理的托管客户提供系统集成、应用管理等一系列的增值服务。这些提供商由于没有自己的机房，完全靠代理其他运营商的机房托管业务，因此竞争十分激烈，他们的客户也通常是一些中小型的网站或企业。<br/><br/>　　虽然电信级的运营商拥有庞大的骨干网和用户资源，在通信运营上拥有全程全网的综合优势，在市场上占有绝对优势。但是目前的IDC市场已经进入了专业分工时代，任何一家IDC运营商都不可能独揽所有的环节。专业的IDC服务商在专业技术维护与IT支持方面拥有比较强的力量，能够提供比较全面而深入的应用服务。而电信运营商在技术服务方面则比较薄弱。因此只有电信运营商与专业的IDC服务商进行合作，互相取长补短，才能向客户提供更完善的服务，并发掘更多的增值服务的利润点，提高服务附加值，使IDC市场不断向着全面而有序的方向发展。<br/><br/><br/><br/>Tags - <a href="tag.php?tag=idc%E8%BF%90%E8%90%A5%E5%95%86" rel="tag">idc运营商</a>
]]>
</description>
</item><item>
<link>http://www.bizeway.net/read.php?551</link>
<title><![CDATA[上海地区IDC主机托管业务发展现状——IDC机房评测]]></title> 
<author>ArthurXF &lt;arthurxf@gmail.com&gt;</author>
<category><![CDATA[网站架构]]></category>
<pubDate>Sat, 22 May 2010 10:33:47 +0000</pubDate> 
<guid>http://www.bizeway.net/read.php?551</guid> 
<description>
<![CDATA[ 
	　　服务器托管是互联网数据中心业务（IDC）的一个重要组成部分。对现代企业来说，公司要搭建自己的内部网络以及和外部互联网相连接，必须要有一个物理条件要求十分严格的机房来存放主机（服务器）并与Internet相连接。而通常搭建机房并配备专门的人力来维护机房的运转都会占用比较大的资源，因此国际上流行的做法是由各大电信运营商和数据服务提供商来兴建大型机房，向需要的企业提供主机托管或租用等一系列增值服务。统一管理机房的线路安排、机房设备、网络安全等等，为企业提供了便利，缩减了额外支出。<br/><br/>　　目前在全国范围内，上海是机房最多的城市之一。机房主要是由电信、网通、联通运营商自主或与其他数据服务提供商合作兴建的。而在上海地区机房资源最丰富的当属上海电信。其中上海电信长途通信部（简称长信）旗下的机房有：武胜、横浜、漕宝路、花木和真如机房；上海信息产业（集团）有限公司（上海热线）旗下的机房有：外高桥、张江、信息大楼、智慧广场机房；信息网络部（简称信网或者数据）旗下的机房有：海宁、云莲、同普、国立、漕溪、复华机房。另外上海联通和网通也有部分机房，分别是联通的共和新路机房，上海网通乐凯机房、网通漕河泾机房等等。其中电信的外高桥机房和网通的漕河泾机房都是由资深IDC提供商上海世纪互联信息系统有限公司协助运营商共同建造并合作运营的。另外还有一些厂商自行建造的机房：如润科在金桥、安莱在源深路、中科互联在淮海路建造的机房。<br/><br/>　　不同机房在带宽和设施上各有不同，而每个机房又是由运营商自己以及不同的合作或代理公司负责运营的，如何根据企业实际需求选择合适的机房，以及寻找最佳的运营企业对于企业来说是至关重要的。<br/><br/>　　就出口条件来说，武胜和横浜是最好的，这两个机房是互为冗余的总出口，所以出口条件是最好的，但是由于机房建设较早，目前设备比较陈旧，限制流量，即便如此武胜机房的出租率还是很高，已经基本没有空位可以提供。<br/><br/>　　带宽最宽的机房是上海电信的外高桥和真如机房，拥有6~7G骨干网接入。特别适合各种流量需求大的大型传统制造业企业、互联网内容提供商（ICP）、媒体和各类网站等类型公司。外高桥机房是国家A级机房，由具有丰富运营经验的世纪互联提供的24*7的全天候技术维护服务，为广大的使用者提供了畅通安全的网络。目前已有多家大、中型企业将自己的服务器通过托管、租用的方式设在外高桥机房。<br/><br/>　　另外由于上海电信连接国际Internet的带宽因联接海外的客户众多，国际带宽已经趋于饱和。而网通漕河泾机房因为连接海外的客户比较少，所以国际频宽比较大，从而成为大部份需要连接海外（包括港澳台地区）的企业用户的首选，已经拥有了一定数量的制造型和电子商务型外资企业用户。 <br/><br/>　　其它一些资源一般的机房，由于对流量、电力等资源的限制比较严格，所以比较适合一些对于流量要求不大的企业，比如：咨询、广告、美容等行业的用户。<br/><br/><br/><br/>Tags - <a href="tag.php?tag=idc%E6%9C%BA%E6%88%BF" rel="tag">idc机房</a>
]]>
</description>
</item><item>
<link>http://www.bizeway.net/read.php?549</link>
<title><![CDATA[上海电信IDC机房及其外部资源介绍]]></title> 
<author>ArthurXF &lt;arthurxf@gmail.com&gt;</author>
<category><![CDATA[网站架构]]></category>
<pubDate>Sat, 22 May 2010 10:11:23 +0000</pubDate> 
<guid>http://www.bizeway.net/read.php?549</guid> 
<description>
<![CDATA[ 
	　　上海市电信公司目前从事IDC业务，主要有三个公司，即上海市电信公司长途通信部（简称长信），上海信息产业（集团）有限公司（上海热线）和上海市电信有限公司信息网络部（简称信网或者数据）。 <br/><br/>　　长信：武胜，横浜，花木和真如机房。热线： 外高桥 张江机房 信息大楼 智慧广场也能算。信网： 海宁，云莲 ，同普也能算。 <br/><br/>　　不在上面的上海其它电信机房，一般都是电信三产公司或者电信合作公司负责运营的，当然也可能有些许不准确，这之间的产权相对比较复杂，像长信的花木机房是上海移动修建，目前和长信合用。作为国家骨干节点机房 武胜机房 它是速度最好的机房，目前该机房资源紧张，基本无法进新设备。上海其它机房至少都比他多一跳或者两跳，真正想要最好的速度，一定要想办法进去，目前真如机房是他们目前重点推荐机房，目前中国网域网(7x24.cn)也已进驻该数据中心，真如机房机柜租用价格相对比较合理。 <br/><br/>　　上海其它IDC机房： <br/><br/>　　上海网通机房主要是乐凯大厦和漕河泾机房，移动主要是花木机房。双线机房：目前主要是 有线通的张江机房，接入电信5G 网通2G 移动1G,是上海首家多ISP接入机房，但速度不是很好，相对比较稳定，中国网域网也已进驻该机房。 <br/><br/>　　美国ISP情况 <br/><br/>　　旧金山和西雅图都是美国越洋数据汇聚点，相对而言速度好点，像内地城市亚特兰大相对而言价格便宜一些，另外美国大多isp都是按流量来计费，所以大家根据自己的需要选择不同城市接入商。 <br/><br/>　　香港ISP情况 <br/>　　由于香港本地网络范围太小，无法和世界其它大ISP互换资源，所以它是全球唯一一个流量有国际带宽和本港带宽之分的地区。主要是和记黄埔 电讯盈科 新加坡电讯 和日本NTT接入。<br/><br/>　　点评：由于长信资源相对紧张，长信其它机房相继都涨价30％，而且还很难拿到新的机柜，外高桥机房以前的机柜也全部销售一空。这个现象在现在互联网时代确实比较罕见。很多分析家认为是由于游戏过渡发展，加上个人网站和企业信息化发展迅速，电信估计不足造成的。目前真如机房二期工程很快就要开始了，另外还计划在张江规划新的数据中心。热线目前已经在外高桥建设扩容610个机柜的新层面。另外一些民营企业，外资企业也相继建设新的数据中心，上海周边电信公司也相继投入新的数据中心，不少上海IDC公司纷纷抢占外地市场，据有关人士分析，07年数据中心资源会相对饱和，上海市电信服务器托管价格相对会回落。<br/>Tags - <a href="tag.php?tag=%E4%B8%8A%E6%B5%B7idc" rel="tag">上海idc</a>
]]>
</description>
</item><item>
<link>http://www.bizeway.net/read.php?548</link>
<title><![CDATA[机房介绍——中国电信八大节点城市是哪几个?]]></title> 
<author>ArthurXF &lt;arthurxf@gmail.com&gt;</author>
<category><![CDATA[网站架构]]></category>
<pubDate>Sat, 22 May 2010 09:19:59 +0000</pubDate> 
<guid>http://www.bizeway.net/read.php?548</guid> 
<description>
<![CDATA[ 
	成都 <br/>成都数据中心是中国电信全国8大节点之一，可支配带宽资源丰富，与Chinanet骨干网节点带宽60G,节点带宽10G。机房内部网络全部采用千兆连接核心层与汇聚层，双百兆冗余到接入层的无瓶颈交换式结构，局域网采用千兆与百兆混合交换式可监控网络，中心网络设备确保高可靠性架构，做到无单点故障q#,分支网络提供冗余设备及线路，可针对客户数据传输，维护的需求提供XDSL，DDN，ISDN等多种接入手段，并能提供与国内Chinanet主要节点城市连接的长途专线.<br/>9 g4 {7 M0 W/ L& f5 S<br/>南京<br/>南京电信作为CHINANET的八大节点之一，南京电信拥有富足的网络资源，与同是八大节点之一的上海电信<br/>O2 V* Q# E4 L3 q* `<br/>相比，南京与其他省市之间的骨干网络拥塞程度较轻，有较大的发展空间。省节点带宽资源丰厚 (20G),4 M资源利用率适度 ，有较大的发展空间， 两个标准的 IDC 机房(龙江，苜蓿园)一个在建的超大机房(游府"西街)，交通极为便利。齐备的机房设施(电力，恒温，安全).<br/>西安<br/>西安是中国公用计算机网络和中国多媒体信息网络在西北五省的网络核心中枢，同时，西安又是西北五省和中国公用计算机网络（CHINANET）连接的必由之路，拥有最大的网络传输线路。因此，在西安建立的互3联网数据中心（IDC）必将拥有得天独厚的网络资源。<br/>西部数据中心，是中国电信集团公司于2002年投资建设的工程。是中国电信规划的全国四大IDC枢纽之一是面向国内、国际各类型企业、事业客户提供大规模、高质量、安全可靠的服务器托管、带宽租用以及o灾备中心建设、应用服务外包的超大型互联网数据交换中心。拥有众多国际知名企业合作伙伴构成的庞大用户群体，具备国际先进的软硬件环境和优质的服务水平。是目前投入运营中为数不多的直联CHINANET骨-干核心节点的数据中心机房，目前出口以6×10G高速光纤联接（目前全国电信IDC中最高）。为网络游戏的运营及西部市场拓展提供一流的IDC服务.<br/>西部数据中心有北经济技术开发区和高新技术产业开发区两个核心机房，面积总共5000平方米。每个机以2*20G的光纤直接接入CHINANET骨干，与省网并行，内部网络双路冗余备份，提供不间断电源，拥有良(好的防火、排水、通风设施，机房常年保持恒温、恒湿，可全面满足大型网站增长的需求, 数据中心的维护管理由西安电信具有数十年数据线路维护经验和技术的60名专业工程师，技术支持由20名高级网络工程师负责，从其软件、硬件环境而言，堪称目前国内一流的专业互联网数据中心.<br/>武汉<br/>武汉电信是全国重要的通信枢纽和原中国电信第三大业务领导单位,其综合通信名列全国省会城市前5位0.处于国家骨干通信网8纵8横一级通信干线中心位置。是中国电信建设的三大高速光缆环网(南环,西环和北环)的交汇中心。武汉热线数据中心属华中最大ISP“湖北电信武汉市分公司”，与中国电信(CHINANET)骨干网网过千兆光纤以千兆以太网方式接入主干网。具有高速、直连、高可用性、可扩展性、高安全性。<br/>沈阳<br/>沈阳是CHINANET八大节点之一，主要是作为CHINANET在东北地区的网络中心，在96年开通，由于东北大部分地区都被网通网络覆盖，因此CHINANET沈阳节点是八大节点中规模最小的。<br/>广州<br/>广州市Internet服务中心于1995年10月1日投入试运行，系统于1996年1月1日正式开通。广州市Internet6服务中心节点作为中国公用互联网络服务系统ChinaNET的一个骨干节点，与北京和上海的Internet节点连接，与它们以及其它地区的节点共同构成ChinaNET骨干网。广州节点是继北京、上海之后的第三个国际出口，也是广东乃至全国最大的国际出口之一。<br/>上海<br/>上海电信是中国电信CHINANET骨干网节点，同时也是 ChinaNet骨干网三个国际出口之一，总国际出口宽宽12G；ChinaNet骨干网上海节点和上海本地网络的互联带宽为80G；ChinaNet骨干网上海节点ChinaNet北京（北方电信）的互联带宽为10G；上海电信是中国电信国内长途电信网的重要枢纽节点，也是中国国f际通信的三大出口局之一，拥有京沪、北沿海、北沿江、南沿海、沪杭、沪宁等国内长途光缆系统，以及国内卫星通信地球站；是中美、亚欧、亚太、环球、中日、中韩等国际大容量海光缆、陆地光缆系统的重6要节点，并建有太平洋、印度洋卫星地球站；上海长信的机房是级别最高的，上海机房中线路不管怎么绕，任何机房最终的出口都在武胜机房和横浜机房。<br/>北京<br/>北京是中国电信三大核心节点城市之一，同时也是 ChinaNet骨干网三个国际出口之一，中国电信北方网络的主节点在北京电信上地机房，现在的北京上地数据中心原来是263机房，后来被电信收购重组为中国电信北京数据中心之一，也是中国电信北方网络主节点ChinaNet骨干网的交换中枢。<br/><br/>Tags - <a href="tag.php?tag=%E6%9C%BA%E6%88%BF" rel="tag">机房</a>
]]>
</description>
</item><item>
<link>http://www.bizeway.net/read.php?546</link>
<title><![CDATA[网站性能优化——网站测试服务]]></title> 
<author>ArthurXF &lt;arthurxf@gmail.com&gt;</author>
<category><![CDATA[网站架构]]></category>
<pubDate>Sun, 16 May 2010 18:11:00 +0000</pubDate> 
<guid>http://www.bizeway.net/read.php?546</guid> 
<description>
<![CDATA[ 
	访问速度对于一个网站或博客来说实在太重要了，据有关部门的估计：一般一个浏览者如果在5-8秒钟没有打开一个网站，那么该网站会丢失1/3的浏览用户。超过10秒，你的访客绝对会失去耐心！今天不讲如何改进访问速度的问题，建议大家在建好网站或博客之后习惯的测试一下访问速度。以下推荐几个有用的访问速度测试服务。 <p><a href="http://tools.pingdom.com/"><img style="float: left" class="alignleft" src="http://pic.yupoo.com/ybcz0519/59549600eb05/349owrnr.jpg" border="0" width="100" height="40" />Pingdom</a>&nbsp;非常专业的网页测速服务，可对该网页中众多元素一一测速，清楚地看到是哪些托了你的后腿。提供该网页速度的综合测评分析，看看会对你博客的设计有些启发。<br /><br />&nbsp;<br /><br /><a href="http://www.websiteoptimization.com/services/analyze/"><img style="float: left" class="alignleft" src="http://pic.yupoo.com/ybcz0519/10783656b906/rgsm2pf1.jpg" border="0" width="180" height="24" />Websiteoptimization </a>功能十分强大的网站速度测试服务，可通过URL、HTM、JAVA代码三种方式进行测试，结果十分齐全，包括HTML、Images、CSS、Javascript等各个类别的访问速度，难能可贵的是还会根据你的结果给出一些建设性意见。<br /><br /><img style="float: left" class="alignleft" src="http://pic.yupoo.com/ybcz0519/741855dac190/lbvdiw9e.jpg" border="0" width="150" height="34" />Webslug&nbsp;是一个在线网速测定的服务，所不同的是，它用于比较任意两个网站的访问速度，你输入想要比较的两个网站的地址，Webslug&nbsp;通过服务器进行访问速度测试，最后给出结果。<br /><br /><a href="http://www.webwait.com/"><img style="float: left" class="alignleft" src="http://pic.yupoo.com/ybcz0519/234955edf1a5/5qaw51um.jpg" border="0" width="160" height="34" />Webwait</a>&nbsp;简单的网页测速工具，比较大的特点是不仅可以测定某一点的访问速度，而且可以根据你的设置实时的监测速度。<br /><br />&nbsp;<br /><br /><a href="http://www.linkvendor.com/seo-tools/speedtester.html"><img style="float: left" class="alignleft" src="http://pic.yupoo.com/ybcz0519/73234656b534/uj4c40jj.jpg" border="0" width="129" height="39" />Website speedtester</a>&nbsp;是<a href="http://www.linkvendor.com/">linkvendor</a> 旗下的一个服务，可对网站全方位监测速度，给出综合报告，有java代码、图片访问速度的细致报告。<br /><br />&nbsp;&nbsp;<br /><br /><a href="http://internetsupervision.com/scripts/urlcheck/check.aspx"><img style="float: left" class="alignleft" src="http://pic.yupoo.com/ybcz0519/31768656ad93/7yoj23g9.jpg" border="0" width="180" height="30" />Internetsupervision</a>&nbsp;可从世界10余个主要的网络节点来测是你的网页速度，包括：美国华盛顿、美国圣迭戈、德国多特蒙德、俄罗斯圣彼得堡、澳洲悉尼、中国北京等等。<br /><br /><a href="http://www.selfseo.com/website_speed_test.php"><img style="float: left" class="alignleft" src="http://pic.yupoo.com/ybcz0519/91456656b159/qqnmhs5n.jpg" border="0" width="180" height="37" />Selfseo</a> 所提供的网站访问速度测试功能并不强大，只提供简单的load时间，但可同时检测多个网站的速度以作比较。用它来检测你和竞争对手的速度，会对你的改进有所帮助。<br /><br />&nbsp;<br /><a href="http://www.iwebtool.com/speed_test"><img style="float: left" class="alignleft" src="http://pic.yupoo.com/ybcz0519/78865656b30f/2yadtq4b.jpg" border="0" width="86" height="22" />Website speed test </a>是webtool提供的简单网站速度测试，和Selfseo 一样，最多可以同时测试10个网站的访问速度。<br /><br />&nbsp;<br />另外还有几个：<br /><br /><a href="http://www.websitegoodies.com/tools/speed-test.php">Websitegoodies</a> 提供的简单网站速度测试服务，提供大小和总load时间两个参数。<br /><a href="http://www.web-hosting-top.com/web-hosting/tools.website-speed-test">web-hosting-top.com</a> 提供与Selfseo 一样的测速服务。<br /><a href="http://www.global-weblinks.com/websitespeed.asp">global-weblinks</a> 提供与Selfseo 一样的测速服务。 <br /><a href="http://www.linkwan.com/gb/broadmeter/speed/responsespeedtest.asp">世界网络</a> 提供的最简单的网站速度测试，只提供访问秒数结果。<br /><a href="http://tool.chinaz.com/Speed/Index.asp">中国站长工具</a> 提供简单的速度测试，可选择5个服务器。</p><br/>Tags - <a href="tag.php?tag=%E7%BD%91%E7%AB%99%E6%B5%8B%E9%80%9F" rel="tag">网站测速</a> , <a href="tag.php?tag=%E7%BD%91%E7%AB%99%E6%80%A7%E8%83%BD" rel="tag">网站性能</a>
]]>
</description>
</item><item>
<link>http://www.bizeway.net/read.php?450</link>
<title><![CDATA[三层交换及VLAN设置，提高数据效率]]></title> 
<author>ArthurXF &lt;arthurxf@gmail.com&gt;</author>
<category><![CDATA[网站架构]]></category>
<pubDate>Thu, 25 Jun 2009 06:53:33 +0000</pubDate> 
<guid>http://www.bizeway.net/read.php?450</guid> 
<description>
<![CDATA[ 
	 &nbsp; &nbsp;笔者在参与一些公司的网络工程建设中，发现一些公司对交换机的选择大多依然停留在过去，完全不考虑企业内网基于不同部门的子网划分，只要一般百兆交换机，把所有的电脑接起来就行。<br/><br/> &nbsp; &nbsp;这要是在ADSL等宽带技术还没有普及之前，企业接入广域网需要专门的企业级传统路由器，如；CISCO 2600系列接入路由器，来接入帧中继（FRAME RELAY）、数字数据网（DDN）、x.25等。而企业要部署VLAN，要具有VLAN划分功能的交换机来与传统路由器配合，由传统路由器来做VLAN间通信的路由，那么面对昂贵的传统路由器，小企业无力承受，这是可以理解的。但现在宽带技术普及之后，一般的企业都会选择ADSL或城域网，除非是非常传统的行业企业，如银行业还是采用DDN。同时担当接入的网关设备也不在唯一的由传统路由器来承担，而是出现了种类繁多的宽带接入设备，如：宽带路由器、VPN防火墙等。代替传统路由器做VLAN路由的三层交换机已经出现，基于硬件的路由转发比传统路由器基于软件的路由转发效率更高、更快。<br/><br/> &nbsp; &nbsp;现在企业部署VLAN有了更好的选择，那就是由三层交换机和有VLAN功能的二层接入交换机来配合实现。并且随着生产三层交换机的厂家越来越多，市场供应的丰富，使原来价格也高高在上的三层交换机将很快走向平民化，特别是千兆三层交换机在高端市场的普及，促使百兆三层交换机向中低端市场普及，并且价位降到一般中小企业有能力接受的程度。因此在这里进一步点出本文的题目“三层交换，你也可以”的主旨。在网络核心部署三层交换对中小企业已不是什么新鲜话题。<br/><br/> &nbsp; &nbsp;划分VLAN子网的好处<br/><br/> &nbsp; &nbsp;VLAN（Virtual Local Area Network）称为虚拟局域网，是指在逻辑上将物理的LAN分成不同小的逻辑子网，每一个逻辑子网就是一个单独的播域。简单地说，就是将一个大的物理的局域网（LAN）在交换机上通过软件划分成若干个小的虚拟的局域网（VLAN）。因为交换机通信的原理就是要通过“广播”来发现通往的目的MAC地址，以便在交换机内部的MAC数据库建立MAC地址表，而广播不能跨越不同网段。通过划分VLAN子网，能划小了广播域，避免了数据碰撞在大的物理LAN内产生严重后果的可能，也避免了广播风暴的产生。提高交换网络的交换效率，保证网络稳定。提高网络安全性，通过划分VLAN，LAN被划分不同子网段，因此不能直接通信。必要的通信必须经过路由来实现，因此可在路由器（或三层交换机）上配置访问列表来进行跨子网段的授权访问，从而提高企业内部网络访问的安全性。方便网络管理：采用VLAN技术来划分企业网络，一个VLAN可以根据部门、项目组或者服务器组将不同地理位置的工作站划分为一个逻辑网段。在不改动网络物理连接的情况下可以任意地将工作站在子网之间移动，VLAN提供了网段和机构的弹性组合机制。VLAN技术很好的解决了网络管理的问题，能实现网络监督与管理的自动化，从而更有效的进行网络监控。<br/><br/> &nbsp; &nbsp;因为各个子网产生的广播将被限制在小的虚拟局域网内。当LAN中的不同VLAN间进行相互通信时，由于处于不同的IP子网段，不能象原先大的LAN那样直接通信，因此需要路由来转发，这时就需要增加路由设备——要实现路由功能。<br/><br/> &nbsp; &nbsp;三层交换技术<br/><br/> &nbsp; &nbsp;VLAN和路由是孪生兄弟，有VLAN就必有路由。<br/><br/> &nbsp; &nbsp;在没有出现三层交换机以前，VLAN间的通信需要昂贵的传统路由器来配合工作。在企业网中，不同VLAN子网之间的通信频繁发生，而路由器是基于软件的路由选择操作，本来效率就不高，如果路由器要对每一个数据包都路由一次，也就是“每次转发，每次路由”，随着需要路由的数据量增大，传统的路由器将不堪重负，于是就成为VLAN之间通信的瓶颈。<br/><br/> &nbsp; &nbsp;三层交换机则把网络通信中的二层交换技术和三层路由（或称三层转发）技术结合在一起，并通过ASIC技术达到线速交换，大幅度提高了设备数据的包转发能力，消除了转发瓶颈。同时通过VLAN划分、高效的组播控制、流策略的管理及访问控制等功能有效保证网络资源的充分利用，切实保证满足各类用户的应用需求。三层交换机在对第一个数据流进行路由后，会产生一个MAC地址与IP地址的映射表，当同样的数据流再次通过时，将根据映射表直接进行二层交换，也就是“一次路由，多次交换”，这样大大提高了数据包转发的效率，因而提高了VLAN网络的整体性能。<br/><br/> &nbsp; &nbsp;有了三层交换机，企业做VLAN子网的划分时，设备上的付出就相对经济得多，网络的VLAN间数据路由转发性能更加高效。<br/> &nbsp; &nbsp;小企业的三层交换部署实例 &nbsp; &nbsp; <br/><br/> &nbsp; &nbsp;从上面两个小节我们知道了划分VLAN子网对于一个企业局域网的重要性和必要性，而划分VLAN的必要配套工程，就是要部署三层交换机。目前三层交换机的市场发展，品牌倍出，但是价位还是有些高，如百兆三层交换机一般在8000-9000元左右，但个别低价的还是有的，如：D-Link DES-3326SR报价4000元，这使我们100个以内的小型企业也一样可以部署高效安全的VLAN网络。<br/><br/> &nbsp; &nbsp;本案我们就选择这款非常经济的三层交换机，在网络的核心部署一台D-Link DES-3326SR三层交换机，接入层则由若干台D-Link DES-3226S百兆可堆叠二层交换机来担任，。<br/><br/> &nbsp; &nbsp;D-Link DES-3326SR简介（图1）<br/><br/> <br/>图1 <br/><br/><br/> &nbsp; &nbsp;DES-3326SR是一款可堆叠多层可路由交换机，它在一个机箱里集成了二层线速交换和三层IP包路由以及服务质量（QoS）功能。它提供24个10/100 Mbps端口，一个用于快速以太网、千兆模块、堆叠的扩展插槽，8.8Gbps交换架构，8K MAC地址表，2K路由表，6.6Mpps三层包转发速率，16MB RAM缓存。支持冗余备份电源，可通过高速堆叠线缆堆叠在一起，最多可堆叠13个单元。允许8个10/100Mbps端口干路提供聚合带宽。<br/><br/> &nbsp; &nbsp;通过网络分段，支持IEEE 802.1Q VLAN Tagging的工作站能被分组到不同的VLAN中。这款交换机也支持GVRP，以此来进行VLAN配置信息的自动发布。<br/><br/> &nbsp; &nbsp;支持RIP-1,RIP-2,OSPF路由协议，DVMRP，PIM Dense mode组播路由协议。<br/><br/> &nbsp; &nbsp;于端口和基于MAC地址的802.1x特性使用户的每次接入请求都能进行认证。多层的访问控制列表（ACL）。支持优先级队列和IP组播（IGMP snooping），服务质量（QoS）能保证成功地完成像视频会议这样的对延迟敏感的应用。<br/><br/> &nbsp; &nbsp;支持802.1p优先队列控制，从第二层到第四层的多层信息都能被用来为数据包设置优先级。侦听IGMP，控制广播，交换机动态地配置端口使之把IP组播数据只转发给那些和组播主机相关的端口。<br/>SNMPv.1,v.2c，v.3网络管理。能提供RMON监测和SYSLOG以完成有效的中心管理。交换机也提供命令行接口（CLI）和基于Web的GUI。<br/> &nbsp; &nbsp;子网规划及网络拓朴图<br/><br/> &nbsp; &nbsp;VLAN的划分应与IP规划结合起来，使得一个VLAN 接口IP就是对应的子网段就是某个部门的子网段，VLAN接口IP就是一个子网关。VLAN应以部门划分，相同部门的主机IP以VLAN接口IP为依据划归在一个子网范围，同属于一个VLAN。这样不仅在安全上有益，而且更方便网络管理员的管理和监控。注意：各VLAN中的客户机的网关分别对应各VLAN的接口IP。<br/><br/> &nbsp; &nbsp;在这企业网中计划规划四个VLAN子网对应着四个重要部门，笔者认为这也是小企业最普遍的部门结构，分别是：<br/><br/> &nbsp; &nbsp;VLAN10——综合行政办公室；<br/> &nbsp; &nbsp;VLAN20——销售部；<br/> &nbsp; &nbsp;VLAN30——财务部；<br/> &nbsp; &nbsp;VLAN40——数据中心（网络中心）。<br/><br/> &nbsp; &nbsp;划分VLAN以后，要为每一个VLAN配一个“虚拟接口IP地址”。<br/><br/> &nbsp; &nbsp;VLAN10——192.168.10.1<br/> &nbsp; &nbsp;VLAN20——192.168.20.1<br/> &nbsp; &nbsp;VLAN30——192.168.30.1<br/> &nbsp; &nbsp;VLAN40——192.168.40.1<br/><br/> &nbsp; &nbsp;拓朴图如下：<br/><br/> <br/>图2（点击看大图） <br/><br/> &nbsp; &nbsp;VLAN及路由配置<br/><br/> &nbsp; &nbsp;1.DES-3326SR三层交换机的VLAN的配置过程：<br/><br/> &nbsp; &nbsp;（1）创建VLAN<br/><br/> &nbsp; &nbsp;DES-3326SR#Config vlan default delete 1 -24 ?删除默认VLAN(default)包含的端口1-24''<br/> &nbsp; &nbsp;DES-3326SR#Create vlan vlan10 tag 10 ?创建VLAN名为vlan10，并标记VID为10<br/> &nbsp; &nbsp;DES-3326SR#Create vlan vlan20 tag 20 ?创建VLAN名为vlan20，并标记VID为20<br/> &nbsp; &nbsp;DES-3326SR#Create vlan vlan30 tag 30 ?创建VLAN名为vlan10，并标记VID为30<br/> &nbsp; &nbsp;DES-3326SR#Create vlan vlan40 tag 40 ?创建VLAN名为vlan10，并标记VID为40<br/><br/> &nbsp; &nbsp;（2）添加端口到各VLAN<br/><br/> &nbsp; &nbsp;DES-3326SR#Config vlan vlan10 add untag 1-6 ?把端口1-6添加到VLAN10<br/> &nbsp; &nbsp;DES-3326SR#Config vlan vlan20 add untag 7-12 ?把端口1-6添加到VLAN20<br/> &nbsp; &nbsp;DES-3326SR#Config vlan vlan30 add untag 13-18 ?把端口1-6添加到VLAN30<br/> &nbsp; &nbsp;DES-3326SR#Config vlan vlan40 add untag 19-24 ?把端口1-6添加到VLAN40<br/> &nbsp;<br/> &nbsp; &nbsp;（3）创建VLAN接口IP<br/><br/> &nbsp; &nbsp;DES-3326SR#Create ipif if10 192.168.10.1/24 VLAN10 state enabled &nbsp;?创建虑拟的接口if10给名为VLAN10的VLAN子网，并且指定该接口的IP为192.168.10.1/24。创建后enabled激活该接口。<br/><br/> &nbsp; &nbsp;同样方法设置其它的接口IP：<br/><br/> &nbsp; &nbsp;DES-3326SR#Create ipif if20 192.168.20.1/24 VLAN20 state enabled<br/> &nbsp; &nbsp;DES-3326SR#Create ipif if30 192.168.30.1/24 VLAN30 state enabled<br/> &nbsp; &nbsp;DES-3326SR#Create ipif if40 192.168.40.1/24 VLAN40 state enabled<br/><br/> &nbsp; &nbsp;（4）路由<br/><br/> &nbsp; &nbsp;当配置三层交换机的三层功能时，如果只是单台三层交换机，只需要配置各VLAN的虚拟接口就行，不再配路由选择协议。因为一台三层交换机上的虚拟接口会在交换机里以直接路由的身份出现，因此不需要静态路由或动态路由协议的配置。<br/><br/> &nbsp; &nbsp;2.DES-3226S二层交换机的VLAN的配置过程：<br/><br/> &nbsp; &nbsp;（1）创建VLAN<br/><br/> &nbsp; &nbsp;DES-3226S#Config vlan default delete 1 -24 ?删除默认VLAN(default)包含的端口1-24''<br/> &nbsp; &nbsp;DES-3226S#Create vlan vlan10 tag 10 ?创建VLAN名为vlan10，并标记VID为10<br/><br/> &nbsp; &nbsp;（2）添加端口到各VLAN<br/><br/> &nbsp; &nbsp;DES-3226S#Config vlan vlan10 add untag 1-24 ?把端口1-24添加到VLAN10<br/><br/> &nbsp; &nbsp;同理，配置其它DES-3226S二层交换机。完成以后就可以将各个所属VLAN的二层交换机与DES-3326SR三层交换机的相应VLAN的端口连接即可。<br/> &nbsp; &nbsp;本文从小型企业部署VLAN的经济性原则出发，介绍了在成本支出有限的情况下，如何为小型企业网规划VLAN子网并实现高效的VLAN三层交换的案例。虽然现在百兆的三层交换机价位有点居高不下，千兆三层更贵，但是，只要用心找一找，还是能找到符合小型企业需要的经济型三层交换机的。这为我们小企业部署核心三层交换带来了可能。我们也坚信，随着产能的扩大，面向中低端的三层交换机将大量普及。这将为我们规划VLAN子网和三层路由，为企业建设一个高效安全的网络提供可能。<br/><br/>Tags - <a href="tag.php?tag=vlan" rel="tag">vlan</a> , <a href="tag.php?tag=%E4%B8%89%E5%B1%82%E4%BA%A4%E6%8D%A2" rel="tag">三层交换</a>
]]>
</description>
</item><item>
<link>http://www.bizeway.net/read.php?363</link>
<title><![CDATA[网游预测插值]]></title> 
<author>ArthurXF &lt;arthurxf@gmail.com&gt;</author>
<category><![CDATA[网站架构]]></category>
<pubDate>Sat, 20 Sep 2008 13:57:09 +0000</pubDate> 
<guid>http://www.bizeway.net/read.php?363</guid> 
<description>
<![CDATA[ 
	做过一个3D网游项目的插值预测是我负责的.和大家分享一下经验.<br/>具体的项目我不方便透露,但是,其要求实时性是比较高的.<br/>插值和预测是两样的东西.<br/>插值是对已有的几个点做BEIZER曲线插值或者球形插值.以达到平滑的目的.<br/>而预测是在已有的几个点的位置情况下,预测出下个点的位置.<br/>具体的过程是先预测,再插值.由于预测本身不是最准,所以,当服务器下次发来准确的位置时得修正位置.<br/>先说下预测。我们可以利用到的资源是，前几次服务器发来的位置信息。每个点位置的速度和加速度。<br/>假设，上一次收到的信息是 Pos0,Vel0,Acc0 分别表示位置，速度和加速度，那么下一次的的位置可能是Pos0+(vel0+acc0)*deltatime其中deltatime表示UPDATE间隔。但是你直接使用的话，结果是很惨的，人物会在预测位置和修正位置间来回的“跳跃”，因为这样的预测并不是想象中的那么准确。因为下一次服务器来的信息这段时间间隔内，速度和加速度都在改变，这是由玩家控制的，完全离散的信息。<br/>但是我们可以根据速度和加速度的历史来得知速度是加快了还是变慢了。（加速度一般是个固定数）<br/>速度的方向是大致上是哪个方位。这样，我们可以对速度进行第2层的预测。预测方法和以上类似。<br/>如果判断出，速度是正在下降的。那么可以判断下一次的速度是vel-acc逐步下降。如果是上升的那么可<br/>以判断是vel+acc速度逐渐上升。根据这个情况可以初步得到一个预测速度 Vel1 <br/>现在总可以加到Pos0上去了吧？且慢！等你以插值的方式移动到那个点的时候，服务器会无情的发给你真正的当前位置，如果你直接过去，也会发生“跳跃”。考虑到这点，Vel1必须缩小。<br/>我的做法是缩小0.8，还有0.2让服务器的位置来的时候看上去不至于太“跳跃”直接修正。然后，我们把这个Scale过的Vel1向量放到World里进行COLLISION，来防止角色“穿墙”，最后得到Vel2.<br/>下一个预测位置就是Pos1=Pos0+Vel2.你将Pos1放到插值队列里，进行中间的插值然后每次Update时候移动过去，就行了~~<br/>Tags - <a href="tag.php?tag=%E7%BD%91%E6%B8%B8" rel="tag">网游</a> , <a href="tag.php?tag=%E9%A2%84%E6%B5%8B%E6%8F%92%E5%80%BC" rel="tag">预测插值</a>
]]>
</description>
</item><item>
<link>http://www.bizeway.net/read.php?362</link>
<title><![CDATA[网络游戏同步法则]]></title> 
<author>ArthurXF &lt;arthurxf@gmail.com&gt;</author>
<category><![CDATA[网站架构]]></category>
<pubDate>Sat, 20 Sep 2008 13:43:09 +0000</pubDate> 
<guid>http://www.bizeway.net/read.php?362</guid> 
<description>
<![CDATA[ 
	网路的硬件也有限，而人的创造也无限，在公网平均130ms的Latency下，是不存在“完全的”的同步情况。如何通过消除/隐藏延时，将用户带入快速的交互式实时游戏中，体验完美的互动娱乐呢？<br/><br/>以下六点，将助你分清楚哪些我们可以努力，哪些我们不值得努力，弄明白实时游戏中同步问题关键之所在，巧妙的化解与规避游戏，最终在适合普遍用户网络环境中(200ms)，实现实时快速互动游戏：<br/><br/>1. 基本情况：<br/> &nbsp; (A) 网络性能指标一：带宽，限制了实时游戏的人数容量<br/> &nbsp; (B) 网络性能指标二：延时，决定了实时游戏的最低反应时间<br/><br/>2. 两个基本原则：<br/> &nbsp; (A) 让所有的用户屏幕上面表现出完全不同的表象是完全没有问题的。<br/> &nbsp; (B) 把这些完全不同表象完全柔和在一个统一的逻辑中也是完全没有问题的。<br/><br/>3. 同步的十二条应对策略：<br/> &nbsp; (A) 最大可能减少游戏中的数据传输<br/> &nbsp; (B) 将阻塞通信放到线程池中实现<br/> &nbsp; (C) 永远不要为了等待某个数据而不让游戏进行下去<br/> &nbsp; (D) 利用预测和插值改进游戏的效果<br/> &nbsp; (E) 当使用预测插值的时候传送的数据不仅包括坐标，还需要速度和加速度<br/> &nbsp; (F) 将输入数据枷锁或者队列化(例如键盘消息队列)，直到下次发送数据的时刻，传统的方法是在固定的时间(发送数据前)检测键盘，在游戏的原理上隐藏延时<br/> &nbsp; (G) 使用事件调度表，将需要在所有用户客户端同时发生的事件，提前广播到所有用户<br/> &nbsp; (H) 使用多次攻击来杀死一个精灵，尽量减少一次性的、确定性的、延时敏感的事件<br/> &nbsp; (I) 延长子弹或者火箭在空中飞行的时间(在其飞行的同时，在所有客户端进行预测插值)<br/> &nbsp; (J) 所有物体从一个地方移动到另外一个地方都需要时间，避免诸如“瞬间移动”的设计<br/> &nbsp; (K) 尽量使游戏中所有精灵，飞船或者其他物体，都按照可预测的轨迹运行，比如在移动中增加惯性<br/> &nbsp; (L) 充分发挥创造力，尽最大可能的合并游戏中前后相关的事件，合并游戏中存在的延时此问题，需要在技术上改进的同时也需要策划有所重视，规避一些影响较大的设计，巧妙的隐藏"延时"<br/><br/>4. 同步问题现状：<br/> &nbsp; (A) 重视程度不够：很多人尚未意识到此问题的存在，曾有公司花半年时间打算做一款“松鼠大战”的网络版。<br/> &nbsp; (B) 技术上无彻底解决方案：对于多数程序员，单机游戏技术善未成熟就匆匆步入网络时代。<br/> &nbsp; (C) 研究这个技术需要条件：需要有实力的公司才能提供，无此条件，即便有能力的程序员也无法成功。<br/><br/>5. 目前网游的三大技术难题：<br/> &nbsp; (A) 服务器的响应问题：如何使服务器在支持越来越多的人数的情况下提供最高的响应。<br/> &nbsp; (B) 同步问题：如何在有限的网络响应情况下，实现快速实时类游戏，提供最完美的交互。<br/> &nbsp; (C) 服务器分布式问题：如何在统一用户数据的情况下，利用分部式将各个分散的“世界”统一到一个“世界”中。<br/> &nbsp; 谁能真正解决好以上三个问题，配合策划在设计上的突破，将使其他人在至少两年内无法超越。<br/> &nbsp; <br/>6. 相关补充：<br/> &nbsp; (A) 网格技术现在还是炒作，真正用到游戏中，还有很多技术难点需要突破(比如：目前网格的单位计算时间是以秒计算).<br/> &nbsp; (B) 其实与很多人想法相反的是现在3D技术早已不是主要的矛盾。而现在国内外对于以上三个问题可以说处于同一个起跑线上，完全有机会取得先机。<br/> &nbsp; (C) 现在解决同步问题已经很紧迫，而同时所需要的环境也已经成熟，只要有所关注，半年之内可以得出较成熟的结论<br/>Tags - <a href="tag.php?tag=%E7%BD%91%E7%BB%9C%E6%B8%B8%E6%88%8F" rel="tag">网络游戏</a> , <a href="tag.php?tag=%E5%90%8C%E6%AD%A5%E6%B3%95%E5%88%99" rel="tag">同步法则</a>
]]>
</description>
</item><item>
<link>http://www.bizeway.net/read.php?331</link>
<title><![CDATA[跟着ArthurXF学习搜索引擎理论——高速搜索理论]]></title> 
<author>ArthurXF &lt;arthurxf@gmail.com&gt;</author>
<category><![CDATA[网站架构]]></category>
<pubDate>Thu, 12 Jun 2008 10:40:54 +0000</pubDate> 
<guid>http://www.bizeway.net/read.php?331</guid> 
<description>
<![CDATA[ 
	　　最近本人忙着完善ArthurXF建站框架的开源设计及PHP培训，很长时间未更新blog了，再这里对支持本人的朋友们表示抱歉，因为一直在写框架高速缓存，就有学生问我，google，baidu是用什么数据库做的？为什么那么大的数据量可以搜索的那么快呢？<br/>　　在这里，我就和大家分享一下，我对搜索引擎的理解，仅仅是我的猜想，如有不对的地方，还望他人多多指点。<br/>　　其实搜索引擎那么快速的反应，是任何一个数据库都做不到的。因为搜索引擎的数据是海量的，我们先举例搜索关键字mp3，在google里面有13亿的网页，搜索用时 0.04 秒，其实没有哪个数据库可以13亿条记录里面搜索结果出来只需要0.04秒，那么google是怎么做到的呢？<br/><br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><strong>　　其实我们用mysql都可以做出一个google来，因为大家所访问的搜索结果页面都是数据库结果集的缓存，怎么理解这个问题呢？我来举例说明。</strong><br/>　　我们假设在mysql数据库中从13亿条数据中搜索mp3关键字，需要耗时1分钟，那么做为用户的我们是无法忍受的，那么我们如何来改善这个结果呢？我们就要设计数据库结果集缓存了，也就是第一个人搜索的时候去数据库查找搜索结果，之后建立数据库结果集缓存，在规定时间内，如果还有人搜索mp3的，就直接将数据库结果集中的数据返回给用户，而不再搜索数据库了，这样就大大提高了用户的访问速度，一般可以把速度提升到小于1秒！过了规定时间以后重新建立数据库结果集缓存就可以更新结果列表了。<br/><br/><strong>　　那么为什么我们没人碰到搜索非常慢的情况呢？也就是说为什么我不会成为第一个搜索的某个关键字的人呢？</strong><br/>　　其实非常简单，我们访问google，baidu的时候，我们只能访问到数据库结果集缓存，其实我们根本就访问不到搜索引擎的数据库。这样就可以保证每个人使用搜索引擎的时候，速度都很快！<br/><br/><strong>　　那么搜索引擎的数据库结果集缓存怎么更新呢？也就是我们看到的数据库排列结果如何变化呢？</strong><br/>　　其实搜索引擎会根据大家搜索关键字的频率，从高到低来用机器人（程序）自动搜索数据库，建立或更新数据库结果集缓存，这样更新，即时数据库耗时5分钟才产生结果集，也不会有人投诉太慢的，呵呵。当用户再搜索相同的关键字时，就发现结果排列发生变化了。为了应对全球搜索的反应，所以google会在全球建立3大数据中心，共投入了45万台服务器，一些做抓取，一些更新缓存，一些做用户服务的。因为每个数据中心缓存更新的时间并不同步，所以才会发生google dance的现象。如何验证这个理论，你可以对比一个高频关键字和一个低频关键字的更新时间，你会发现高频关键字搜索结果更新速度远远超过低频关键字。<br/><br/><strong>　　那么搜索结果有13亿，是不是需要建立庞大的数据库结果集缓存呢？如果有上亿的关键词那么不是需要非常多硬盘空间？</strong><br/>　　其实不管搜索结果有多少，数据库结果集缓存只会建立最高频率搜索的结果集，也就是每个搜索关键字的结果集有个最大页数，大家都知道，搜索结果列表访问最多的就是列表的前3页，但是又不能保证没有人会翻几十页，所以为了验证我的理论，测试结果表明baidu结果集缓存了76页，之后的结果会告诉你“提示：限于网页篇幅，部分结果未予显示。”，google的结果集缓存了100页，其实真的有人能翻页翻到100页的，恐怕也真是凤麟毛角了。那么就算每一页的缓存结果为2K，100页就是200K，看来需要一个海量的磁盘阵列来存储数据库结果集缓存是不可避免的。<br/><br/><strong>　　那么众多的关键字，搜索引擎怎么知道应该建立哪写关键字的数据库结果集缓存呢？万一建立的关键字的数据库结果集缓存根本就没人查询那不是不很浪费硬盘空间？如何做好协调，既要合理使用硬盘空间，又要满足用户？</strong><br/>　　其实这个问题也不难解决，一定要建立关键字库，不断更新用户使用的关键字，并且记录关键字查询的次数，如果是一个从来没人用过的关键字，或者认为没必要建立缓存集的关键字，搜索引擎都会告诉你，找不到和您的查询 "kkdnwos" 相符的网页。其实谁能保证这个世界真的没人使用那个关键字呢？肯定有的，只是你查询的关键字还不在搜索引擎的关键字数据库中，只要你每天都搜几次那个关键字，相信再不久的将来，这个关键字会有搜索结果的。呵呵！</div></div><br/>　　看完了上面的理论，其实我们可以很自豪的对投资人说，只要你跟我足够的钱（买服务器占了大部分，呵呵），我也可以做搜索引擎！<br/><br/>　　如何建立数据库结果集缓存？我正在写一个轻量级的数据库结果集缓存系统整合在我的ArthurXF网站系统里面，希望学习的朋友们到时可以下载来看看，多多指导！<br/><br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">　　另外本人还在搞php实习培训，到我公司跟着项目一边学习一边实践，全程指导使用本人设计的ArthurXF建站系统快速建站。有意向的朋友，可以跟我公司的小姑娘联系。QQ：272209362。</div></div><br/>Tags - <a href="tag.php?tag=%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E" rel="tag">搜索引擎</a> , <a href="tag.php?tag=%E9%AB%98%E9%80%9F%E6%90%9C%E7%B4%A2" rel="tag">高速搜索</a> , <a href="tag.php?tag=google" rel="tag">google</a> , <a href="tag.php?tag=baidu" rel="tag">baidu</a>
]]>
</description>
</item><item>
<link>http://www.bizeway.net/read.php?218</link>
<title><![CDATA[海猫网页预览拍照服务器]]></title> 
<author>ArthurXF &lt;arthurxf@gmail.com&gt;</author>
<category><![CDATA[网站架构]]></category>
<pubDate>Sat, 22 Sep 2007 03:58:18 +0000</pubDate> 
<guid>http://www.bizeway.net/read.php?218</guid> 
<description>
<![CDATA[ 
	　　海猫是一款运行于LINUX系统上的网页预览、拍照服务器软件。 对于美工、普通用户，海猫可以成批地抓拍他们感兴趣的网页，保存为图片，方便收藏与管理。 对于互联网站，诸如大型搜索引擎、垂直搜索引擎、在线书签、网址大全等类网站，更是海猫大显身手的地方。利用海猫来预览网站内容，如同snap.com一样，可显著提升用户体验，提高搜索准确度。利用海猫抓拍的图片来作为网址或书签的标志，如alexa.com一样，更能有效提升网站观感、新鲜感，增加用户粘性。随着时间的推移，带宽的增加，这种技术将会得到更广泛的应用。 <br/><br/>功能特色<br/>后台运行<br/>海猫作为一款LINUX服务器软件，运行于后台，不需要X-Windows。通过命令行工具和SOCKET调用与海猫进行通讯，获得服务。 <br/>多线程运行<br/>因为运行于多线程模式，所以海猫服务效率很高，能够同时接受来自不同用户的网页拍照请求。 <br/>缩略图大小可随意指定<br/>默认缩略图大小为109x82和1024x768，但用户可以自行选择一个或多个不同的大小，海猫会根据要求生成指定大小的缩略图。 <br/>能够抓拍整个页面<br/>一般的网页转图片软件只能转网页的第一页，但海猫能将整个页面抓拍下来，存为图片，功能强大，发送请求只需指定enable-full为1即可，十分简单。 <br/>接口简单<br/>海猫采用类似HTTP的操作协议，客户端程序通过SOCKET与其通讯，接受抓拍结果。这种方式的好处是WEB应用程序嵌入方便，一般的网站非常容易使用上海猫。 <br/>海猫2.0抓拍网址为什么那么快<br/> &nbsp; &nbsp;通过比较以下抓拍步骤，就可以看出海猫2.0与1.0的差别。<br/><br/> &nbsp; &nbsp;海猫1.0：<br/> &nbsp; &nbsp;<br/> &nbsp; &nbsp;接受抓拍网址 ==> 启动抓拍进程 ==> 等待进程进入就绪状态 ==> 开始抓拍 &nbsp;==> 返回结果<br/> &nbsp; &nbsp;<br/> &nbsp; &nbsp;海猫2.0：<br/> &nbsp; &nbsp;<br/> &nbsp; &nbsp;接受抓拍网址 ==> 开始抓拍 ==> 返回结果<br/> &nbsp; &nbsp;<br/> &nbsp; &nbsp;因为抓拍时少了“启动抓拍进程”和“等待进程进入就绪状态”这两步，所以海猫2.0在抓拍速度上表现得非常好。<br/> &nbsp; &nbsp;<br/> &nbsp; &nbsp;为什么海猫2.0在接受抓拍网址后就能开始抓拍，原因在于海猫2.0采用了与1.0不同的体系结构。<br/> &nbsp; &nbsp;<br/> &nbsp; &nbsp;海猫1.0相对简单，海猫作为一个服务启动，有抓拍请求时会新建一个抓拍进程来处理，处理完毕，进程被注销。<br/> &nbsp; &nbsp;<br/> &nbsp; &nbsp;而海猫2.0将抓拍进程变成了抓拍服务器。海猫2.0在启动时，根据配置要求，会启动若干个抓拍服务器。这些抓拍服务器启动后，<br/>一直处于就绪状态，等待海猫发送抓拍命令。海猫在接收到抓拍请求后，查看有哪个抓拍服务器不忙，就将抓拍请求送给这个抓拍服务<br/>器，抓拍结束后，这个抓拍服务器再次等待抓拍指令，海猫则将抓拍结果返回。<br/><br/> &nbsp; &nbsp;将抓拍进程变为一个抓拍服务器，是最具挑战性的工作，也是海猫2.0鲜明的特色，目前很少有人做得到。这也是海猫的过人之处。<br/><br/><br/>现在ArthurXF本人正在搞PHP等技术培训，如果想学习的人可以跟我联系。另外培训的招生简章在这个网址，想了解的可以去看看。加我QQ：29011218交流也可。<br/><a href="http://www.bizeway.net/read.php/285.htm" target="_blank">PHP培训招生简章</a><br/>Tags - <a href="tag.php?tag=%E7%BD%91%E9%A1%B5%E9%A2%84%E8%A7%88" rel="tag">网页预览</a>
]]>
</description>
</item><item>
<link>http://www.bizeway.net/read.php?159</link>
<title><![CDATA[跟ArthurXF探讨大型网站架构——资料篇2]]></title> 
<author>ArthurXF &lt;arthurxf@gmail.com&gt;</author>
<category><![CDATA[网站架构]]></category>
<pubDate>Sun, 12 Aug 2007 07:29:47 +0000</pubDate> 
<guid>http://www.bizeway.net/read.php?159</guid> 
<description>
<![CDATA[ 
	　　上一篇我们看了分布式运算的资料，这次我们来看看分布式内存共享。目前在ＰＨＰ领域中能够做到分布式内存共享的只有Memcache。<br/><br/>1.memcached详细介绍。<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">通常的网页缓存方式有动态缓存和静态缓存等几种，在ASP.NET中已经可以实现对页面局部进行缓存，而使用memcached的缓存比 ASP.NET的局部缓存更加灵活，可以缓存任意的对象，不管是否在页面上输出。而memcached最大的优点是可以分布式的部署，这对于大规模应用来 说也是必不可少的要求。<br/>LiveJournal.com使用了memcached在前端进行缓存，取得了良好的效果，而像wikipedia,sourceforge等也采用了或即将采用memcached作为缓存工具。memcached可以大规模网站应用发挥巨大的作用。<br/><br/>Memcached是什么?<br/>Memcached是高性能的，分布式的内存对象缓存系统，用于在动态应用中减少数据库负载，提升访问速度。<br/>Memcached由Danga Interactive开发，用于提升LiveJournal.com访问速度的。LJ每秒动态页面访问量几千次，用户700万。Memcached将数据库负载大幅度降低，更好的分配资源，更快速访问。<br/><br/>如何使用memcached-Server端?<br/>在服务端运行：<br/># ./memcached -d -m 2048 -l 10.0.0.40 -p 11211<br/>这将会启动一个占用2G内存的进程，并打开11211端口用于接收请求。由于32位系统只能处理4G内存的寻址，所以在大于4G内存使用PAE的32位服务器上可以运行2-3个进程，并在不同端口进行监听。<br/><br/>如何使用memcached-Client端?<br/>在应用端包含一个用于描述Client的Class后，就可以直接使用，非常简单。<br/>PHP Example:<br/>$options["servers"] = array("192.168.1.41:11211", "192.168.1.42:11212");<br/>$options["debug"] = false;<br/>$memc = new MemCachedClient($options);<br/>$myarr = array("one","two", 3);<br/>$memc->set("key_one", $myarr);<br/>$val = $memc->get("key_one");<br/>print $val[0]."&#92;n"; // prints 'one‘<br/>print $val[1]."&#92;n"; // prints 'two‘<br/>print $val[2]."&#92;n"; // prints 3<br/><br/>为什么不使用数据库做这些？<br/><br/>暂且不考虑使用什么样的数据库(MS-SQL, Oracle, Postgres, MysQL-InnoDB, etc..), 实现事务(ACID，Atomicity, Consistency, Isolation, and Durability )需要大量开销，特别当使用到硬盘的时候，这就意味着查询可能会阻塞。当使用不包含事务的数据库（例如Mysql-MyISAM），上面的开销不存在，但 读线程又可能会被写线程阻塞。<br/>Memcached从不阻塞，速度非常快。<br/><br/>为什么不使用共享内存?<br/>最初的缓存做法是在线程内对对象进行缓存，但这样进程间就无法共享缓存，命中率非常低，导致缓存效率极低。后来出现了共享内存的缓存，多个进程或者线程共享同一块缓存，但毕竟还是只能局限在一台机器上，多台机器做相同的缓存同样是一种资源的浪费，而且命中率也比较低。<br/>Memcached Server和Clients共同工作，实现跨服务器分布式的全局的缓存。并且可以与Web Server共同工作，Web Server对CPU要求高，对内存要求低，Memcached Server对CPU要求低，对内存要求高，所以可以搭配使用。<br/><br/>Mysql 4.x的缓存怎么样?<br/>Mysql查询缓存不是很理想，因为以下几点：<br/>当指定的表发生更新后，查询缓存会被清空。在一个大负载的系统上这样的事情发生的非常频繁，导致查询缓存效率非常低，有的情况下甚至还不如不开，因为它对cache的管理还是会有开销。<br/>在32位机器上，Mysql对内存的操作还是被限制在4G以内，但memcached可以分布开，内存规模理论上不受限制。<br/>Mysql上的是查询缓存，而不是对象缓存，如果在查询后还需要大量其它操作，查询缓存就帮不上忙了。<br/>如果要缓存的数据不大，并且查询的不是非常频繁，这样的情况下可以用Mysql 查询缓存，不然的话memcached更好。<br/><br/>数据库同步怎么样？<br/>这里的数据库同步是指的类似Mysql Master-Slave模式的靠日志同步实现数据库同步的机制。<br/>你可以分布读操作，但无法分布写操作，但写操作的同步需要消耗大量的资源，而且这个开销是随着slave服务器的增长而不断增长的。<br/>下一步是要对数据库进行水平切分，从而让不同的数据分布到不同的数据库服务器组上，从而实现分布的读写，这需要在应用中实现根据不同的数据连接不同的数据库。<br/>当这一模式工作后（我们也推荐这样做），更多的数据库导致更多的让人头疼的硬件错误。<br/>Memcached可以有效的降低对数据库的访问，让数据库用主要的精力来做不频繁的写操作，而这是数据库自己控制的，很少会自己阻塞 自己。<br/><br/>Memcached快吗？<br/><br/>非常快，它使用libevent，可以应付任意数量打开的连接（使用epoll，而非poll），使用非阻塞网络IO，分布式散列对象到不同的服务器，查询复杂度是O(1)。(于敦德)<br/><br/>参考资料：<br/>Distributed Caching with Memcached &#124; Linux Journal<br/>http://www.danga.com/<br/>http://www.linuxjournal.com/article/7451</div></div><br/><br/>2.memcached在freebsd下的安装：<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">步骤1：安装memcached<br/>代码:<br/># cd /usr/ports/databases/memcached/<br/># make install<br/><br/>步骤2：启动memcached<br/>代码:<br/>#/usr/bin/memcached -d -m 128 -l 192.168.1.1 -p 11211 -u httpd<br/>参数解释：<br/>-d 以守护程序（daemon）方式运行 memcached；<br/>-m 设置 memcached 可以使用的内存大小，单位为 M；<br/>-l 设置监听的 IP 地址，如果是本机的话，通常可以不设置此参数；<br/>-p 设置监听的端口，默认为 11211，所以也可以不设置此参数；<br/>-u 指定用户，如果当前为 root 的话，需要使用此参数指定用户。<br/><br/>以上以完成了memcached的安装及启动!<br/>使用时按要求填上IP与端口既可</div></div><br/><br/>3.memcached 的工作原理<br/>首先 memcached 是以守护程序方式运行于一个或多个服务器中，随时接受客户端的连接操作，客户端可以由各种语言编写，目前已知的客户端 API 包括 Perl/PHP/Python/Ruby/Java/C#/C 等等。PHP 等客户端在与 memcached 服务建立连接之后，接下来的事情就是存取对象了，每个被存取的对象都有一个唯一的标识符 key，存取操作均通过这个 key 进行，保存到 memcached 中的对象实际上是放置内存中的，并不是保存在 cache 文件中的，这也是为什么 memcached 能够如此高效快速的原因。注意，这些对象并不是持久的，服务停止之后，里边的数据就会丢失。<br/><a href="http://nio.infor96.com/wp-content/uploads/2006/11/image001.png" target="_blank"><img src="http://nio.infor96.com/wp-content/uploads/2006/11/image001.png" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0" align="left"/></a><br/><br/>4.安装php对memcache支持模块<br/>有两种方法可以使 PHP 作为 memcached 客户端，调用 memcached 的服务进行对象存取操作。<br/><br/>第一种，PHP 有一个叫做 memcache 的扩展，Linux 下编译时需要带上 –enable-memcache[=DIR] 选项，Window 下则在 php.ini 中去掉 php_memcache.dll 前边的注释符，使其可用。<br/><a href="http://pecl.php.net/package/memcache" target="_blank">http://pecl.php.net/package/memcache</a><br/><br/>除此之外，还有一种方法，可以避开扩展、重新编译所带来的麻烦，那就是直接使用 php-memcached-client。<br/><a href="http://nio.infor96.com/wp-content/uploads/2006/04/memcached-client.zip" target="_blank">http://nio.infor96.com/wp-content/uploads/2006/04/memcached-client.zip</a><br/>本文选用第二种方式，虽然效率会比扩展库稍差一些，但问题不大。<br/><br/>5.PHP memcached 应用示例<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">首先 下载 memcached-client.php，在下载了 memcached-client.php 之后，就可以通过这个文件中的类“memcached”对 memcached 服务进行操作了。其实代码调用非常简单，主要会用到的方法有 add()、get()、replace() 和 delete()，方法说明如下：<br/><br/>add ($key, $val, $exp = 0)<br/>往 memcached 中写入对象，$key 是对象的唯一标识符，$val 是写入的对象数据，$exp 为过期时间，单位为秒，默认为不限时间；<br/><br/>get ($key)<br/>从 memcached 中获取对象数据，通过对象的唯一标识符 $key 获取；<br/><br/>replace ($key, $value, $exp=0)<br/>使用 $value 替换 memcached 中标识符为 $key 的对象内容，参数与 add() 方法一样，只有 $key 对象存在的情况下才会起作用；<br/><br/>delete ($key, $time = 0)<br/>删除 memcached 中标识符为 $key 的对象，$time 为可选参数，表示删除之前需要等待多长时间。<br/><br/>下面是一段简单的测试代码，代码中对标识符为 'mykey' 的对象数据进行存取操作：<br/><br/><br/><pre><br/><?php<br/>// &nbsp; &nbsp;包含 memcached 类文件<br/>require_once('memcached-client.php');<br/>// &nbsp; &nbsp;选项设置<br/>$options = array(<br/> &nbsp; &nbsp;'servers' => array('192.168.1.1:11211'), //memcached 服务的地址、端口，可用多个数组元素表示多个 memcached 服务<br/> &nbsp; &nbsp;'debug' => true, &nbsp;//是否打开 debug<br/> &nbsp; &nbsp;'compress_threshold' => 10240, &nbsp;//超过多少字节的数据时进行压缩<br/> &nbsp; &nbsp;'persistant' => false &nbsp;//是否使用持久连接<br/> &nbsp; &nbsp;);<br/>// &nbsp; &nbsp;创建 memcached 对象实例<br/>$mc = new memcached($options);<br/>// &nbsp; &nbsp;设置此脚本使用的唯一标识符<br/>$key = 'mykey';<br/>// &nbsp; &nbsp;往 memcached 中写入对象<br/>$mc->add($key, 'some random strings');<br/>$val = $mc->get($key);<br/>echo "n".str_pad('$mc->add() ', 60, '_')."n";<br/>var_dump($val);<br/>// &nbsp; &nbsp;替换已写入的对象数据值<br/>$mc->replace($key, array('some'=>'haha', 'array'=>'xxx'));<br/>$val = $mc->get($key);<br/>echo "n".str_pad('$mc->replace() ', 60, '_')."n";<br/>var_dump($val);<br/>// &nbsp; &nbsp;删除 memcached 中的对象<br/>$mc->delete($key);<br/>$val = $mc->get($key);<br/>echo "n".str_pad('$mc->delete() ', 60, '_')."n";<br/>var_dump($val);<br/>?><br/></pre><br/><br/>是不是很简单，在实际应用中，通常会把数据库查询的结果集保存到 memcached 中，下次访问时直接从 memcached 中获取，而不再做数据库查询操作，这样可以在很大程度上减轻数据库的负担。通常会将 SQL 语句 md5() 之后的值作为唯一标识符 key。下边是一个利用 memcached 来缓存数据库查询结果集的示例（此代码片段紧接上边的示例代码）：<br/><br/><br/><?php<br/>$sql = 'SELECT * FROM users';<br/>$key = md5($sql); &nbsp; //memcached 对象标识符<br/>if ( !($datas = $mc->get($key)) ) {<br/> &nbsp; &nbsp;// &nbsp; &nbsp;在 memcached 中未获取到缓存数据，则使用数据库查询获取记录集。<br/> &nbsp; &nbsp;echo "n".str_pad('Read datas from MySQL.', 60, '_')."n";<br/> &nbsp; &nbsp;$conn = mysql_connect('localhost', 'test', 'test');<br/> &nbsp; &nbsp;mysql_select_db('test');<br/> &nbsp; &nbsp;$result = mysql_query($sql);<br/> &nbsp; &nbsp; &nbsp;while ($row = mysql_fetch_object($result))<br/> &nbsp; &nbsp; &nbsp; &nbsp;$datas[] = $row;<br/> &nbsp; &nbsp;// &nbsp; &nbsp;将数据库中获取到的结果集数据保存到 memcached 中，以供下次访问时使用。<br/> &nbsp; &nbsp;$mc->add($key, $datas);<br/>} else {<br/> &nbsp; &nbsp; &nbsp;echo "n".str_pad('Read datas from memcached.', 60, '_')."n";<br/>}<br/>var_dump($datas);<br/>?><br/><br/><br/>可以看出，使用 memcached 之后，可以减少数据库连接、查询操作，数据库负载下来了，脚本的运行速度也提高了。</div></div><br/><br/>6.使用memcache情况，计数器、数据压缩的例子<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>使用情况一：统计 <br/><?php<br/>//访问统计<br/>$memcache = new Memcache;<br/>$memcache->connect('localhost', 11211) or die ("Could not connect"); <br/>if($s=$memcache->get('a')) {<br/> &nbsp; &nbsp;$s=$s+1;<br/> &nbsp; &nbsp;$memcache->set('a',$s);<br/>}<br/>else<br/>$memcache->set('a',1);<br/>echo '访问结果为：'.$s;<br/>?><br/><br/>其实我们可以用increment方法代替上面的做法<br/><?php <br/>$memcache = new Memcache;<br/>$memcache->connect('localhost', 11211) or die ("Could not connect");<br/><br/>if($s=$memcache->increment('a',1)) {<br/> &nbsp; &nbsp;echo $s; &nbsp; &nbsp;<br/>}<br/>else<br/>$memcache->set('a',1);<br/>?><br/><br/> <br/><br/>数据压缩：<br/><?php<br/>$memcache = new Memcache;<br/>$memcache->connect('localhost', 11211) or die ("Could not connect"); <br/>$test=(str_repeat('jetwong',100000));<br/>$memcache->set('b',($test));<br/>?><br/>使用压缩：<br/><?php <br/>$memcache = new Memcache;<br/>$memcache->connect('localhost', 11211) or die ("Could not connect"); <br/>$test=(str_repeat('jetwong',100000));<br/>$memcache->set('b',($test),MEMCACHE_COMPRESSED);<br/>?><br/><br/><br/>使用情况说明：<br/><br/>前台比较 目前内存bytes 总共读取bytes_read 总共写入bytes_written<br/> <br/>压缩前 700085 700081 416<br/> <br/>压缩后 1131 1125 13<br/> <br/>可能看到压缩后明显占用内存少了不少<br/><br/> <br/><br/>Memcache内存的更新清理(delete flush)<br/><?php<br/>$memcache = new Memcache;<br/>$memcache->connect('localhost', 11211) or die ("Could not connect");<br/><br/>/*设置值*/<br/>$status = $memcache->getStats();<br/>echo '设置前内存使用情况'.$status['bytes'].'<br/>';<br/>echo '设置后';<br/>for($i=0;$i<9;$i++) {<br/> &nbsp; &nbsp;$memcache->set('b'.$i,rand(1,99)); &nbsp; &nbsp;<br/> &nbsp; &nbsp;echo '<br/>'.$i.'->'.$memcache->get('b'.$i); &nbsp; &nbsp; &nbsp; <br/>}<br/><br/>/*查看设置的值*/<br/>$status = $memcache->getStats();<br/>echo 'delete前内存使用情况'.$status['bytes'].'<br/>';<br/>echo '<br/>开始delete';<br/>for($i=0;$i<9;$i++) {<br/> &nbsp; &nbsp;$memcache->delete('b'.$i); &nbsp; &nbsp;<br/> &nbsp; &nbsp;echo '<br/>'.$i.'->'.$memcache->get('b'.$i);<br/>}<br/><br/>/*查看flush使用的情况*/<br/>$status = $memcache->getStats();<br/>echo '使用flush前内存使用情况'.$status['bytes'].'<br/>';<br/>echo '使用flush情况：';<br/>for($i=0;$i<9;$i++) {<br/> &nbsp; &nbsp;$memcache->set('b'.$i,rand(1,99)); &nbsp; &nbsp;<br/> &nbsp; &nbsp;echo '<br/>'.$i.'->'.$memcache->get('b'.$i); &nbsp;<br/>}<br/>$memcache->flush();<br/>echo 'flush之后：';<br/>for($i=0;$i<9;$i++) { &nbsp; &nbsp; &nbsp; &nbsp;<br/> &nbsp; &nbsp;echo '<br/>'.$i.'->'.$memcache->get('b'.$i);<br/>}<br/>$status = $memcache->getStats();<br/>echo 'flush后内存使用情况'.$status['bytes'].'<br/>';<br/>?><br/><br/>内存超量的测试(set)<br/><br/> 我们把内存设为2M<br/><br/>./memcached -d -m 2 -p 11211 -u root<br/><br/> <?php<br/>$memcache = new Memcache;<br/>$memcache->connect('localhost', 11211) or die ("Could not connect");<br/><br/>//600K左右<br/>$test1= str_repeat('jetlee',100000);<br/>//600K左右<br/>$test2= str_repeat('jetlee',100000);<br/>//600K左右<br/>$test3= str_repeat('李连杰',200000);<br/>//600K左右<br/>$test4= str_repeat('连杰李',100000);<br/>//200K<br/>$test5= file_get_contents('http://img.pconline.com.cn/images/photoblog/2988177/20068/4/1154688770042_mthumb.JPG');<br/>$test6= file_get_contents('http://img.pconline.com.cn/images/photoblog/1767557/20069/28/1159417108902_mthumb.jpg');<br/><br/>for($i=1;$i<=6;$i++) {<br/> &nbsp; &nbsp;$j='test'.$i;<br/> &nbsp; &nbsp;if($memcache->set($j,$$j)) {<br/> &nbsp; &nbsp; &nbsp; &nbsp;echo $j.'->设置成功<br/>';<br/> &nbsp; &nbsp; &nbsp; &nbsp;$status = $memcache->getStats();<br/> &nbsp; &nbsp; &nbsp; &nbsp;echo '内存:'.$status['bytes'].'<br/>';<br/> &nbsp; &nbsp;}<br/> &nbsp; &nbsp;else {<br/> &nbsp; &nbsp; &nbsp; &nbsp;echo $j.'->设置失败<br/>';<br/> &nbsp; &nbsp;}<br/>}<br/>?><br/><br/>执行结果：<br/><br/>test1->设置成功<br/>内存:600042<br/>test2->设置成功<br/>内存:1200084<br/>test3->设置失败<br/>test4->设置成功<br/>内存:1200084<br/>test5->设置失败<br/>test6->设置失败<br/><br/>刚好印证我们的计算，不过20万的repeat为什么会失败，不是太了解，，，，，，<br/><br/>总结：<br/>示例：<br/><?<br/>//设置篇<br/>if($data = $memcache->get('k',$v)) {<br/> &nbsp; &nbsp;//显示我们的数据<br/> &nbsp; &nbsp;}<br/>else {<br/> &nbsp; &nbsp;$data = get_from_database; //得到数据源<br/> &nbsp; &nbsp;if(!$memcache->set('k',$data), MEMCACHE_COMPRESSED) //开始设置<br/> &nbsp; &nbsp;log(); &nbsp; &nbsp;//不成功,记录失败信息 &nbsp; &nbsp;<br/>}<br/>?></div></div><br/><br/><br/>现在ArthurXF本人正在搞PHP等技术培训，如果想学习的人可以跟我联系。另外培训的招生简章在这个网址，想了解的可以去看看。加我QQ：29011218交流也可。<br/><a href="http://www.bizeway.net/read.php/285.htm" target="_blank">PHP培训招生简章</a><br/>Tags - <a href="tag.php?tag=memcache" rel="tag">memcache</a> , <a href="tag.php?tag=%E5%88%86%E5%B8%83%E5%BC%8F%E5%86%85%E5%AD%98%E5%85%B1%E4%BA%AB" rel="tag">分布式内存共享</a>
]]>
</description>
</item><item>
<link>http://www.bizeway.net/read.php?157</link>
<title><![CDATA[跟ArthurXF探讨大型网站架构——资料篇1]]></title> 
<author>ArthurXF &lt;arthurxf@gmail.com&gt;</author>
<category><![CDATA[网站架构]]></category>
<pubDate>Fri, 10 Aug 2007 07:47:47 +0000</pubDate> 
<guid>http://www.bizeway.net/read.php?157</guid> 
<description>
<![CDATA[ 
	　　随着信息技术的应用和发展，未来单台计算机的处理能力是越来越不能满足要求了，势必将发展成为众多计算级组成的集群来做服务，不断的将更多的计算机加入集群就可以满足更大压力需求。<br/>　　我这里说的集群是概念上的集群，最终这种大型的集群势必需要解决分布式运算（即众多CPU协同运算）和分布式存储（即文件分布在各个计算机中）和分布式内存共享（即形成了数据共享使用），这些问题都解决了，其实就是由很多分布在各地的计算机组成了一台超级计算机，由这台超级计算机去完成一定的服务。我觉得这势必是未来计算机发展的方向，当然这里还需要解决很多问题。<br/>　　目前已经有了很多很成熟分布式的系统，我针对上面3个大方向，收集了一些资料，仅供参考。<br/>　　先提供的分布式运算，也叫平行运算的资料。<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">LAM/MPI CLuster System With FreeBSD 5.3 HOWTO<br/>tonnyom < tonnyom # hotmail.com > <br/><br/>版权声明：可以任意转载，转载时请务必以文字形式标明文章原始出处和作者信息及本声明. <br/><br/>前言<br/>MPI（Message Passing Interface）消息传送接口<br/>它不是一个协议，但它的地位已经实际上是一个协议了。它主要用于在分布式存储系统中的并行程序通信。MPI是一个函数库，它可以通过Fortran和C程序进行调用，MPI的好处是它速度比较快，而且移植性比较好。 <br/><br/>Cluster<br/>目前常见的Cluster(集群)架构有两种，一种是Web/Internet Cluster System，这种架构主要是将资料放置在不同的主机上面，亦即由多部主机同时负责一项服务；而另外一种则是所谓的平行运算了(Parallel Algorithms Cluster System)！平行运算其实就是将同一个运算的工作，交给整个Cluster里面的所有CPU来进行同步运算的一个功能。由于使用到多个CPU的运算能力，所以可以加快运算的速度。 <br/><br/>此文档所安装架设的LAM/MPI Cluster System属于后者，由于实验环境条件以及自身能力的限制，可能文档有部分解释不详尽，如有疑问请来信与我联系，我将尽力完善此文档，谢谢！ <br/><br/>软件及平台<br/>Server &#92;&#92; FreeBSD 5.3 Stable<br/>IP:172.18.5.247 <br/>Hostname: center.the9.com <br/><br/>Client &#92;&#92; FreeBSD 5.3 Release<br/>IP:172.18.5.80 <br/>Hostname: node1.the9.com <br/><br/>apache_1.3.29 &#92;&#92; All Ports Install<br/>php4-4.3.10<br/>php4-gd-4.3.10<br/>php4-extensions-1.0<br/>lam-6.5.9<br/>ganglia-monitor-core-2.5.6<br/>ganglia-webfrontend-2.5.5 <br/><br/>目的<br/>架设一套基于FreeBSD 5.3的LAM/MPI Cluster System. <br/><br/>安装及配置<br/><br/>一,各节点系统 /etc/hosts 的基本配置 &#92;&#92; 如果内网有DNS,则配置好系统中的 /etc/resolv.conf 即可!<br/>center.the9.com <br/>#more /etc/hosts<br/>172.18.5.247 center.the9.com<br/>172.18.5.80 node1.the9.com <br/><br/>node1.the9.com <br/><br/>#more /etc/hosts<br/>172.18.5.247 center.the9.com<br/>172.18.5.80 node1.the9.com <br/><br/>二,Apache+PHP Server 的架设<br/>center.the9.com <br/><br/>#cd /usr/ports/www/apache13-modssl<br/>#make install clean &#92;&#92; 安装 APACHE <br/><br/>#cd /usr/ports/lang/php4-extensions<br/>#make install clean &#92;&#92; 安装 PHP. 切记这里一定要选择安装GD库 <br/><br/>#vi /usr/local/etc/apache/http.conf &#92;&#92; 加入以下相关参数 <br/><br/>AddType application/x-httpd-php .php<br/>AddType application/x-httpd-php-source .phps <br/><br/>三,NFS Server-Client 的架设<br/>NFS Server(center.the9.com) <br/><br/>#vi /etc/rc.conf &#92;&#92; 加入以下相关参数 <br/><br/>nfs_server_enable="YES"<br/>nfs_server_flags="-u -t -n 4 -h 172.18.5.247"<br/>mountd_enable="YES"<br/>mountd_flags="-r -l"<br/>rpcbind_enable="YES"<br/>rpcbind_flags="-l -h 172.18.5.247" <br/><br/>#vi /etc/exports &#92;&#92; 配置NFS共享目录 <br/><br/>/cluster -maproot=0:0 -network 172.18.5.0 -mask 255.255.255.0 <br/><br/>#/etc/rc.d/rpcbind start #/etc/rc.d/mountd start #/etc/rc.d/nfsd start &#92;&#92; 启动NFS Server <br/><br/>NFS Client(node1.the9.com) <br/><br/>#vi /etc/rc.conf &#92;&#92; 加入以下相关参数 <br/><br/>nfs_client_enable="YES" <br/><br/>#vi /etc/fstab &#92;&#92; 加入以下相关参数 172.18.5.247:/cluster /cluster nfs rw 0 0 <br/><br/>#mount /cluster &#92;&#92; Mount /Cluster 目录 <br/><br/>四,LAM/MPI Cluster System的架设<br/>Step 1: 基本安装<br/>center.the9.com <br/><br/>#cd /usr/ports/net/lam<br/>#make install clean &#92;&#92; 安装 LAM <br/><br/>#cd /usr/ports/sysutils/ganglia-monitor-core <br/>#make install clean &#92;&#92; 安装Cluster System 所需的Monitor Core <br/><br/>#cd /usr/ports/sysutils/ganglia-webfrontend<br/>#make install clean &#92;&#92; 安装上面Monitor Core 所需的WEB GUI <br/><br/>node1.the9.com<br/>#cd /usr/ports/net/lam<br/>#make install clean &#92;&#92; 安装 LAM <br/><br/>#cd /usr/ports/sysutils/ganglia-monitor-core <br/>#make install clean &#92;&#92; 安装Cluster System 所需的Monitor Core <br/><br/>Step 2: 配置 <br/><br/>center.the9.com <br/><br/>#cd /usr/local/etc/<br/>#cp gmond.conf.sample gmond.conf<br/>#cp gmetad.conf.sample gmetad.conf <br/><br/>#vi gmond.conf &#92;&#92; 修改name和mcast_if 的参数 <br/><br/># The name of the cluster this node is a part of<br/># default: "unspecified"<br/>name "BSDCluster" <br/><br/># The multicast interface for gmond to send/receive data on<br/># default: the kernel decides based on routing configuration<br/>mcast_if lnc0 <br/><br/>#vi gmetad.conf &#92;&#92; 修改data_source 的参数 <br/><br/># data_source "my cluster" 10 localhost my.machine.edu:8649 1.2.3.5:8655<br/># data_source "my grid" 50 1.3.4.7:8655 grid.org:8651 grid-backup.org:8651<br/># data_source "another source" 1.3.4.7:8655 1.3.4.8 <br/><br/>data_source "BSDCluster" 10 center.the9.com:8649 node1.the9.com:8649 <br/><br/>#vi /usr/local/etc/lam-bhost.def &#92;&#92; 加入各node 的hostname <br/><br/>center.the9.com<br/>node1.the9.com <br/><br/>node1.the9.com &#92;&#92; 基本上,每个新增节点的配置都要和以上center.the9.com 的配置一致.<br/>node2.the9.com<br/>nodeX.the9.com ........ <br/><br/>五,Monitor WEB GUI 的配置<br/>center.the9.com <br/><br/>#vi /usr/local/etc/apache/http.conf &#92;&#92; 加入以下相关参数,配置Cluster Monitor Web的路径 <br/><br/>Alias /ganglia/ "/usr/local/www/ganglia/" <br/><br/>Options Indexes FollowSymlinks MultiViews<br/>AllowOverride None<br/>Order allow,deny<br/>Allow from all <br/><br/>#vi /etc/rc.conf &#92;&#92; 加入以下参数 <br/><br/>apache_enable="YES"<br/>apache_flags="-DSSL"<br/>apache_pidfile="/var/run/httpd.pid" <br/><br/>#/usr/local/etc/rc.d/apache.sh start &#92;&#92; 启动APACHE <br/><br/>六,启动并调试Cluster System以及检查测试<br/>center.the9.com node1.the9.com nodeX.the9.com etc.... <br/><br/>#/usr/local/etc/rc.d/gmetad.sh start #/usr/local/etc/rc.d/gmond.sh start &#92;&#92; 启动Cluster 各Node的Monitor Core <br/><br/>center.the9.com <br/><br/>$lamboot -dv &#92;&#92; 启动各节点的lam daemon <br/><br/>LAM 6.5.9/MPI 2 C++/ROMIO - Indiana University <br/><br/>lamboot: boot schema file: /usr/local/etc/lam-bhost.def<br/>lamboot: opening hostfile /usr/local/etc/lam-bhost.def<br/>lamboot: found the following hosts:<br/>lamboot: n0 center.the9.com<br/>lamboot: n1 node1.the9.com<br/>lamboot: resolved hosts:<br/>lamboot: n0 center.the9.com --> 172.18.5.247<br/>lamboot: n1 node1.the9.com --> 172.18.5.80<br/>lamboot: found 2 host node(s)<br/>lamboot: origin node is 0 (center.the9.com)<br/>Executing hboot on n0 (center.the9.com - 1 CPU)...<br/>lamboot: attempting to execute "hboot -t -c lam-conf.lam -d -v -I " -H 172.18.5.247 -P 53433 -n 0 -o 0 ""<br/>hboot: process schema = "/usr/local/etc/lam-conf.lam"<br/>hboot: found /usr/local/bin/lamd<br/>hboot: performing tkill<br/>hboot: tkill <br/>hboot: booting...<br/>hboot: fork /usr/local/bin/lamd<br/>[1] 28338 lamd -H 172.18.5.247 -P 53433 -n 0 -o 0 -d<br/>hboot: attempting to execute <br/>Executing hboot on n1 (node1.the9.com - 1 CPU)...<br/>lamboot: attempting to execute "/usr/bin/ssh node1.the9.com -n echo $SHELL"<br/>lamboot: got remote shell /bin/sh<br/>lamboot: attempting to execute "/usr/bin/ssh node1.the9.com -n (. ./.profile; hboot -t -c lam-conf.lam -d -v -s -I "-H 172.18.5.247 -P 53433 -n 1 -o 0 " )"<br/>hboot: process schema = "/usr/local/etc/lam-conf.lam"<br/>hboot: found /usr/local/bin/lamd<br/>hboot: performing tkill<br/>hboot: tkill <br/>hboot: booting...<br/>hboot: fork /usr/local/bin/lamd<br/>[1] 43110 lamd -H 172.18.5.247 -P 53433 -n 1 -o 0 -d<br/>topology done <br/>lamboot completed successfully <br/><br/>$lamhalt -dv &#92;&#92; 停止各节点的lam daemon <br/><br/>LAM 6.5.9/MPI 2 C++/ROMIO - Indiana University <br/><br/>Shutting down LAM<br/>lamhalt: sending HALT to n1 (node1.the9.com)<br/>lamhalt: waiting for HALT ACKs from remote LAM daemons<br/>lamhalt: received HALT ACK from n1 (node1.the9.com)<br/>lamhalt: sending final HALT to n0 (center.the9.com)<br/>lamhalt: local LAM daemon halted<br/>LAM halted <br/><br/>$lamnodes &#92;&#92; 查看node info $lamexec N echo "hello" &#92;&#92; 查看node run status <br/><br/>center.the9.com <br/><br/>#ps ax<br/>28338 ?? I 0:00.04 /usr/local/bin/lamd -H 172.18.5.247 -P 53433 -n 0 -o 0 -d <br/><br/>node1.the9.com <br/><br/>#ps ax<br/>43110 ?? S 0:00.05 /usr/local/bin/lamd -H 172.18.5.247 -P 53433 -n 1 -o 0 -d <br/><br/>Cluster Monitor WEB GUI <br/><br/>http://center.the9.com/ganglia/ &#92;&#92; 用这个查看系统数据,还是很直观的,是以RRDTool 生成的 images. :) <br/><br/>CPUs Total: 2 <br/>Hosts up: 2 <br/>Hosts down: 0 <br/>Avg Load (15, 5, 1m):<br/>1%, 4%, 0% <br/>Localtime:<br/>2004-12-31 10:50 <br/><br/>Total CPUs: 2<br/>Total Memory: 0.2 GB<br/>Total Disk: 8.0 GB<br/>Most Full Disk: 61.2% Used <br/><br/>参考<br/>http://lam-mpi.org/ lam-mpi http://www.beowulf.org/ beowulf FAQ http://www.lasg.ac.cn/cgi-bin/forum/topic.cgi?forum=4&topic=2247 MPI Cluster With RH9 http://lists.freebsd.org/mailman/listinfo/freebsd-cluster freebsd cluster maillist </div></div><br/><br/><br/>现在ArthurXF本人正在搞PHP等技术培训，如果想学习的人可以跟我联系。另外培训的招生简章在这个网址，想了解的可以去看看。加我QQ：29011218交流也可。<br/><a href="http://www.bizeway.net/read.php/285.htm" target="_blank">PHP培训招生简章</a><br/>Tags - <a href="tag.php?tag=lam%2Fmpi" rel="tag">lam/mpi</a> , <a href="tag.php?tag=cluster" rel="tag">cluster</a> , <a href="tag.php?tag=system" rel="tag">system</a> , <a href="tag.php?tag=%E5%88%86%E5%B8%83%E5%BC%8F%E8%BF%90%E7%AE%97" rel="tag">分布式运算</a> , <a href="tag.php?tag=freebsd" rel="tag">freebsd</a>
]]>
</description>
</item><item>
<link>http://www.bizeway.net/read.php?154</link>
<title><![CDATA[跟ArthurXF探讨大型网站架构——学习篇3]]></title> 
<author>ArthurXF &lt;arthurxf@gmail.com&gt;</author>
<category><![CDATA[网站架构]]></category>
<pubDate>Sun, 05 Aug 2007 16:18:45 +0000</pubDate> 
<guid>http://www.bizeway.net/read.php?154</guid> 
<description>
<![CDATA[ 
	　　这里我先转贴别人做的一个系统架构，这个架构还是很具有借鉴意义的。<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>服务器的大用户量的承载方案 -------作者：叶金荣 &nbsp;主页:http://www.imysql.cn<br/><br/>一、前言<br/><br/>[Copy to clipboard] [ - ]CODE:<br/>二、编译安装<br/>三、 安装MySQL、memcache<br/>四、 安装Apache、PHP、eAccelerator、php-memcache<br/>五、 安装Squid<br/>六、后记<br/><br/><br/><br/>一、前言<br/><br/>一、前言，准备工作<br/> &nbsp; &nbsp; &nbsp; 当前，LAMP开发模式是WEB开发的首选，如何搭建一个高效、可靠、稳定的WEB服务器一直是个热门主题，本文就是这个主题的一次尝试。<br/>我们采用的架构图如下：<br/><br/> &nbsp; -------- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ---------- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ------------- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --------- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ------------<br/>&#124; 客户端 &#124; ===> &#124;负载均衡器&#124; ===> &#124;反向代理/缓存&#124; ===> &#124;WEB服务器&#124; ===> &#124;数据库服务器&#124;<br/> &nbsp; -------- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ---------- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ------------- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --------- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ------------<br/> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Nginx &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Squid &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Apache,PHP &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MySQL<br/> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; eAccelerator/memcache<br/>准备工作：<br/>服务器： Intel(R) Xeon(TM) CPU 3.00GHz * 2, 2GB mem, SCISC 硬盘<br/>操作系统：CentOs4.4，内核版本2.6.9-22.ELsmp，gcc版本3.4.4<br/>软件：<br/>Apache 2.2.3（能使用MPM模式）<br/>PHP 5.2.0（选用该版本是因为5.2.0的引擎相对更高效）<br/>eAccelerator 0.9.5（加速PHP引擎，同时也可以加密PHP源程序）<br/>memcache 1.2.0（用于高速缓存常用数据）<br/>libevent 1.2a（memcache工作机制所需）<br/>MySQL 5.0.27（选用二进制版本，省去编译工作）<br/>Nginx 0.5.4（用做负载均衡器）<br/>squid-2.6.STABLE6（做反向代理的同时提供专业缓存功能）<br/><br/>二、编译安装<br/>二、编译安装<br/>一、) 安装Nginx<br/>1.) 安装<br/>Nginx发音为[engine x]，是由俄罗斯人Igor Sysoev建立的项目,基于BSD许可。据说他当初是F5的成员之一，英文主页：<a href="http://nginx.net" target="_blank">http://nginx.net</a>。俄罗斯的一些大网站已经使用它超过两年多了，一直表现不凡。<br/>Nginx的编译参数如下：<br/><br/><div class="code">&#91;root@localhost&#93;#./configure --prefix=/usr/local/server/nginx --with-openssl=/usr/include &#92;<br/>--with-pcre=/usr/include/pcre/ --with-http_stub_status_module --without-http_memcached_module &#92;<br/>--without-http_fastcgi_module --without-http_rewrite_module --without-http_map_module &#92;<br/>--without-http_geo_module --without-http_autoindex_module<br/>在这里，需要说明一下，由于Nginx的配置文件中我想用到正则，所以需要 pcre 模块的支持。我已经安装了 pcre 及 pcre-devel 的rpm包，但是 Ngxin 并不能正确找到 .h/.so/.a/.la 文件，因此我稍微变通了一下：<br/><br/>&#91;Copy to clipboard&#93; &#91; - &#93;CODE:<br/>&#91;root@localhost&#93;#mkdir /usr/include/pcre/.libs/<br/>&#91;root@localhost&#93;#cp /usr/lib/libpcre.a /usr/include/pcre/.libs/libpcre.a<br/>&#91;root@localhost&#93;#cp /usr/lib/libpcre.a /usr/include/pcre/.libs/libpcre.la<br/>然后，修改 objs/Makefile 大概在908行的位置上，注释掉以下内容：<br/><br/>./configure --disable-shared<br/>接下来，就可以正常执行 make 及 make install 了。<br/><br/>2.) 修改配置文件 /usr/local/server/nginx/conf/nginx.conf<br/>以下是我的 nginx.conf 内容，仅供参考：<br/><br/>&#91;Copy to clipboard&#93; &#91; - &#93;CODE:<br/>#运行用户<br/>user &nbsp; nobody nobody;<br/>#启动进程<br/>worker_processes &nbsp; 2;<br/>#全局错误日志及PID文件<br/>error_log &nbsp; logs/error.log notice;<br/>pid &nbsp; &nbsp; &nbsp; &nbsp; logs/nginx.pid;<br/>#工作模式及连接数上限<br/>events {<br/>use epoll;<br/>worker_connections &nbsp; &nbsp; &nbsp; 1024;<br/>}<br/>#设定http服务器，利用它的反向代理功能提供负载均衡支持<br/>http {<br/>#设定mime类型<br/>include &nbsp; &nbsp; &nbsp; conf/mime.types;<br/>default_type &nbsp; application/octet-stream;<br/>#设定日志格式<br/>log_format main &nbsp; &nbsp; &nbsp; &nbsp; &#039;$remote_addr - $remote_user &#91;$time_local&#93; &#039;<br/>&#039;&quot;$request&quot; $status $bytes_sent &#039;<br/>&#039;&quot;$http_referer&quot; &quot;$http_user_agent&quot; &#039;<br/>&#039;&quot;$gzip_ratio&quot;&#039;;<br/>log_format download &#039;$remote_addr - $remote_user &#91;$time_local&#93; &#039;<br/>&#039;&quot;$request&quot; $status $bytes_sent &#039;<br/>&#039;&quot;$http_referer&quot; &quot;$http_user_agent&quot; &#039;<br/>&#039;&quot;$http_range&quot; &quot;$sent_http_content_range&quot;&#039;;<br/>#设定请求缓冲<br/>client_header_buffer_size &nbsp; &nbsp; 1k;<br/>large_client_header_buffers &nbsp; 4 4k;<br/>#开启gzip模块<br/>gzip on;<br/>gzip_min_length &nbsp; 1100;<br/>gzip_buffers &nbsp; &nbsp; 4 8k;<br/>gzip_types &nbsp; &nbsp; &nbsp; text/plain;<br/>output_buffers &nbsp; 1 32k;<br/>postpone_output &nbsp; 1460;<br/>#设定access log<br/>access_log &nbsp; logs/access.log &nbsp; main;<br/>client_header_timeout &nbsp; 3m;<br/>client_body_timeout &nbsp; &nbsp; 3m;<br/>send_timeout &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 3m;<br/>sendfile &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; on;<br/>tcp_nopush &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; on;<br/>tcp_nodelay &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; on;<br/>keepalive_timeout &nbsp; 65;<br/>#设定负载均衡的服务器列表<br/>upstream mysvr {<br/>#weigth参数表示权值，权值越高被分配到的几率越大<br/>#本机上的Squid开启3128端口<br/>server 192.168.8.1:3128 weight=5;<br/>server 192.168.8.2:80 &nbsp; weight=1;<br/>server 192.168.8.3:80 &nbsp; weight=6;<br/>}<br/>#设定虚拟主机<br/>server {<br/>listen &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 80;<br/>server_name &nbsp; &nbsp; 192.168.8.1 &#91;url&#93;www.yejr.com&#91;/url&#93;;<br/>charset gb2312;<br/>#设定本虚拟主机的访问日志<br/>access_log &nbsp; logs/www.yejr.com.access.log &nbsp; main;<br/>#如果访问 /img/*, /js/*, /css/* 资源，则直接取本地文件，不通过squid<br/>#如果这些文件较多，不推荐这种方式，因为通过squid的缓存效果更好<br/>location ~ ^/(img&#124;js&#124;css)/ &nbsp; {<br/>root &nbsp; &nbsp; /data3/Html;<br/>expires 24h;<br/>}<br/>#对 &quot;/&quot; 启用负载均衡<br/>location / {<br/>proxy_pass &nbsp; &nbsp; &nbsp;http://mysvr;<br/>proxy_redirect &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; off;<br/>proxy_set_header &nbsp; &nbsp; &nbsp; &nbsp; Host $host;<br/>proxy_set_header &nbsp; &nbsp; &nbsp; &nbsp; X-Real-IP $remote_addr;<br/>proxy_set_header &nbsp; &nbsp; &nbsp; &nbsp; X-Forwarded-For $proxy_add_x_forwarded_for;<br/>client_max_body_size &nbsp; &nbsp; 10m;<br/>client_body_buffer_size 128k;<br/>proxy_connect_timeout &nbsp; 90;<br/>proxy_send_timeout &nbsp; &nbsp; &nbsp; 90;<br/>proxy_read_timeout &nbsp; &nbsp; &nbsp; 90;<br/>proxy_buffer_size &nbsp; &nbsp; &nbsp; 4k;<br/>proxy_buffers &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 4 32k;<br/>proxy_busy_buffers_size 64k;<br/>proxy_temp_file_write_size 64k;<br/>}<br/>#设定查看Nginx状态的地址<br/>location /NginxStatus {<br/>stub_status &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; on;<br/>access_log &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; on;<br/>auth_basic &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;NginxStatus&quot;;<br/>auth_basic_user_file &nbsp; conf/htpasswd;<br/>}<br/>}<br/>}<br/>备注：conf/htpasswd 文件的内容用 apache 提供的 htpasswd 工具来产生即可，内容大致如下：<br/> &nbsp; 3.) 查看 Nginx 运行状态<br/>输入地址 http://192.168.8.1/NginxStatus/，输入验证帐号密码，即可看到类似如下内容：<br/>Active connections: 328<br/>server accepts handled requests<br/>9309 &nbsp; &nbsp; 8982 &nbsp; &nbsp; &nbsp; &nbsp; 28890<br/>Reading: 1 Writing: 3 Waiting: 324<br/><br/>第一行表示目前活跃的连接数<br/>第三行的第三个数字表示Nginx运行到当前时间接受到的总请求数，如果快达到了上限，就需要加大上限值了。<br/>第四行是Nginx的队列状态<br/><br/>三、 安装MySQL、memcache<br/><br/><br/><br/>1.) 安装MySQL，步骤如下：<br/><br/>&#91;Copy to clipboard&#93; &#91; - &#93;CODE:<br/>&#91;root@localhost&#93;#tar zxf mysql-standard-5.0.27-linux-i686.tar.gz -C /usr/local/server<br/>&#91;root@localhost&#93;#mv /usr/local/server/mysql-standard-5.0.27-linux-i686 /usr/local/server/mysql<br/>&#91;root@localhost&#93;#cd /usr/local/server/mysql<br/>&#91;root@localhost&#93;#./scripts/mysql_install_db --basedir=/usr/local/server/mysql &#92;<br/>--datadir=/usr/local/server/mysql/data --user=nobody<br/>&#91;root@localhost&#93;#cp /usr/local/server/mysql/support-files/my-large.cnf &#92;<br/>/usr/local/server/mysql/data/my.cnf<br/>2.) 修改 MySQL 配置，增加部分优化参数，如下：<br/>&#91;root@localhost&#93;#vi /usr/local/server/mysql/data/my.cnf<br/><br/>&#91;Copy to clipboard&#93; &#91; - &#93;CODE:<br/>主要内容如下：<br/>&#91;mysqld&#93;<br/>basedir = /usr/local/server/mysql<br/>datadir = /usr/local/server/mysql/data<br/>user &nbsp; &nbsp; = nobody<br/>port &nbsp; &nbsp; = 3306<br/>socket &nbsp; = /tmp/mysql.sock<br/>wait_timeout &nbsp; &nbsp; = 30<br/>long_query_time=1<br/>#log-queries-not-using-indexes = TRUE<br/>log-slow-queries=/usr/local/server/mysql/slow.log<br/>log-error = /usr/local/server/mysql/error.log<br/>external-locking = FALSE<br/>key_buffer_size = 512M<br/>back_log &nbsp; &nbsp; &nbsp; &nbsp; = 400<br/>table_cache &nbsp; &nbsp; = 512<br/>sort_buffer_size = 2M<br/>join_buffer_size = 4M<br/>read_buffer_size = 2M<br/>read_rnd_buffer_size &nbsp; &nbsp; = 4M<br/>myisam_sort_buffer_size = 64M<br/>thread_cache_size &nbsp; &nbsp; &nbsp; = 32<br/>query_cache_limit &nbsp; &nbsp; &nbsp; = 2M<br/>query_cache_size &nbsp; &nbsp; &nbsp; &nbsp; = 64M<br/>thread_concurrency &nbsp; &nbsp; &nbsp; = 4<br/>thread_stack &nbsp; &nbsp; = 128K<br/>tmp_table_size &nbsp; = 64M<br/>binlog_cache_size &nbsp; &nbsp; &nbsp; = 2M<br/>max_binlog_size = 128M<br/>max_binlog_cache_size &nbsp; = 512M<br/>max_relay_log_size &nbsp; &nbsp; &nbsp; = 128M<br/>bulk_insert_buffer_size = 8M<br/>myisam_repair_threads &nbsp; = 1<br/>skip-bdb<br/>#如果不需要使用innodb就关闭该选项<br/>#skip-innodb<br/>innodb_data_home_dir &nbsp; &nbsp; = /usr/local/server/mysql/data/<br/>innodb_data_file_path &nbsp; = ibdata1:256M;ibdata2:256M:autoextend<br/>innodb_log_group_home_dir &nbsp; &nbsp; &nbsp; = /usr/local/server/mysql/data/<br/>innodb_log_arch_dir &nbsp; &nbsp; = /usr/local/server/mysql/data/<br/>innodb_buffer_pool_size = 512M<br/>innodb_additional_mem_pool_size = 8M<br/>innodb_log_file_size &nbsp; &nbsp; = 128M<br/>innodb_log_buffer_size &nbsp; = 8M<br/>innodb_lock_wait_timeout &nbsp; &nbsp; &nbsp; &nbsp; = 50<br/>innodb_flush_log_at_trx_commit &nbsp; = 2<br/>innodb_file_io_threads &nbsp; = 4<br/>innodb_thread_concurrency &nbsp; &nbsp; &nbsp; = 16<br/>innodb_log_files_in_group &nbsp; &nbsp; &nbsp; = 3<br/>以上配置参数请根据具体的需要稍作修改。运行以下命令即可启动 MySQL 服务器：<br/>/usr/local/server/mysql/bin/mysqld_safe &#92;<br/>--defaults-file=/usr/local/server/mysql/data/my.cnf &amp;<br/><br/>由于 MySQL 不是安装在标准目录下，因此必须要修改 mysqld_safe 中的 my_print_defaults 文件所在位置，才能通过<br/>mysqld_safe 来启动 MySQL 服务器。<br/>3.) memcache + libevent 安装编译安装：<br/><br/>&#91;Copy to clipboard&#93; &#91; - &#93;CODE:<br/>&#91;root@localhost&#93;#cd libevent-1.2a<br/>&#91;root@localhost&#93;#./configure --prefix=/usr/ &amp;&amp; make &amp;&amp; make install<br/>&#91;root@localhost&#93;#cd ../memcached-1.2.0<br/>&#91;root@localhost&#93;#./configure --prefix=/usr/local/server/memcached --with-libevent=/usr/<br/>&#91;root@localhost&#93;#make &amp;&amp; make install<br/>备注：如果 libevent 不是安装在 /usr 目录下，那么需要把 libevent-1.2a.so.1 拷贝/链接到 /usr/lib 中，否则<br/>memcached 无法正常加载。运行以下命令来启动 memcached：<br/>&#91;root@localhost&#93;#/usr/local/server/memcached/bin/memcached &#92;<br/>-l 192.168.8.1 -d -p 10000 -u nobody -m 128<br/><br/>表示用 daemon 的方式启动 memcached，监听在 192.168.8.1 的 10000 端口上，运行用户为 nobody，为其分配<br/>128MB 的内存。<br/><br/>四、 安装Apache、PHP、eAccelerator、php-memcache<br/><br/><br/><br/>四、) 安装Apache、PHP、eAccelerator、php-memcache由于Apache<br/>2下的php静态方式编译十分麻烦，因此在这里采用动态模块(DSO)方式。1.) 安装Apache 2.2.3<br/>&#91;root@localhost&#93;#./configure --prefix=/usr/local/server/apache --disable-userdir --disable-actions &#92;<br/>--disable-negotiation --disable-autoindex --disable-filter --disable-include --disable-status &#92;<br/>--disable-asis --disable-auth --disable-authn-default --disable-authn-file --disable-authz-groupfile &#92;<br/>--disable-authz-host --disable-authz-default --disable-authz-user --disable-userdir &#92;<br/>--enable-expires --enable-module=so</div><br/><br/>备注：在这里，取消了一些不必要的模块，如果你需要用到这些模块，那么请去掉部分参数。<br/>2.) 安装PHP 5.2.0<br/><br/>[Copy to clipboard] [ - ]CODE:<br/>[root@localhost]#./configure --prefix=/usr/local/server/php --with-mysql &#92;<br/>--with-apxs2=/usr/local/server/apache/bin/apxs --with-freetype-dir=/usr/ --with-png-dir=/usr/ &#92;<br/>--with-gd=/usr/ --with-jpeg-dir=/usr/ --with-zlib --enable-magic-quotes --with-iconv &#92;<br/>--without-sqlite --without-pdo-sqlite --with-pdo-mysql --disable-dom --disable-simplexml &#92;<br/>--enable-roxen-zts<br/>[root@localhost]#make && make install<br/>备注：如果不需要gd或者pdo等模块，请自行去掉。<br/>3.) 安装eAccelerator-0.9.5<br/><br/>[Copy to clipboard] [ - ]CODE:<br/>[root@localhost]#cd eAccelerator-0.9.5<br/>[root@localhost]#export PHP_PREFIX=/usr/local/server/php<br/>[root@localhost]#$PHP_PREFIX/bin/phpize<br/>[root@localhost]#./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config<br/>[root@localhost]#make && make install<br/>4.) 安装memcache模块<br/><br/>[Copy to clipboard] [ - ]CODE:<br/>[root@localhost]#cd memcache-2.1.0<br/>[root@localhost]#export PHP_PREFIX=/usr/local/server/php<br/>[root@localhost]#$PHP_PREFIX/bin/phpize<br/>[root@localhost]#./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config<br/>[root@localhost]#make && make install<br/>5.) 修改 php.ini 配置然后修改 php.ini，修改/加入类似以下内容：<br/><br/>[Copy to clipboard] [ - ]CODE:<br/>extension_dir = "/usr/local/server/php/lib/"<br/>extension="eaccelerator.so"<br/>eaccelerator.shm_size="32" &nbsp; &nbsp; &nbsp; ;设定eaccelerator的共享内存为32MB<br/>eaccelerator.cache_dir="/usr/local/server/eaccelerator"<br/>eaccelerator.enable="1"<br/>eaccelerator.optimizer="1"<br/>eaccelerator.check_mtime="1"<br/>eaccelerator.debug="0"<br/>eaccelerator.filter="*.php"<br/>eaccelerator.shm_max="0"<br/>eaccelerator.shm_ttl="0"<br/>eaccelerator.shm_prune_period="3600"<br/>eaccelerator.shm_only="0"<br/>eaccelerator.compress="1"<br/>eaccelerator.compress_level="9"<br/>eaccelerator.log_file = "/usr/local/server/apache/logs/eaccelerator_log"<br/>eaccelerator.allowed_admin_path = "/usr/local/server/apache/htdocs/ea_admin"<br/>extension="memcache.so"<br/><br/>在这里，最好是在apache的配置中增加默认文件类型的cache机制，即利用apache的expires模块，新增类似如下几行：<br/><br/>[Copy to clipboard] [ - ]CODE:<br/>ExpiresActive On<br/>ExpiresByType text/html "access plus 10 minutes"<br/>ExpiresByType text/css "access plus 1 day"<br/>ExpiresByType image/jpg "access 1 month"<br/>ExpiresByType image/gif "access 1 month"<br/>ExpiresByType image/jpg "access 1 month"<br/>ExpiresByType application/x-shockwave-flash "access plus 3 day"<br/>这么设置是由于我的这些静态文件通常很少更新，因此我选择的是"access"规则，如果更新相对比较频繁，可以改用"modification"规则;或者也可以用"access"规则，但是在文件更新的时候，执行一下"touch"命令，把文件的时间刷新一下即可。<br/><br/><br/><br/>五、 安装Squid<br/><br/><br/><br/>五、) 安装Squid<br/>[root@localhost]#./configure --prefix=/usr/local/server/squid --enable-async-io=100 --disable-delay-pools --disable-mem-gen-trace --disable-useragent-log --enable-kill-parent-hack --disable-arp-acl --enable-epoll --disable-ident-lookups --enable-snmp --enable-large-cache-files --with-large-files<br/>[root@localhost]#make && make install<br/><br/>或使用如下安装方法：<br/>[root@localhost]#yum install squid<br/><br/>如果是2.6的内核，才能支持epoll的IO模式，旧版本的内核则只能选择poll或其他模式了;另外，记得带上支持大文件的选项，否则在access<br/>log等文件达到2G的时候就会报错。设定 squid 的配置大概如下内容：<br/>#设定缓存目录为 /var/cache1 和 /var/lib/squid，每次处理缓存大小为128MB，当缓存空间使用达到95%时<br/>#新的内容将取代旧的而不直接添加到目录中，直到空间又下降到90%才停止这一活动<br/>#/var/cache1 最大1024MB，/var/lib/squid 最大 5000MB，都是 16*256 级子目录<br/><br/>[Copy to clipboard] [ - ]CODE:<br/>cache_dir aufs /var/cache1 1024 16 256<br/>cache_dir aufs /var/lib/squid 5000 16 256<br/>cache_mem 128 MB<br/>cache_swap_low 90<br/>cache_swap_high 95<br/>#设置存储策略等<br/>maximum_object_size 4096 KB<br/>minimum_object_size 0 KB<br/>maximum_object_size_in_memory 80 KB<br/>ipcache_size 1024<br/>ipcache_low 90<br/>ipcache_high 95<br/>cache_replacement_policy lru<br/>memory_replacement_policy lru<br/>#设置超时策略<br/>forward_timeout 20 seconds<br/>connect_timeout 15 seconds<br/>read_timeout 3 minutes<br/>request_timeout 1 minutes<br/>persistent_request_timeout 15 seconds<br/>client_lifetime 15 minutes<br/>shutdown_lifetime 5 seconds<br/>negative_ttl 10 seconds<br/>#限制一个ip最大只能有16个连接<br/>acl OverConnLimit maxconn 16<br/>http_access deny OverConnLimit<br/>#限制baidu spider访问<br/>#acl AntiBaidu req_header User-Agent Baiduspider<br/>#http_access deny AntiBaidu<br/>#常规设置<br/>visible_hostname cache.yejr.com<br/>cache_mgr <a href="mailto:webmaster@yejr.com">webmaster@yejr.com</a><br/>client_persistent_connections off<br/>server_persistent_connections on<br/>cache_effective_user nobody<br/>cache_effective_group nobody<br/>tcp_recv_bufsize 65535 bytes<br/>half_closed_clients off<br/>#设定不缓存的规则<br/>hierarchy_stoplist cgi-bin<br/>acl QUERY urlpath_regex cgi-bin<br/>cache deny QUERY<br/>#不要相信ETag 因为有gzip<br/>acl apache rep_header Server ^Apache<br/>broken_vary_encoding allow apache<br/>#设置access log，并且令其格式和apache的格式一样，方便awstats分析<br/>emulate_httpd_log &nbsp; on<br/>logformat apache %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<br/>初始化和启动squid<br/><br/>[Copy to clipboard] [ - ]CODE:<br/>[root@localhost]#/usr/local/server/squid/sbin/squid -z<br/>[root@localhost]#/usr/local/server/squid/sbin/squid<br/>第一条命令是先初始化squid缓存哈希子目录，只需执行一次即可。<br/><br/>六、后记<br/><br/><br/>六、后记一、)想要启用squid所需的改变想要更好的利用squid的cache功能，不是把它启用了就可以的，我们需要做以下几个调整：<br/>1、启用apache的 mod_expires 模块，修改 httpd.conf，加入以下内容：<br/><br/>[Copy to clipboard] [ - ]CODE:<br/>#expiresdefault "modification plus 2 weeks"expiresactive<br/>onexpiresbytype text/html "access plus 10 minutes"expiresbytype<br/>image/gif "modification plus 1 month"expiresbytype image/jpeg "modification<br/>plus 1 month"expiresbytype image/png "modification plus 1<br/>month"expiresbytype text/css "access plus 1 day"expiresbytype<br/>application/x-shockwave-flash "access plus 3 day"<br/>以上配置的作用是规定各种类型文件的cache规则，对那些图片/flash等静态文件总是cache起来，可根据各自的需要做适当调整。<br/>2、修改 php.ini 配置，如下：<br/>session.cache_limiter = nocache<br/>以上配置的作用是默认取消php中的cache功能，避免不正常的cache产生。<br/>3、修改应用程序例如，有一个php程序页面static.php，它存放着某些查询数据库后的结果，并且数据更新并不频繁，于是，我们就可以考虑对其cache。只需在static.php中加入类似如下代码：<br/>header('Cache-Control: max-age=86400<br/>,must-revalidate');header('Pragma:');header('Last-Modified: ' .<br/>gmdate('D, d M Y H:i:s') . ' GMT' );header("Expires: " .gmdate ('D, d M Y<br/>H:i:s', time() + '86400' ). ' GMT');<br/>以上代码的意思是，输出一个http头部信息，让squid知道本页面默认缓存时长为一天。<br/>二、)squidclient简要介绍<br/>*<br/><br/>[Copy to clipboard] [ - ]CODE:<br/>取得squid运行状态信息： squidclient -p 80 mgr:info<br/>*取得squid内存使用情况： squidclient -p 80 mgr:mem<br/>*取得squid已经缓存的列表： squidclient -p 80 mgr:objects. use it carefully,it may crash<br/>*取得squid的磁盘使用情况： squidclient -p 80 mgr:diskd<br/>*强制更新某个url：squidclient -p 80 -m PURGE <a href="http://www.yejr.com/static.php" target="_blank">http://www.yejr.com/static...</a><br/>*更多的请查看：squidclient-h 或者 squidclient -p 80 mgr:</div></div><br/><br/><br/>现在ArthurXF本人正在搞PHP等技术培训，如果想学习的人可以跟我联系。另外培训的招生简章在这个网址，想了解的可以去看看。加我QQ：29011218交流也可。<br/><a href="http://www.bizeway.net/read.php/285.htm" target="_blank">PHP培训招生简章</a><br/>Tags - <a href="tag.php?tag=%E6%9C%8D%E5%8A%A1%E5%99%A8%E3%80%80%E5%A4%A7%E7%94%A8%E6%88%B7%E9%87%8F%E3%80%80%E6%89%BF%E8%BD%BD%E6%96%B9%E6%A1%88" rel="tag">服务器　大用户量　承载方案</a>
]]>
</description>
</item>
</channel>
</rss>