??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲bt加勒比一区二区,国产亚洲色婷婷久久99精品,亚洲精品美女久久久久99http://www.tkk7.com/wangdei/archive/2008/09/24/230896.htmlBT下蝲与小?20BT下蝲与小?20Wed, 24 Sep 2008 07:29:00 GMThttp://www.tkk7.com/wangdei/archive/2008/09/24/230896.html

可扩展标记语aQXMLQ作ZU简单的、中性的、易ȝ数据表示形式已经变得来流行,许多软g厂商宣布?#8220;支持XML"Q意味着他们的品将能生成或处理XML数据。XML也被看作再企业间交换数据最x式。它允许企业在所交换的数据的XML的文档类型定义(Document Type DefinitionsQDTDsQ或模式QSchemaQ上取得一致。这些DTDs或Schema是独立于企业使用的数据库模式的?本文用研究在不同计机之间通讯与处理XML数据的分布式pȝ的构建方法,主要是运行在不同的虚拟机上的JAVA应用之间的XML通讯?XML通讯 万维|协会(World Wide Web Consortium, W3CQ在XML规范中定义了XML的语法和语义。ؓ了处理XML数据,XML文档必须l过解析。W3C定义了文档对象模型(DOMQ,它是应用E序员处理XML数据的接口。DOM已经有包括JAVA在内的许多语a的实现。JAVA应用E序可以通过DOM API来访问XML数据。XML解析器将产生XML文档的DOM表示??说明了处理XML文档的JAVA分布式应用的单模型。这个模型假设数据可以从诸如关系数据库之cȝ数据源得到。JAVA代码处理数据q最l生DOM表示Q这些代码表CZؓ图中的处理器? 处理器代码将DOM代表的XML数据传给发送者。发送者是与接收者进行XML数据通讯的JAVA代码。接收者JAVA代码来接受XML数据Q生DOM表示的数据ƈ把它传送给另一个处理器。简而言之,发送者和接收者抽象了DOM表示的XML数据的通讯?发送者和接收者不是在同一个JAVA虚拟Z执行的。他们是通过分布式系l的构g来相q的。无论是接收者还是发送者都既是客户端又是服务器端,两者的数据传输都是双向的?Xbeans 像要看到的一P在本文中描述的发送者和接收者的三种实现Ҏ都都是通过Xbeans来实现。Xbeans是一U接受XML数据作ؓ输入Q处理这个输入然后向下一个Xbeans输出XMLl果的Y件构件。Xbeans的输入输出都是XML的DOM文档Q亦即传送给Xbeans的不是需要XML解析器解析的字符Ԍ而是通过W3C的标准DOM API解析成了文档对象。图2说明了一个Xbeans? Xbeans是JavaBeans,支持装、重用、连接和客户化Java代码。通过适当的一些Xbeans和JavaBeans的设计工P我们p~很的代码构徏非常有用的分布式应用?Xbeans从IBM的XML的JAVA开发工具包而来Q在其上作了量修改以便更适合分布式的应用。Xbeans能够从www.Xbeans.org的开放源码项目中免费获得?实现发送方和接收方 下面介l用JAVA实现发送者和接收者的三种不同的方法。然后对每种Ҏ作一个简单的分析?Ҏ一Q用标准的web 服务?q种Ҏ只是简单的XML作ؓ文本发送给q程计算Z的web服务器。发送方必须DOM表示的XML转化为文本来与接收方q行通讯。然后,接受方必d文本q原为DOM表示Q如?Q? 以下代码D는HTTP来实现发送者。这里用CIBM Java开发包中的DOMWritercL实现DOM表示到文本XML表示的{换?


/**L无罪 http://www.bt285.cn/content.php?id=141970
            《我的丑娘?nbsp; http://www.bt285.cn/wodechounian/
甜性ӆ?http://www.bt285.cn/1196863/story/story_1.html
public void documentReady(DOMEvent evt) throws XbeansException { try { URL receiver = new URL (getRemoteURL ()); URLConnection receiverConnection = receiver.openConnection(); receiverConnection.setDoOutput(true); //向发送者打开一个输出流然后发送文本Ş式的XML数据 OutputStream out = receiverConnection.getOutputStream(); DOMWriter writer = new DOMWriter(); writer.setPrintWriter(new PrintWriter(out)); writer.documentReady( new com.ibm.xml.xpk4j.dom.DOMEvent( this,evt.getDocument())); out.close(); // 为结果打开一个输入流 BufferedReader in = New BufferedReader( new InputStreamReader(receiverConnection.getInputStream())); // 处理l果Q?OK" 表示成功Q?Exception" 表示输入串行化异常 ... in.close(); } catch (Throwable e) { e.printStackTrace(System.err); } }

注意C上的documentReady()Ҏ用remoteURL属性得到服务器上的CGI脚本的URL。ؓ了与HTTP兼容QCGI脚本cȝ字符?#8221;Content-type: text/html"装接收者的输出。这个脚本然后调用服务器上的the receiverMain()Ҏ?Main()函数只是单的实例化接收者然后调用其receiveDocument()Ҏ?



            import org.xbeans.communication.stdio.receiver.*;
            public class receiverMain {
            static Bean theReceiver = new Bean();
            public static void main(String[] args) {
            theReceiver.receiveDocument();
            }
            }
            

最后receiveDocument()Ҏ的代码段重新生成DOM表示以便q一步处理。这里用CIBM的XML解析器?



            DOMParser parser = new DOMParser(); // 构造解析器
            try { // 调用解析?
            parser.parse(new InputSource(System.in));
            } catch (Throwable e) {
            throw new XbeansException("","receiver","io error parsing incoming document",
            "io error parsing incoming document "+e);
            }
            //文档传向下一个bean
            DOMListener.documentReady(new DOMEvent(this,parser.getDocument()));
            

Ҏ二:通过JAVAq程Ҏ调用串行化文?q个Ҏ通过JAVAq程Ҏ调用QJAVA RMIQ和DOM串行化(serializationQ来从发送者向接收者传输XML DOM 文档。如?Q? 以下代码用JAVAq程Ҏ调用实现发送方与接受方的通讯.



            public void documentReady(DOMEvent evt) throws XbeansException {
            if (DOMListener==null) {
            try {
            DOMListener = (DOMListener)Naming.lookup(getReceiverName());
            } catch (Exception e) {
            throw new XbeansException( evt.getDocument().getNodeName(),
            "sender", "error obtaining remote receiver",
            "The name may be wrong or the network may be down.");
            }
            }
            DOMListener.documentReady(evt); }
            

以下是接受方的JAVA q程Ҏ调用的实现。setName()Ҏ接受这传送给RMI注册QregistryQ,documentReady()Ҏ仅仅接收到的文档传送给下一个组件?


            
/**L无罪 http://www.bt285.cn/content.php?id=141970
                        《我的丑娘?nbsp; http://www.bt285.cn/wodechounian/
甜性ӆ?http://www.bt285.cn/1196863/story/story_1.html
public void setReceiverName(String newName) { try { if (receiverName!=null) Naming.unbind(receiverName); receiverName = newName; Naming.rebind(receiverName, this ); } catch( Exception e ) { System.out.println( e ); } } public void documentReady(Document incomingDocument) throws RemoteException, XbeansException { if (DOMListener==null) { throw new XbeansException(incomingDocument.getNodeName(),"rmiReceiver", "next component not established", "The component needs to be configured."); } DOMListener.documentReady(new DOMEvent(this,incomingDocument)); }

Ҏ三:CORBA-IIOP W三Ҏ用CORBA-IIOP(CORBA over Internet Inter-ORB Protocol)来传输数据。对象管理组l(OMGQ正在徏议扩展接口定义语aQIDLQ将XML数据cd包括q去。这P来CORBA产品能传输XML数据。如?所C: 以下的OMG IDLl出了发送者和接收者CORBA实现的接口?



            exception RemoteReceiverException {
            string remoteIdentifier;
            string documentName;
            string componentName;
            string message;
            string moreMessage;
            };
            typedef sequence byteArray;
            interface XMLReceiver {
            void documentReady(in byteArray serializedDocument)
            raises(RemoteReceiverException);
            };
            

以下代码用JAVA串行化DOM和CORBA实现发送者?



            public void documentReady(DOMEvent evt) throws XbeansException {
            Document documentToSend = evt.getDocument();
            try {
            ByteArrayOutputStream bastream = new ByteArrayOutputStream();
            ObjectOutputStream p = new ObjectOutputStream(bastream);
            p.writeObject(documentToSend);
            p.flush();
            org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init( new String[0],
            System.getProperties());
            XMLReceiver receiver = urlToObject(orb,getReceiverURL());
            receiver.documentReady(bastream.toByteArray());
            } catch (RemoteReceiverException rre) {
            throw new XbeansException(rre.remoteIdentifier, rre.documentName,
            rre.componentName, rre.message,rre.moreMessage);
            } catch (Throwable e) {
            throw new XbeansException("","sender", "error sending document "+e,
            "error sending document "+e);
            }
            }
            

以下代码用JAVA串行化DOM和CORBA实现接收者?



            public void documentReady(byte[] serializedDocument)throws RemoteReceiverException {
            // 反串行化字节?
            ByteArrayInputStream bais = new ByteArrayInputStream(serializedDocument);
            Document theDocument;
            try {
            ObjectInputStream ois = new ObjectInputStream(bais);
            theDocument = (Document)ois.readObject();
            } catch(Throwable e) {
            throw new RemoteReceiverException(corbaName,"incoming document","receiver",
            "error deserializing document","error deserializing document"+e);
            }
            try { //文档传向监听?
            local.DOMListener.documentReady(new DOMEvent(this,theDocument));
            } catch (XbeansException xbe) {
            throw new RemoteReceiverException( xbe.remoteIdentifier(),
            xbe.documentName(),xbe.componentName(),
            xbe.message(),xbe.moreMessage());
            }
            }
            

分析: 试表明Q纯文本表示的XML要比DOM串行化表C性能更好。同Ӟ解析DOM和文本所用的旉也要比用JAVA直接串行化和法串行化所用的旉?标准的web服务器方式的优势是其应用基础要广泛许多。CGI脚本能够在绝大多数web服务器上q行Q而且Q接受方能够很容易的通过URL标识。而对于RMIQ则需要RMI注册。CORBA的解军_法则需要在服务器上安装对象h代理QObject Request BrokerQORB Q?而且QCORBA发送者的实现使用的是一个URL的命名模式而不是接收者的CORBA对象引用Q用一个字W串与一个URL相联p,然后在客L转化?CORBA 和RMI支持JAVA 客户端到JAVA服务器的解决Ҏ。没有CGI脚本也不需要从标准输入中读取编码异常。而且Q不需要在发送者每ơ用XML通讯旉启动一个JAVA虚拟机。他们两则均支持接收者的自动ȀzR?JAVA RMI方式只能在JAVA代码之间工作Q对于web服务器包括CORBA理论上能在Q何编E语a之间通讯。对于JAVA串行化的DOM来说Q即便是客户端和服务器端均需要是JAVA代码的要求不是问题,它还存在另外一个困难,即JAVA串行化要求客L和服务器q行的是相同的DOM实现?l论 正如上面所qͼ有许多方法可以实现在JAVA分布式应用中发送XML数据Q每一U方法的性能和互操作性都是不同的。重要的是应该把XML通讯从分布式应用逻辑中抽取出来。也是Q实现发送和接受XML的代码应和应用逻辑的代码中分离出来。通过把代码打包成软glgQ就能够改变发送方和接受方的代码而不会媄响到应用其余实现?



BT下蝲与小?20 2008-09-24 15:29 发表评论
]]>
不用词典利用Lucene取标题中的关键字http://www.tkk7.com/wangdei/archive/2008/08/28/225288.htmlBT下蝲与小?20BT下蝲与小?20Thu, 28 Aug 2008 06:18:00 GMThttp://www.tkk7.com/wangdei/archive/2008/08/28/225288.htmlhttp://www.tkk7.com/wangdei/comments/225288.htmlhttp://www.tkk7.com/wangdei/archive/2008/08/28/225288.html#Feedback0http://www.tkk7.com/wangdei/comments/commentRss/225288.htmlhttp://www.tkk7.com/wangdei/services/trackbacks/225288.html阅读全文

BT下蝲与小?20 2008-08-28 14:18 发表评论
]]>
JMeter基础使用http://www.tkk7.com/wangdei/archive/2008/08/02/219632.htmlBT下蝲与小?20BT下蝲与小?20Sat, 02 Aug 2008 14:37:00 GMThttp://www.tkk7.com/wangdei/archive/2008/08/02/219632.htmlhttp://www.tkk7.com/wangdei/comments/219632.htmlhttp://www.tkk7.com/wangdei/archive/2008/08/02/219632.html#Feedback0http://www.tkk7.com/wangdei/comments/commentRss/219632.htmlhttp://www.tkk7.com/wangdei/services/trackbacks/219632.htmlJMeter ?nbsp;Apache l织的开放源代码目Q它是功能和性能试的工P100%的用java实现Q最新的版本?.9.1。本文中作者将向大家介l如何?nbsp;JMeter q行试?br />
    JMeter是Apachel织的开放源代码目Q它是功能和性能试的工P100%的用java实现Q最新的版本?.9.1Q大家可以到 http://jakarta.apache.org/jmeter/index.html下蝲源代码和查看相关文档?br /> JMeter作用领域
JMeter可以用于试静态或者动态资源的性能Q文件、Servlets、Perl脚本、java对象、数据库和查询、ftp服务器或者其他的资源Q。JMeter用于模拟在服务器、网l或者其他对象上附加高负载以试他们提供服务的受压能力,或者分析他们提供的服务在不同负载条件下的L能情况。你可以用JMeter提供的图形化界面分析性能指标或者在高负载情况下试服务?脚本/对象的行为?br />


使用JMeter试Web应用

   接下来的章节里,作者将详细的演C如何用JMeter来测试Web应用的完整过E?br />
2.1 试环境


   作者用了Tomcat作ؓWeb服务器进行测试,被测试的内容是一个jsp文g和一个servletQjsp文g调用JavaBean、打印相关信息,servlet接受用户参数、调用javabean、输出相关信息。详l的内容请参考作者提供的JMeter.war的内宏V?br />
2.2 安装启动JMeter


   大家可以到通过http://apache.linuxforum.net/dist/jakarta/jmeter/binaries/jakarta-jmeter-1.9.1.zip下蝲JMeter的release版本Q然后将下蝲?zip文g解压~到C:/JMeterQ后面的文章中将使用%JMeter%来引用这个目录)目录下?br />
现在Q请使用%JMeter%/bin下面的jmeter.bat批处理文件来启动JMeter的可视化界面Q下面的工作都将在这个可视化界面界面上进行操作。下面的囄是JMeter的可视化界面的屏q截图?br />

图一Q?nbsp;JMeter打开时的屏幕截图
 
2.3 建立试计划QTest PlanQ?br />

试计划描述了执行测试过E中JMeter的执行过E和步骤Q一个完整的试计划包括一个或者多个线E组(Thread Groups)、逻辑控制QLogic ControllerQ、实例生控制器QSample Generating ControllersQ、侦听器(Listener)、定时器QTimerQ、比较(AssertionsQ、配|元素(Config ElementsQ。打开JMeterӞ它已l徏立一个默认的试计划,一个JMeter应用的实例只能徏立或者打开一个测试计划?br />
现在我们开始填充一个测试计划的内容Q这个测试计划向一个jsp文g和一个servlet发出hQ我们需要JMeter模拟五个h者(也就是五个线E)Q每个请求者连l请求两ơ,下面的章节介l了详细的操作步骤?br />
2.4 增加负蝲信息讄


q一步,我们向试计划中增加相兌载设|?是Jmeter知道我们需要模拟五个请求者,每个h者在试q程中连l请求两ơ。详l步骤如下:

1. 选中可视化界面中左边树的Test Plan节点Q单d键,选择Add'Thread GroupQ界面右边将会出C的设|信息框?br />
2. Thread Group有三个和负蝲信息相关的参敎ͼ 
Number of ThreadsQ?nbsp;讄发送请求的用户数目 
Ramp-up periodQ?nbsp;每个h发生的L间间隔,单位是秒。比如你的请求数目是5Q而这个参数是10Q那么每个请求之间的间隔是10Q?Q也是2U?nbsp;
Loop CountQ?nbsp;h发生的重复次敎ͼ如果选择后面的foreverQ默认)Q那?nbsp;h一直l,如果不选择foreverQ而在输入框中输入数字Q那么请求将重复 指定的次敎ͼ如果输入0Q那么请求将执行一ơ?nbsp;

Ҏ我们演示例子的设计,我们应该Number of Threads讄?QRamp-up period讄?Q也是同时q发hQ,不选中foreverQ在Loop Count后面的输入框中输?Q设|后的屏q截囑֦下:


图二Q设|好参数的Thread Group?br />  
2.5 增加默认Http属性(可选)


实际的测试工作往往是针对同一个服务器上Web应用展开?所以Jmeter提供了这样一U设|? 在默认Http属性设|需要被试服务器的相关属性,以后的httph讄中就可以忽略q些相同参数的设|?减少讄参数录入的时间?br />
我们q里采用这U属性。你可以通过下面的步骤来讄默认http属性:

1. 选中可视化界面中左边树的Test Plan节点Q单d键,选择Add'config element'http request defaultsQ界面右边将会出C的设|信息框?br />
2. 默认http属性的主要参数说明如下Q?nbsp;
protocalQ发送测试请求时使用的协?nbsp;
server name or ipQ被试服务器的ip地址或者名?nbsp;如要试 http://www.bt285.cn BT下蝲 或是 http://www.5a520.cn 说520|?可以?a >http://www.bt285.cn ?a >http://www.5a520.cn
pathQ?nbsp;默认的v始位|。比如将path讄为/jmeterQ那么所有的httph的url中都增加/jmeter路径?nbsp;
port numberQ?nbsp;服务器提供服务的端口?nbsp;

我们的测试计划将针对www.yaonba.com.cn 的Web服务器上的Web应用q行试Q所以protocal应该是httpQip使用www.yaonba.com.cn Q因个web应用发布的context路径是/jmeterQ所以这里的path讄为/jmeterQ因Z用Tomcat服务器,所以port number?080。设|后的屏q截囑֦下:


图三Q?nbsp;试计划中用的默认Http参数
 

2.6 增加Httph


现在我们需要增加httph了,他也是我们测试的内容M部分。你可以通过下面的步骤来增加性的httphQ?br />
1. 选中可视化界面中左边树的Thread Group节点Q单d键,选择Add'sampler'http requestQ界面右边将会出C的设|信息框?br />
2. 他的参数?.5中介l的http属性差不多Q增加的属性中有发送http时方法的选择Q你可以选择为get或者post?br />
我们现在增加两个http hQ因为我们设|了默认的http属性,所以和默认http属性中相同的属性不再重复设|。设|后的屏q截囑֦下:


囑֛Q设|好的jsp试h
 
图五Q设|好的Servlet试hQ带参数Q?br />  
2.7 增加Listener


增加listener是ؓ了记录测试信息ƈ且可以用Jmeter提供的可视化界面查看试l果Q里面有好几U结果分析方式可供选择Q你可以Ҏ自己习惯的分析方式选择不同的结果显C方式,我们q里使用表格的Ş式来查看和分析测试结果。你可以通过下面的步骤来增加listenerQ?br />
1. 选中可视化界面中左边树的Test Plan节点Q单d键,选择Add'listener'view result in tableQ界面右边将会出C的设|信息和l果昄框?br />
2. 你可以设|界面上面的filename属性设|将试l果保存到某个文件中界面下面用表格显C测试结果,表格的第一列sampleno昄h执行的顺序和~号Qurl昄h发送的目标QsampleQms列显C个请求完成耗费的时_最后的success列显C改h是否成功执行?br />
界面的最下面你还可以看到一些统计信息,最兛_的应该是Average吧,也就是相应的q_旉?br />
2.8 开始执行测试计?br />

现在你可以通过单击菜单栏run -> Start开始执行测试计划了。下面这两个图是作者第一ơ、第二次执行该测试计划的l果?


囑օQ第一ơ执行后的结果显C?br />  
图七Q第二次执行的结果显C?br />  

大家可以看到W一ơ执行时的几个大旉值均来自于jsp requestQ这可以通过下面的理p行解释:jsp执行前都需要被~译?class文g。所以第二次的结果才是正常的l果?br />
ȝ


JMeter用于q行供能或者性能试Q通过使用JMeter提供的供能,我们可以可视化的制定试计划Q包括规定用什么样的负载、测试什么内宏V传入的参数Q同Ӟ他提供了好多U图形化的测试结果显C方式,使我们能够简单的开始测试工作和分析试l果?br />
本文中,作者根据自q使用l验Q详l演CZ如何使用JMeter来进行Web试的全部过E,单的介绍了JMeter提供试l果的图形化昄界面中相兛_数的含义。希望能够帮助大家学会用JMeter的基本知识,同时Q大家可以参考这个过E和JMeter的帮助文档来实现对java对象、数据库{的试q程?br />



BT下蝲与小?20 2008-08-02 22:37 发表评论
]]>
UUID的介l与使用http://www.tkk7.com/wangdei/archive/2008/07/30/218792.htmlBT下蝲与小?20BT下蝲与小?20Wed, 30 Jul 2008 09:22:00 GMThttp://www.tkk7.com/wangdei/archive/2008/07/30/218792.htmlhttp://www.tkk7.com/wangdei/comments/218792.htmlhttp://www.tkk7.com/wangdei/archive/2008/07/30/218792.html#Feedback1http://www.tkk7.com/wangdei/comments/commentRss/218792.htmlhttp://www.tkk7.com/wangdei/services/trackbacks/218792.html阅读全文

BT下蝲与小?20 2008-07-30 17:22 发表评论
]]>
转帖Q?60可以Z钱为流氓YӞE序员的我不行!http://www.tkk7.com/wangdei/archive/2008/07/29/218335.htmlBT下蝲与小?20BT下蝲与小?20Tue, 29 Jul 2008 04:14:00 GMThttp://www.tkk7.com/wangdei/archive/2008/07/29/218335.htmlhttp://www.tkk7.com/wangdei/comments/218335.htmlhttp://www.tkk7.com/wangdei/archive/2008/07/29/218335.html#Feedback10http://www.tkk7.com/wangdei/comments/commentRss/218335.htmlhttp://www.tkk7.com/wangdei/services/trackbacks/218335.html

看完?无语?....

睡不着?

今天Q我下定军_dQ离开服务了近两年的公司奇?60安全卫士Q离开了再熟悉不过的办公环境,习惯了你来我往的h事变动。今天我C….带走了遗憾,带走了h生梦惻I360Q就q样亲切的称g吧)当时是你接纳了我Q记得当时我q是一个刚毕业的大学生的时候,是你360安全卫士、是傅老大把我招到你的麾下Q让我知道了我的目标Q那是做出国内的安全YӞ

现在我走了,我只惛_q一ȝ单的记录一下我的心情,当年你的辉煌q在脑vȀ荡,上千万的装机量让我们兴奋不已Q别忘了我们是免费的Q我们没有Q何的利润Q也许大家不知道Q当q最让h痛恨?721源自我们的老大?周`,但是Q他又做Zq样一ƾ流氓Y件专杀工具Q荡了几乎所有的氓软gQ当然这是所有员工的功劳Q包括我的上司,傅盛Q傅盛应该算?60的最大功臣,是他让大家知道了360安全卫士Q是他让360和卡巴斯基合作!方便了大家。没有他的业务关pd没有今天?60安全卫士。可是现在,已经物是人非Q老大C……我们q些老员工,也都要走了?

因ؓ360要战略{型,我们不堪良心谴责Q不堪工作压力要CQ也许大家还不知道,今年360已经不再和卡巴合作了Q他们决定和|马g的BitDefender合作了。而与此对应的Q我们项目组Q不再是像其他同事那Ll研?60的安全技术,l箋修复360免费杀软的BUG。而是都被调到一个新的项目组里!研分什么大家知道吗Q!弹窗q告Q!天啊Q也许大家的噩梦又要来了Q?60的弹H广告就要借着奥运来了。大安知道我们以前一直是免费的没有利润的Q即使是和卡巴合作也是赚微不道的一点返点和q告费,而现在,360却将和国内某大型门户|站合作推出弹窗q告Q听同事说双方合作费用达八位数。现在装?60的用h能收到关于360升的气泡提C,其实那是我们在调试。调试如何把消息同时发给送给所有的用户Q因为大家知道即使是QQ的弹H广告也不能同时发给全部用户Q而会有gq,所以我们就不断的调试调?#8230;…要知道,奥运新闻q了五分钟就不?a >新闻?,BT?

之所以决定离开是因为公司太让我们失望了Q战略的转型?60又回C3721时代……我们研制?60把所有的氓软g都杀q净了,却把自己塑造成了前所未有的第一氓软gQ我们想不?#8230;…想不通周鸿祎老大他想做什么?现在我们的老大CQ也许是伤心了,也许是被逼无奈,辛辛苦苦推v来的软gp样又被颠覆了…7?7的新d布会他没有参加,媒体说他是去度假Q其实做什么我们很清楚Q他在做最后的心理准备Q然后把工作交接l完毕,Ch….老大Q走?#8230;…

C……d?60Q离开惠通时代广场的办公环境Q还真不知道该何M从,我的朋友们大安走好Q主要的是傅大哥Q你教了我很多东西,感谢Q?60但愿也走好吧Q毕竟是我们辛辛苦苦把你做v来的Q成宿成夜的~程Q大安不容易,别太疯狂了就好了……..l我们留点美好的回忆吧!Q!Q?

                                                                                 写于公元2008q??9日凌?/p>

BT下蝲与小?20 2008-07-29 12:14 发表评论
]]>
说说大型高ƈ发高负蝲|站的系l架构(更新Q[Michael]http://www.tkk7.com/wangdei/archive/2008/07/28/218135.htmlBT下蝲与小?20BT下蝲与小?20Mon, 28 Jul 2008 09:47:00 GMThttp://www.tkk7.com/wangdei/archive/2008/07/28/218135.htmlhttp://www.tkk7.com/wangdei/comments/218135.htmlhttp://www.tkk7.com/wangdei/archive/2008/07/28/218135.html#Feedback2http://www.tkk7.com/wangdei/comments/commentRss/218135.htmlhttp://www.tkk7.com/wangdei/services/trackbacks/218135.html
我在CERNET做过拨号接入q_的搭建,而后在Yahoo&3721从事q搜索引擎前端开发,又在MOP处理q大型社区猫扑大杂烩的架构升U等工作Q同时自己接触和开发过不少大中型网站的模块Q因此在大型|站应对高负载和q发的解x案上有一些积累和l验Q可以和大家一h讨一下?br />

  一个小型的|站Q比如个人网站,可以使用最单的html静态页面就实现了,配合一些图片达到美化效果,所有的面均存攑֜一个目录下Q这L|站对系l架构、性能的要求都很简单,随着互联|业务的不断丰富Q网站相关的技术经q这些年的发展,已经l分到很l的Ҏ面面Q尤其对于大型网站来_所采用的技术更是涉及面非常q,从硬件到软g、编E语a、数据库、WebServer、防火墙{各个领域都有了很高的要求,已经不是原来单的html静态网站所能比拟的?br />
  大型|站Q比如门L站。在面对大量用户讉K、高q发h斚wQ基本的解决Ҏ集中在这样几个环节:使用高性能的服务器、高性能的数据库、高效率的编E语a、还有高性能的Web容器。但是除了这几个斚wQ还没法Ҏ解决大型|站面的高负蝲和高q发问题?br />
  上面提供的几个解x\在一定程度上也意味着更大的投入,q且q样的解x\具备瓉Q没有很好的扩展性,下面我从低成本、高性能和高扩张性的角度来说说我的一些经验?br />
1、HTML静态化
  其实大家都知道,效率最高、消耗最的是U静态化的html面Q所以我们尽可能使我们的|站上的面采用静态页面来实现Q这个最单的Ҏ其实也是最有效的方法。但是对于大量内容ƈ且频J更新的|站Q我们无法全部手动去挨个实现Q于是出C我们常见的信息发布系lCMSQ像我们常访问的各个门户站点的新闻频道,甚至他们的其他频道,都是通过信息发布pȝ来管理和实现的,信息发布pȝ可以实现最单的信息录入自动生成静态页面,q能具备频道理、权限管理、自动抓取等功能Q对于一个大型网站来_拥有一套高效、可理的CMS是必不可的?br />
  除了门户和信息发布类型的|站Q对于交互性要求很高的C֌cd|站来说Q尽可能的静态化也是提高性能的必要手D,社区内的帖子、文章进行实时的静态化Q有更新的时候再重新静态化也是大量使用的策略,像Mop的大杂烩是使用了这L{略Q网易社区等也是如此。目前很多博客也都实C静态化Q我使用的这个BlogE序WordPressq没有静态化Q所以如果面寚w负蝲讉KQ?a >www.bt285.cn一定不能承?nbsp; 

  同时Qhtml静态化也是某些~存{略使用的手D,对于pȝ中频J用数据库查询但是内容更新很小的应用,可以考虑使用html静态化来实玎ͼ比如论坛中论坛的公用讄信息Q这些信息目前的L论坛都可以进行后台管理ƈ且存储再数据库中Q这些信息其实大量被前台E序调用Q但是更新频率很,可以考虑这部分内容q行后台更新的时候进行静态化Q这样避免了大量的数据库讉Kh?br />
  在进行html静态化的时候可以用一U折中的ҎQ就是前端用动态实玎ͼ在一定的{略下进行定旉态化和定时判断调用,q个能实现很多灵zL的操作Q我开发的说|站故h?www.5a520.cn)是使用了这LҎQ我通过讑֮一些html静态化的时间间隔来对动态网站内容进行缓存,辑ֈ分担大部分的压力到静态页面上Q可以应用于中小型网站的架构上。小说网站的地址Qhttp://www.5a520.cnQ顺便提一下,有喜Ƣ小说的朋友多多支持我这个免费网?)

2、图片服务器分离
  大家知道Q对于Web服务器来_不管是Apache、IISq是其他容器Q图片是最消耗资源的Q于是我们有必要图片与面q行分离Q这是基本上大型|站都会采用的策略,他们都有独立的图片服务器Q甚臛_多台囄服务器。这L架构可以降低提供面讉Kh的服务器pȝ压力Qƈ且可以保证系l不会因为图片问题而崩溃?br />
  在应用服务器和图片服务器上,可以q行不同的配|优化,比如Apache在配|ContentType的时候可以尽量少支持Q尽可能的LoadModuleQ保证更高的pȝ消耗和执行效率?br />
  我的台球|站故h?zone.cn也用了囄服务器架构上的分,目前是仅仅是架构上分,物理上没有分,׃没有׃更多的服务器:)Q大家可以看到故人居上的囄q接都是cMimg.9tmd.com或者img1.9tmd.com的URL?br />
  另外Q在处理静态页面或者图片、js{访问方面,可以考虑使用lighttpd代替ApacheQ它提供了更轻量U和更高效的处理能力?/span>

3、数据库集群和库表散?/span>
  大型|站都有复杂的应用,q些应用必须使用数据库,那么在面对大量访问的时候,数据库的瓉很快p昄出来Q这时一台数据库很快无法满_用,于是我们需要用数据库集群或者库表散列?br />
  在数据库集群斚wQ很多数据库都有自己的解x案,Oracle、Sybase{都有很好的ҎQ常用的MySQL提供的Master/Slave也是cM的方案,您用了什么样的DBQ就参考相应的解决Ҏ来实施即可?br />
  上面提到的数据库集群׃在架构、成本、扩张性方面都会受到所采用DBcd的限Ӟ于是我们需要从应用E序的角度来考虑改善pȝ架构Q库表散列是常用q且最有效的解x案。我们在应用E序中安装业务和应用或者功能模块将数据库进行分,不同的模块对应不同的数据库或者表Q再按照一定的{略Ҏ个页面或者功能进行更的数据库散列,比如用户表,按照用户IDq行表散列,q样p够低成本的提升系l的性能q且有很好的扩展性。sohu的论坛就是采用了q样的架构,论坛的用户、设|、帖子等信息q行数据库分,然后对帖子、用h照板块和IDq行散列数据库和表,最l可以在配置文g中进行简单的配置便能让系l随时增加一C成本的数据库q来补充pȝ性能?br />
4、缓?/span>
  ~存一词搞技术的都接触过Q很多地方用到缓存。网站架构和|站开发中的缓存也是非帔R要。这里先讲述最基本的两U缓存。高U和分布式的~存在后面讲q?br />
  架构斚w的缓存,对Apache比较熟悉的h都能知道Apache提供了自qmod_proxy~存模块Q也可以使用外加的Squidq行~存Q这两种方式均可以有效的提高Apache的访问响应能力?br />
  |站E序开发方面的~存QLinux上提供的Memcached是常用的~存ҎQ不web~程语言都提供memcache讉K接口Qphp、perl、c和java都有Q可以在web开发中使用Q可以实时或者Cron的把数据、对象等内容q行~存Q策略非常灵zR一些大型社Z用了q样的架构?br />
  另外Q在使用web语言开发的时候,各种语言基本都有自己的缓存模块和ҎQPHP有Pear的Cache模块和eAccelerator加速和Cache模块Q还要知名的Apc、XCacheQ国人开发的Q支持!Qphp~存模块QJava更多了Q?net不是很熟悉,怿也肯定有?br />
5、镜?/span>
  镜像是大型网站常采用的提高性能和数据安全性的方式Q镜像的技术可以解决不同网l接入商和地域带来的用户讉K速度差异Q比如ChinaNet和EduNet之间的差异就促了很多网站在教育|内搭徏镜像站点Q数据进行定时更新或者实时更新。在镜像的细节技术方面,q里不阐q太深,有很多专业的现成的解x构和产品可选。也有廉L通过软g实现的思\Q比如Linux上的rsync{工兗?br />
6、负载均?/span>
  负蝲均衡是大型|站解决高负药问和大量q发h采用的终极解军_法?br />
  负蝲均衡技术发展了多年Q有很多专业的服务提供商和品可以选择Q我个h接触q一些解x法,其中有两个架构可以给大家做参考。另外有兛_U的负蝲均衡DNS轮@和较专业的CDN架构׃多说了?br />
6.1 g四层交换
  W四层交换用第三层和第四层信息包的报头信息Q根据应用区间识别业务流Q将整个区间D늚业务分配到合适的应用服务器进行处理。 W四层交换功能就象是虚IPQ指向物理服务器。它传输的业务服从的协议多种多样Q有HTTP、FTP、NFS、Telnet或其他协议。这些业务在物理服务器基上,需要复杂的载量q法。在IP世界Q业务类型由l端TCP或UDP端口地址来决定,在第四层交换中的应用区间则由源端和终端IP地址、TCP和UDP端口共同军_?br />
  在硬件四层交换品领域,有一些知名的产品可以选择Q比如Alteon、F5{,q些产品很昂贵,但是物有所|能够提供非常优秀的性能和很灉|的管理能力。Yahoo中国当初接近2000台服务器使用了三四台Alteon搞定了?br />
6.2 软g四层交换
  大家知道了硬件四层交换机的原理后Q基于OSI模型来实现的软g四层交换也就应运而生Q这L解决Ҏ实现的原理一_不过性能E差。但是满一定量的压力还是游刃有余的Q有软g实现方式其实更灵z,处理能力完全看你配置的熟悉能力?br />
  软g四层交换我们可以使用Linux上常用的LVS来解冻ILVS是Linux Virtual ServerQ他提供了基于心跳线heartbeat的实时灾隑ֺ对解x案,提高pȝ的鲁性,同时可供了灵zȝ虚拟VIP配置和管理功能,可以同时满多种应用需求,q对于分布式的系l来说必不可?br />
  一个典型的使用负蝲均衡的策略就是,在Y件或者硬件四层交换的基础上搭建squid集群Q这U思\在很多大型网站包括搜索引擎上被采用,q样的架构低成本、高性能q有很强的扩张性,随时往架构里面增减节点都非常容易。这L架构我准备空了专门详l整理一下和大家探讨?br />
6.3 七层交换
  大家都知道TCP/IP的七层协议,四层交换是基于传输层的,在这一层只能处理连接的理Q但是无法和业务兌hQ通常只能针对tcp、udp的连接来q行处理Q而真正的业务逻辑需要后面的服务器群自己来处理,随着技术的发展Q今天,我们在很多高U的应用中出C七层交换?br />
七层交换是基于TCP/IP的第七层应用层来实现的,在这一层上Q首先我们可以区分出具体的应用,比如HTTP、TELNET、FTP、DNS{等Q还能根据应用中传送的内容来进行策略的理Q比如我们有q么两个|站的\?a.com/music/… 和a.com/photo/… NBA,说520 ,BT下蝲,原来Z四层交换只能把这两个url的请求都分发到后面一l服务器上,但是七层交换可以判断讉K的是music/q是photo/路径Q然后分别分发到不通的服务器群上,从而实现更灉|的系l架构设计?br />
当然Q七层交换也分硬件和软g的实现方式,在这里我不细说了Q硬件有著名的F5、Nortel{,软g有Haproxy{,当然Q七层交换的软g目前q是在性能上要q远差别于硬件实现的Q要知道Q这些硬仉h不菲  

ȝQ?br />   
引用
对于大型|站来说Q前面提到的每个Ҏ可能都会被同时用到QMichaelq里介绍得比较浅显,具体实现q程中很多细节还需要大家慢慢熟悉和体会Q有时一个很的squid参数或者apache参数讄Q对于系l性能的媄响就会很大,希望大家一赯论,辑ֈ抛砖引玉之效?/div>


]]>颓废的站?颓废的时?/title><link>http://www.tkk7.com/wangdei/archive/2008/07/11/214328.html</link><dc:creator>BT下蝲与小?20</dc:creator><author>BT下蝲与小?20</author><pubDate>Fri, 11 Jul 2008 12:28:00 GMT</pubDate><guid>http://www.tkk7.com/wangdei/archive/2008/07/11/214328.html</guid><wfw:comment>http://www.tkk7.com/wangdei/comments/214328.html</wfw:comment><comments>http://www.tkk7.com/wangdei/archive/2008/07/11/214328.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.tkk7.com/wangdei/comments/commentRss/214328.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/wangdei/services/trackbacks/214328.html</trackback:ping><description><![CDATA[<p>?9q开始作站,像那时的<a >BT下蝲</a> ?a >说520</a>,充满憧憬的进来,充满憧憬的看那时的站长奋发图强的工作Q满口唾液的谈理惌pQ充满憧憬的看现在看h很低U的所谓信息高速公路的 东西Q充满憧憬的听那时候的站长谈未来的发展势Q我想那个时候的互联|应该是没有铜臭或者说铜臭味道不是那么的浓的时代,是闪耀理想光芒的时代。我能看 到无数的站长Z一个个坛废寝忘食,我能看到一个个站长Z一个小的JS代码信息若狂Q我那时候根本就不知道原来还有个ALEXA,也许吧,那个?候只是沫时代,力q不会长久?/p> <p>    当闪光的互联|沸沸扬扬的q入?001q_恶意代码开始萌芽,?23恶意代码让h骂娘Q?721开始叫床了Q一些小站更是恶意满天飞Q随便打开一个网 站都会弹你安装控件的提示框,但是Q我个h认ؓQ那个时候的互联|也比较好,毕竟Q站长的理想q在闪光Q无非只有一个目的,是把流量做hQƈ不那 么和铜臭挂钩?/p> <p>    而时?002q?3q_01q的代码多多少争取了不眼球,d变了Q首先看看新的IT频道QY文满天飞Q而且q可以明码标仗当时只是认为是?作,x那时我的站点? <a >http://www.bt285.cn</a> BT下蝲 <a >http://www.yaonba.com.cn</a> NBA中文|?后来知道我错了,大家有兴可以翻那个时候新的报道Q有很多可以让hW掉大牙的事情(现在也有很多Q不q隐蔽性比较强了,不那么明目张胆了Q因?现在的站长不像那个时候容易糊弄了Q。其?随便q入一个论坛,听大安在叫Q我今天注册了几个,你今天注册了几个Qon my god,中移动流氓当Ӟ|易q个流氓不要脸的开天辟地的把SP推广h了,那真叫一个恐怖,每天都担心被人明目张胆的合法的偷手机贏V网易这个时候开 启了一个小时代Q手机注册,疯狂敛胦Q瞬间电q站,交友|站满天飞,色情而不色情的广告在凌晨旉满天飞,大量QQ上都是看我的照片Q输入网址后呢Q?再。。。再输入手机L可以上我了Q就是看准了你这个时候荷蒙旺盛Q就是蒙你的。一个朋友的电媄站一个月Udp扣掉60多万...</p> <p>    当中Ud要抗不住用L叫骂声开始呻吟的时候,在满天的叫骂声的背后Q流氓Y件也开始有些蠢蠢欲动了Q因为靠SP不那么容易发财了Q这个时候的3721 其实q不流氓,我就装,他有一些修复网늚工具Q还是比较有帮助的。但是当所有h都眼U书生的时候,氓软gq个东西开始茁壮成长,但是好像做捆l的所 谓插件还不像现在q么猛~?/p> <p>    我觉?2q有代表性的事情q有一Ӟ是|络传销的流行,现在q有人宣传让你注册就月赚万元Q注册帐P先交钱。可惜了Q现在如果还q么做的话进police的时间估计也不远?像这U?a >http://www.5a520.cn</a> 说520 每天也能赚个200多块?</p> <p>    2002q_U服成了名词Q可惜我没有玩过|络游戏Q不知道q个东西能带来什么。只记得当传奇私服发布的时候ؓ了给LP的论坛带Ҏ量,׃两周旉改出 了一个无错版本的U服Q应该是国内W一个无错版吧青青家园版Q。恐怖的事情马上出CQ我看到青青家园版在短短两周旉内变化了很多名字Q流q版Q飞??..QNNDQ天啊指U码都没有换Q现在想hQ自己其实在无意中创造了一个商机,论坛的一个朋友把他改头换面,成了立天版,而这位朋友,竟然卖程?赚了十来万(q是后话Q后来才知道的,不过现在x他ƈ不聪明,他没有接着下来做私服)。这是我W一ơ体验到金钱刺激的魅力,不到半年旉Q私服成Z?最赚钱的业。可是我q在E里糊涂的惛_费的赚什么钱Q我没有玩过|络游戏Q?/p> <p>    当在北京战战兢兢的度q了非典时代Q战战兢兢的心翼的查查手机有没有扣费的时候,没有惛_比非典更可怕的东西来了。一不小心就会被强奸Q而且JB(?本的意?比较,强奸你都不知道,H然发现不能随便下蝲软g了,到处都是氓Q到处都是病毒,而国产的杀毒Y件只会隔着门叫叫,基本上不能用. 到底是流氓,J殖速度实惊hQ如果说以前的流氓或者病毒还有很大以部分是处于兴爱好的目的或者提高流量的时候,q个时候已l完全赤裸裸了。当有了商业 目的Q当有了金钱刺激的时候,他们有了充分的温床得以发展,q个时候互联网才真正开始乌烟瘴气来了。流氓还氓的理直气壮,比如CNNIC</p> <p>    当雅典奥q会带来了流氓和病毒的激情,我当时认为最黑暗的时候来临了Q自认ؓ对系l底层非怺解的我遇C很多清除不掉的病毒,我的计算机成了病毒的?园,于是Q装pȝ成了家常侉K。黑客事业中也在q个时候随U服茁壮的发展成ؓ一门业,敲诈和勒索开始在互联|上盛行Qƈ且迅速的成ؓ一个业链Q我?得那个时候应该是有点量的站长最恐怖的时代了,我D你你怎么办,买防火墙Q?0多万Q你来啊Q我是卖防火墙的。最可恶的了Q是那些所谓的安全公司Q防 火墙公司Q开始充分发挥威力了Q威力不是杀毒不是安全,而是以安全测试ؓ借口大批量的刉病毒,刉D工具Q防火墙牛Xh了。我一个朋友,半年旉q̎ 千万Q市面上一般的D工具都是他发?#8230;…很知名的公司啊,也许他们现在q会夸,做私服的一半h用的都是我们的墙。我觉得”抢“是地地道道的氓Q强怽 之后你还要给他付钱,不付ql勒索敲诈强奸,地地道道的阴阳hQ前面是JB(q步的意?告诉你无坚不摧,后面是YDQ要到的意思啊Q多牛X的JB都会 被我的YD DDOS掉,D的流脓,没有地方长GMQ只好长在头上来攑ֱ说话勒烦了,于是YD与JB齐飞QGM共大便一?.....</p> <p>    我觉得,?#8220;抢”比v来,传奇U服应该最有代表性,它几乎带动了一个业群Q程序,病毒Q防火墙Q登陆器Q发布站...都在那个时代赚疯了钱Q也塑造了 很多现在我们l常挂在嘴边的名字。灰鸽子也是在那个时代开始流行,肉鸡Q木马,僵尸Q成Z个时代的名词Q现在其实也是?/p> <p>    互联|在病唉唉中2005q的时候,也许是某些h看到了颓废的概念Q有一U叫2.0的声韛_始响赗好像概忉|中国的站长提出来的,我那个时候ƈ没有在国 外的站点上发现类似的声音Q当时在myspace上问了几个朋友,都不知道Q后来才知道myspace是2.0的代表。翻了很多站点,愣是找不C个概 忉|的东西Q不q大安在闹Q咱也跟着起哄吧。n受着病毒和流氓的强奸Qȝ是看C一U奋L声音。管他呢Q我叫2.0Q我p?.0Q于是互联网 q入2.0时代。想惻I2.0是q步的意思吧Q至不会那么流氓了Q无意中却发玎ͼ2.0公司都是以流氓发家的..............无语?/p> <p>    360其实也算是开起了一个时代,姑且不谈所谓炒作也|,职业道d也ŞQ避开那腥风血雨的口水Q至能看到点安慰的声音。不它的目的如何,它办C三g 我几乎认为绝望的事情。一Q彻底冲垮了杀毒Y件和氓厂商的床头协议,杀毒Y件不能随便上氓姑娘Q暂且这么说吧,其实我觉得他们更像是Zq鸭子Q?了,杀毒Y件也不再说流氓姑?#8220;没毒”了。二Q流氓的g不那么容易流氓v来了Q冲垮了很多根基不是很牢固的流氓,氓也不是那么容易的Q至要会点?术的吧。三Q扼杀了一个尚未羽g满的氓产业Q我当时在想Q如果安全公叔R和流氓姑娘上q床之后Q流氓姑娘受_之后发展也太恐怖了Q有了商业化的孵?器,那繁D速度比惊惊h吧~~~~~~~~~</p> <p>    GG adsene是真正开创了一个时代吧Q?3-04q的时候美刀真是好赚啊,GG那个时候也?#8220;?#8221;的可以,他傻的让中国所有的站长都ؓ他疯狂,那个时?作弊代码甚至要用1W来买Q至我没有在国外的WEB上看到这么疯狂的事情Q,一天能作弊上万金Q开始出C理作弊公司,交完保证金后??......当所有h都ؓGG疯狂的时?GG做出了和腾讯一LX的事情来Q开始大规模的封杀帐户Q我是先让你疯狂v来再CQ你不服气,Ƣ迎?打国际长途。还不服气,不服气你靠什么吃饭呢。我隐约看到了腾讯的N气扬的模PQ我惌Ҏ点向马化腄强奸哲学Q我先脱光了让你上,当你觉得上我?舒服的时候,q且M开我的时候,p我强怽了,我的JBQ套用疯狂绅士的名词QJB是基本的意思啊Q大Q我要吃饭啊Q你得给?#8220;上机”费吧Q我??QQ是q样被马化腾卖了作ؓ上机费了~~</p> <p>    q入2006q就不再说些什么了Q之前赚到钱的站长开始收手,开了新的投资,而跟风者开始蔓ӞGGq个时候开始大规模屠杀帐户Q而这个时候应该是垃圾站成为名ơ的时候了Q不再说了?/p> <p>    其实惌的话也就一句,成功是可以复制的Q前提是在别人开始复制之前!站长其实应该有更多的理想Q坦坦荡荡的做一番事业,GGq告什么的只能作ؓ一个辅?手段Q如果把他当作事业的话,互联|一天世界一q_长久不了的东ѝ既然图王提Z自律公约Q那么我们就应该有个自励公约。其实跟其他站长谈,他们都怕中 国的站长Q去国外U服务器他们都不是很Ƣ迎Qؓ什么要把自q名声做坏呢。如果我们能吃饱肚子Qؓ什么不做的更好呢!Q美刀可以创造胦富,但是他也可以?掉一个h的理惻I毁掉一个h的永q的财富。其实我在想Q如果真的觉得GG能赚钱,那就雇上几个人做Q给自己一Ҏ想的空_看看前面的\Q还有多q。。?/p> <p>    C自己的理惻I放下包袱才能成长。其实商业上有不这斚w的例子,如果竞争Ҏ惌一个公司垮掉有一个很聪明的办法就是不与他竞争Q给他的初产品_的利润,以毁掉一个公司动力的。比如施乐公司的{略</p> <p>    估计要挨骂,那就骂的痛快一些吧~ 来自E序?/p> <img src ="http://www.tkk7.com/wangdei/aggbug/214328.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/wangdei/" target="_blank">BT下蝲与小?20</a> 2008-07-11 20:28 <a href="http://www.tkk7.com/wangdei/archive/2008/07/11/214328.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>修正?疯狂代码 写给WEB2.0的站?/title><link>http://www.tkk7.com/wangdei/archive/2008/07/05/212778.html</link><dc:creator>BT下蝲与小?20</dc:creator><author>BT下蝲与小?20</author><pubDate>Sat, 05 Jul 2008 12:56:00 GMT</pubDate><guid>http://www.tkk7.com/wangdei/archive/2008/07/05/212778.html</guid><wfw:comment>http://www.tkk7.com/wangdei/comments/212778.html</wfw:comment><comments>http://www.tkk7.com/wangdei/archive/2008/07/05/212778.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.tkk7.com/wangdei/comments/commentRss/212778.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/wangdei/services/trackbacks/212778.html</trackback:ping><description><![CDATA[<div id="1bbnjbt" class="blog_content"> <p>当互联网吵吵嚷嚷的进?.0时代Q当互联|的技术不再是那么高不可攀Q当复制变成家常侉KQ互联网热闹h?/p> <p>    myspace火了Q中国冒出更多的myspace</p> <p>    youtube刚刚hQ中国的视频|站遍地开?/p> <p>    51拔地而vQ中国出了无数的SNS</p> <p>    facebook则改变了中国站长的抄袭方式,不再学chianren了,校内火了<br />     ..........</p> <p>    当抄袭变成习惯,我想说的是,模仿Q站长,你准备好了吗Q?/p> <p>    如果你打做垃圾站,或者赚点广告费的网站,请不要点击这文章,我从技术角度方面谈谈WEB2.0|站的模仉K题?/p> <p>    当投资和量都不是问题的时候,我想说的是,您真的一帆风吗Q?/p> <p>    拿SNS|站来说Q当匆匆上线?.0Q当一W笔投资砸进ȝ时候,当流量上ȝ时候,您的困惑在什么地方?</p> <p>    我做q多?.0公司的技术顾问,单的谈谈2.0公司遇到的问?涉及隐私Q我用A B C D代替)Q这里就不再赘述大家众所周知的页面静态化Q缓存和代码安全{问题了Q有Ҏ术的2.0公司的CTO都知道这些东西,我们谈点发展之后的问?/p> <p><strong>A公司</strong></p> <p>    A公司做的是SNS|站Q程序是两个毛头伙子做的,目标直指51Q程序开发是一帆风,功能也比51牛多了,推广也是一帆风(A公司有自q到的推广方式。但是当ALEXA?W的时候问题出来了Q每天下?点左叻I|站速度慢的惊hQ基本上打不开Q公怸台服务器CPU100%Q让人郁L是公司的|络配置方式Q居然是双WEB的集,而单独一台DB数据库。整个瓶颈在数据库,于是我徏议做DB的集,分析了一下数据结构,MDQ典型的WEBE序员的作品Q没有一Ҏ据库设计规范Q功能实现是可以Q如果要扩展Q不可能Q集基本上是不可能的,怎么办?不能办,于是Q一个月的时间修改程序,数据l构基本上换了一?前期砸进ȝ几十万打了水飘,用户走光了?/p> <p><strong>    l论QWEB2.0前期设计的时候不应该只考虑功能Q应该认真考虑一下底层和数据l构了?/strong></p> <p><strong>B公司</strong></p> <p>    B公司也是做的SNS|站Q程序是3个h开发的QCEO是某名牌大学的经学士Q有点知q的味道,又有一些特色出来,说实话,公司的潜力不错,CEO有很强的q作能力Q感觉前景不错。系l架构还行,但是---但是pȝ崩溃了,why?pȝ没有考虑到用h个v量的说法Q文件也有个量的说法,用户的相册,囄全部存贮在WEB服务器的一个分ZQ每个用户一个目录,而打开性能监视器,盘的IO高的惊hQ基本上无暇响应。众所周知Q文件系l也是一个数据库Q单独大文g无所谓,关键是整个是300多个G的零文Ӟ大量的读写操作,pȝ崩溃Q数据丢失,文gpȝ的一个链断了Q用h据全部丢失!Q!Raidq不能解x有问题,盘阵列只能保证在硬盘损坏的时候进行恢复,但是q个是文件系l的损坏Qraid不能恢复。这是一个非常沉重的问题Q系l整整停了一个月来做数据恢复Q单独文件很ҎQ但是v量文件目前还没有一个Y件能l织h软g架构Q数据恢复Y件一般在建立目录l构索引的时候就已经L了,试q用16G内存的服务器做恢复,无效Q。解x案:修改E序架构Q做分布式文件存贮(E序修改用了8天,但是文g转移却又用去了将q一个月Q,20万用h失殆?像这U?<a >http://www.bt285.cn</a> bt下蝲</p> <p><strong>    l论QWEB2.0前期的设计应该有应付量存贮的考虑Q整个涉及了E序架构的修改,前期规划不好的话基本上思\一条?/strong></p> <p><strong>C公司</strong></p> <div>    C公司是一个值得敬的公司,CEO技术出w,和比盖茨一P大学未毕业出来做|络Q?1?3q做短信狠赚了一W,后来做的项目也有所成,说实话,我很佩服。公司做的是校友斚wQ但是更偏重myspace风格Q注重个Z,推广斚w也下了大手笔。系l崩溃的原因其实很简单,׃采用的是微Y的SqlServerQ而微软的MSDN直接告诉了我们QSQLSERVER不支持负载集,只支持灾难恢复的集群Q他们的数据库超负蝲Q?00%没有下去过Q只能横向增加配|,采用??核CPUpȝQ但是系l还是崩溃了... 高互动注定了高负载。解x案: C基本入手Q解x几个E序耗能大户Q对数据库采用横向切Ԍ用h10万进行分l,同时Ҏ据库pȝq行散列Q将多个表垂直分Ԍ同时q行文g分组 Q解决问? 因ؓ修改了数据结构,E序也基本上大动了一下?好在pȝ没有出大错,损失不算很大Q不q对用户体验造成了很坏的影响?/div> <div>   附注Q?strong>SqlServer其实是可以实现集的</strong>Q一般是通过复制和分发的形式实现Q但是应用程序需要对数据库操作进行分c,更新和查询。但是同时存在一个问题,在高互动下的数据库更新操作频J的情况下,复制的gq时间会很长Q甚至会?分钟的gq!应用E序应该有应对gq的准备Q?/div> <p><strong>    l论QWEB2.0前期设计应该有良好的散列考虑Q程序应该能有配合的扩充性,W合数据库的扩充</strong></p> <p><strong>D公司</strong></p> <p>    D公司是一个各个方面做的比较好的公司,做了CDN加速,囄也独立分ZN个服务器Q数据库不错的一个,(CTO是个数据库专ӞQ系l崩溃的原因在于WEBQ按道理说WEB很容易做集群的,但是发现集群q解决不掉问题,他们的集只允许?台的WEB集群Q但?台都当掉了。仔l分析,扑ֈ原因Q我估计整个也是大部分CTO最Ҏ犯的一个错误,或者说他们Ҏ想不到的问题,是WEB上传的问题,上传的时候由于数据传输的原因Q线E是保持链接的,300个线E就可以把一个WEB Server当掉了。解x案:q个最单,把上传和其他耗能大户分离出独立出来,同时做异步分布式上传。程序改动不是很大,但是之前半个月速度满对用户体验的损׃不可视。像q种<a >http://www.5a520.cn</a> 说520|?/p> <p><strong>    l论Q没有什么结ZQ毕竟有量讉Kl验的CTO不多Q也是那几个大站的?/strong></p> <p>    ȝQ不是泼hQ模仿其实是很容易的Q随便找几个WEBE序员就能做刎ͼq且很简单,速度可能q很高效Q因为WEB2.0无非是跟数据库打交道,会操作数据库׃做。但是真正做大ƈ不容易,因ؓ能应付v量访问的E序q不单,现在的程序员都太自命不凡Q其实真正有l验的ƈ不多Q不要相信一个月?K--10K的程序员能给你多大的惊喜Q能应付量讉K的程序员不是那个h。如果您惛_2.0Q想做大Q有几个个徏议:</p> <p>    一.找DBMS的专家设计好数据库,大部分程序员都不知道分区视图Q数据散列,数据l的概念</p> <p>    ?设计好程序架构(q个其实不难Q有个高人指导就行了Q,保持良好的扩展性,成本考虑可以扑օ职的pȝ架构设计师做好系l架构,定来的发展瓶颈?/p> <p>    ?考虑好文件存贮的问题。文件存贮的技术含量看h很低Q其实是很高的,可以考虑反向代理的方案。文件存贮出问题了,站点基本上就完蛋了,不仅仅是RAID的问题和存贮服务器的问题Q不q道理倒是一点就破的</p> <p>    ?中国国情考虑Q这个最致命Q需要考虑电信和网通的问题QCDNq不能解x有问题。互动性的东西qCDNq不是很有效。最关键的是Q现有的双线机房遇到DDOSd基本上都会当掉,原因很简单,双线机房都是Uh机房Q本w就不会有太高的带宽Q随便攻M下就可以D掉(带提一个笑话,我知道一个双U机房的老Ld1G的带宽却C4G的金监֢Q很?00M的攻d可以搞定Q?/p> <p>    ?|络延迟的问题,q是分布式系l必要考虑的,E序要能容忍0?00U的数据延迟的功能,也就是同步的问题。不要小看这几十U,问题很大的,如果你的站点有交互式功能Q比如即时聊天,你可以想象一下是个什么结果。对于即时聊天的东西Q可以用反向代理来解冻I成本较高Q。但是对于留a和评论的影响不大Q但是如果系lؓ了健壮做了缓存和静态化的时候,q个东西可能是N性的了。静态文件的更新和重写需要异步的方式来做?/p> <p>    ?分散你的E序Q如果你没有太多的资金构{动辄百万的服务器,把功能分散开来,比如相册一台服务器Q留a一台服务器</p> <p>    ?看好你的E序员,如果没有很好的激励措施的话你的程序员很容易写出敷衍性的代码Q而这个可能就是将来的大患Q程序架构定下来后要修改可能p费牛劲了。最好你的CTO能对?00%的衷心,100%的负责?/p> <div>    ?文g同步的问题,q个问题可能你觉得没有必要,如果你看一下网通和电信的TTL明白了Q同步要支持l传Qƈ且不能是持箋的,否则你的成本会高出N倍,量大的时候需要采用同步服务器q行更新Q不要期望能通过你的软g实现Q交l你的程序员吧,把上面的话告诉他他就知道怎么做了?nbsp;  </div> <div> </div> <div>    ?最狠的一个问题了Q也是吃亏最大的问题Q不您跟网警的关系多好Q看好你的用P审核好你的东西,一被停机可能就致命Q本人就吃过Nơ亏?/div> <div>   </div> <div>    ?对于~存和静态文Ӟ应该采用独立的缓存服务器Q对~存l护和文件烦引维护,q更新和删除</div> <div> </div> <div>最后,各位站长一番风,大展宏图?/div> </div> <img src ="http://www.tkk7.com/wangdei/aggbug/212778.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/wangdei/" target="_blank">BT下蝲与小?20</a> 2008-07-05 20:56 <a href="http://www.tkk7.com/wangdei/archive/2008/07/05/212778.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>通过JOXL实现JavaBeans与XML的相互{?http://www.tkk7.com/wangdei/archive/2008/07/04/212600.htmlBT下蝲与小?20BT下蝲与小?20Fri, 04 Jul 2008 06:32:00 GMThttp://www.tkk7.com/wangdei/archive/2008/07/04/212600.htmlhttp://www.tkk7.com/wangdei/comments/212600.htmlhttp://www.tkk7.com/wangdei/archive/2008/07/04/212600.html#Feedback10http://www.tkk7.com/wangdei/comments/commentRss/212600.htmlhttp://www.tkk7.com/wangdei/services/trackbacks/212600.html阅读全文

]]>
解密淘宝|的开源架??http://www.tkk7.com/wangdei/archive/2008/06/22/209849.htmlBT下蝲与小?20BT下蝲与小?20Sun, 22 Jun 2008 07:37:00 GMThttp://www.tkk7.com/wangdei/archive/2008/06/22/209849.htmlhttp://www.tkk7.com/wangdei/comments/209849.htmlhttp://www.tkk7.com/wangdei/archive/2008/06/22/209849.html#Feedback7http://www.tkk7.com/wangdei/comments/commentRss/209849.htmlhttp://www.tkk7.com/wangdei/services/trackbacks/209849.html淘宝|?/a>Q是一个在U商品数量突破一亿,日均成交额超q两亿元人民币,注册用户接近八千万的大型电子商务|站Q是亚洲最大的购物|站。那么对于淘宝网q样大规模的一个网站,我猜惛_家一定会非常兛_整个|站都采用了什么样的技术、品和架构Q也会很想了解在淘宝|中是否采用了开源的软g或者是完全采用的商业Y件。那么下面我q单的介绍一下淘宝网中应用的开?a >软g?

    对于规模E大的网站来_其IT必然是一个服务器集群来提供网站服务,数据库也必然要和应用服务分开Q有单独的数据库服务器。对于像淘宝|这栯模的|站而言Q就是应用也分成很多l。那么下面,我就从应用服务器操作pȝ、应用服务器软g、Web Server、数据库、开发框架等几个斚w来介l一下淘宝网中开?a >软g的应用?/p>

    操作pȝ

    我们首先׃应用服务器的操作pȝ说v。一个应用服务器Q从软g的角度来说他的最底层首先是操作系l。要先选择操作pȝQ然后才是操作系l基上的应用软g。在淘宝|,我们的应用服务器上采用的是Linux操作pȝ。Linux操作pȝ?991q第一ơ正式被公布到现在已¾¬走过了十七个q头Q在PC Server上有q泛的应用。硬件上我们选择PC Server而不是小型机Q那么Server的操作系l供我们选择的一般也是LinuxQFreeBSD, windows 2000 Server或者Windows Server 2003。如果不准备采用微Y的一pd产品构徏应用Qƈ且有能力l护Linux或者FreeBSDQ再加上成本的考虑Q那么还是应该在Linux和FreeBSD之间q行选择。可以说Q现在Linux和FreeBSDq两个系l难分伯Ԍ很难说哪个一定比另外一个要优秀很多、能够全面的越ҎQ应该是各有所ѝ那么在选择的时候有一个因素就是企业的技术h员对于哪U系l更加的熟悉Q这个熟悉一斚w是系l管理方面,另外一斚w是对于内核的熟悉Q对内核的熟悉对于性能调优和对操作pȝq行定制剪裁会有很大的帮助。而应用全面的优化、提升性能也是从操作系l的优化开始的?/p>

    应用服务?

    在确定了服务器的g、服务器的操作系l之后,下面我们来说说业务系l的构徏。淘宝网有很多业务系l应用是ZJEE规范的系l。还有一些是C C++构徏的应用或者是Java构徏的Standalone的应用。那么我们要选择一Ƒ֮CJEE规范的应用服务器。我们的选择是JBoss Applcation Server。JBoss AS是RedHat的一个开源的支持JEE规范的应用服务器。在几年前,如果采用Java技术构Z联网应用或者企业应用Q在开源Y件中的选择一般也是Apachel织的Tomcat、JBoss?JBoss AS和Resin。严格意义上ԌTomcat和Resinq不能算是一个应用服务器Q他们是实现了部分J2EE规范的一个容器。而商业Y件的选择是IBM的WebSphere和BEA的WebLogic。到了现在,除了JBoss AS外,Apache的GeronimoQSun的Glassfish也都是很优秀的JEE应用服务器。也l现在的开发h员提供了更多的选择。具体对于目前JEE应用服务器的比较。这边就不在赘述?/p>

    在应用服务器前端Q我们采用了Web Server做了一ơ{发,我们选择的Web服务器是大名鼎鼎的Apache。几q前QApache几乎是Linuxpȝ上开源Web Server的唯一选择。那个时候虽然也有一些其他的开源的Web ServerQ但是从功能和稳定性上来说都无法和Apache相对。在今天来说QLighty也会是一个非常好的选择。Lighty是一个非常轻量、占用内存资源也比较的Web Server。虽然功能上没有Apache强大Q但是在不少场景下,性能是非常出艌Ӏ强于Apache的。而微软的IISQ就只能工作在Windows的系l上了。ƈ且用IIS的话Q基本上也就是选择了ISAPI、ASP或者ASP.NETq行Web应用的开发了?br />


   数据?

    说完了我们采用的操作pȝ、应用服务器、WebServer后,下面来谈谈我们的数据库。在淘宝|的应用中,采用了两U关pd数据库管理系l。一个是Oracle公司的Oracle 10gQ另外一个是Sun MySQL的MySQL。Oracle是一ƾ优U的、广泛采用的商业数据库管理Y件。有很强大的功能和安全性,可以处理相对量的数据。而MySQL是一N怼U的开源数据库理软gQ非帔R合用多台PC Serverl成多点的存储节炚w?q里我所指的不是MySQL自n提供的集功?Q每单位的数据存储成本也非常的低廉。用多台PC Server安装MySQLl成一个存储节炚w列,通过MySQL自n的Replication或者应用自w的处理Q可以很好的保证定w(允许部分节点失效)Q保证应用的健壮性和可靠性。可以这么说Q在关系数据库管理系l的选择上,可以考虑应用本n的情冉|军_?/p>

    一个互联网应用Q除了服务器的操作系l,Web Server软gQ应用服务器软gQ数据库软g外,我们q会涉及C些其他的pȝQ比如一些中间gpȝ、文件存储系l、搜索、分布式框架、缓存系l等{。在淘宝|,q些pȝ都是自主开发的Q没有采用目前商业的或者开源的产品。有些系l,会存在着一些开源的产品或者商业品。但是,考虑到淘宝网自己的需求和大ƈ发量的压力,q些pȝ都选择了自d发?/p>

    开发框?

    前面谈的都是pȝU的产品Q下面我们说说开发框架的使用。可能有朋友想问Q作Z个如此大规模的网站,淘宝|的Web展现层采用的是什么框Ӟ是怎么实现的呢Q曾¾¬也有到淘宝的应聘者问q我q个问题Q他问我说是不是用的struts。我告诉他说不是的。其实淘宝网的Web展现层的框架用的不是strutsQ不是webworkQ不是spring mvc{等。淘宝网的Web展现层的框架用的是集团内部自d发的一套Web框架。这个框架能够解决一些其他Web框架不能解决的、在淘宝的应用中又会出现q要解决的问题。在淘宝的多个应用中Q也采用了一些开源的框架Q比如Spring、iBatis、jBPM、Hessian、Mina{等。这些开源Y件的采用为我们构建应用系l提供了很大的帮助?/p>

    采用开源Y件构建系l,我想有两个很大的好处Q?/p>

    一个是降低成本。假设你?000台应用服务器Q如果你每台服务器上采用的不是JBoss AS或者其他开源的软gQ而是使用商业的Oracle BEA的Weblogic或者IBM的WebSphereQ那么ؓq?000台机器的应用购买License的费用是非常高的?/p>

    另外一个好?我觉得最大的好处)是你可以看到软g的源码,你可以研I了解Y件内部的工作q程、原理。这对于应用设计、开发、查错、优化都是非常有帮助的?/p>

    淘宝|的开源观

    对于开源Y件的应用Q有些h可能担心质量的问题,有些人可能担心Y件本w发展更新的问题Q等{。对于质量的问题Q我想现在很多的开源Y件尤其是一些很著名的开源Y仉有很完善的组l,有完善的开发、测试、发布流E。在一个新版本完成前,会有多次的测试版本发布,最后才是正式版。这和商业Y件是一L。ƈ且因Z码公开Q反而更加的Ҏ发现错误Q提高质量。至于第二个问题Q我惌W一个问题一P关键是组l和规划而不在是否开源,q且在很多著名的开源Y件背后,会有厂商在进行支持。Y件本w的发展应该是不会成为问题的Q不太会出现软gH然停止发展的情c?/p>

    在今后的发展中,我们q是会一如既往的关注开源Y件的发展Q也q会Ҏ需要采用不同的开源Y件。在选择一个开源品的时候,我会考虑以下几点Q?/p>

    1. q个软g目前的功能和它的RoadMap

    2. 软g本n的架?/p>

    3. 该Y件开发的z跃?/p>

    4. 该开源Y件是否是遵守该领域内的国际规范的

    5. 在同cM品中Q要挑选有比较优势的。ƈ且要考虑可能存在的移植代仗这个移植指的是采用了这Ƒּ源Y件后现有pȝ的移植,或者是从这个开源Y件到其他软g的移植?/p>

    对于企业U系l、互联网应用来说Q采用开源Y件不仅可以降低成本,更重要的是能够真正了解Y件的内部工作机制。还可以在现在的基础上进行增强和定制Q也能够从开源Y件中借鉴到很多好的设计和实现。希望国内能有更多的企业在用开源Y件的同时Q也能开源自w的一些YӞ或者能够成Z些开源Y件的贡献者。而作为淘宝网Q我们也会非常积极的参与到开源的zd中,也会努力为开源的发展做出我们应有的A献?br />

哈哈.看完之后,感觉阉Kq是电话销售公?BT一下了.



]]>
վ֩ģ壺 þѶƷ˾| ҹƷѹۿ| ձƷһ| ѿaƬ߹ۿ| ؼëƬAëƬ100Ѳ| av뾫Ʒվ| Ƭѿ| ˵Ƶwww| ASS츾ëPICS| ҹƷþ| ֳִִֺƵ | avר߲| ɫse01Ƶ| þþþþþþþѾƷ| ޾Ʒŷ޾Ʒ| Ʒ޶߹ۿ| þùѸ| þþþþþþþѾƷ| ձһ߲Ͷ߲Ա| պƷ侫| Ʒѹۿþþ| ˾69ƷƵ| պĻ| Ƶ߹ۿ| ˳ӰԺۿ| vaѾƷۿƷ| ѾƷþ| ŮڰǿͼƬ| ˳վɫ߹ۿ| ޹˳߹ۿ69վ| ޳avƬһ| Ƶ߹ۿַ| þþùƷ| վɫƵѹۿ45| Ļ| žžۺAVһ| ޹Ʒ˿߹ۿ| ˬָ߳Ƶ| 91Ʒ߹ۿ| 91ƷѸ| ձ߹ۿ|