??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲日本天堂在线,亚洲人成网站在线观看播放青青,国产午夜亚洲不卡http://www.tkk7.com/iamtin/You are coming a long way, baby~Thinking, feeling, memory...zh-cnFri, 09 May 2025 14:34:14 GMTFri, 09 May 2025 14:34:14 GMT60我的Blogq移http://www.tkk7.com/iamtin/archive/2008/06/04/move_this_blog_to_zztin.htmlTinTinWed, 04 Jun 2008 02:00:00 GMThttp://www.tkk7.com/iamtin/archive/2008/06/04/move_this_blog_to_zztin.htmlhttp://www.tkk7.com/iamtin/comments/205714.htmlhttp://www.tkk7.com/iamtin/archive/2008/06/04/move_this_blog_to_zztin.html#Feedback0http://www.tkk7.com/iamtin/comments/commentRss/205714.htmlhttp://www.tkk7.com/iamtin/services/trackbacks/205714.htmlRss: http://feed.feedsky.com/iamtin
Blog: http://tin.zztin.com


Tin 2008-06-04 10:00 发表评论
]]>
Re:架构考量-选择的难?/title><link>http://www.tkk7.com/iamtin/archive/2007/11/28/reply_architecture_debate_of_haokanbu.html</link><dc:creator>Tin</dc:creator><author>Tin</author><pubDate>Wed, 28 Nov 2007 14:39:00 GMT</pubDate><guid>http://www.tkk7.com/iamtin/archive/2007/11/28/reply_architecture_debate_of_haokanbu.html</guid><wfw:comment>http://www.tkk7.com/iamtin/comments/163835.html</wfw:comment><comments>http://www.tkk7.com/iamtin/archive/2007/11/28/reply_architecture_debate_of_haokanbu.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.tkk7.com/iamtin/comments/commentRss/163835.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/iamtin/services/trackbacks/163835.html</trackback:ping><description><![CDATA[在中文网l年?x)上和啄木鸟老大HD讨论了一下好看簿的架构问题,而后老黄写了一个blog entryQ?br /> <a title="架构考量-选择的难? >架构考量-选择的难?/a><br /> 里面谈到了架构一个高支撑能力的Web 2.0应用需要考虑的架构选型问题Q对我很有帮助。我也回复一下他的徏议:(x)<br /> <br /> 非常不好意思,今天查google reader才发现HD老大记录了这个谈话。而我都没有在blog里面记录q个事情。不q和HD老大的谈话回来我q是仔细消化了一下。关于交换机的事情我已经反思了Q后来在切换服务器的时候的发C癑օ和千兆的区别Qrsync在百兆网l下的确造成了我们的切换宕计旉变长。当时我们停止服?5分钟Q如果是千兆|络估计5分钟以内可以了Q所以如HD所_(d)我们也许应该选择HW的千兆?br /> 关于文g服务的问题,我想目前的关键还是需要看看是否有热点数据。不q对于网站来_(d)׃首页和离首页深度比较q的面被访问的可能性要明显的高Q所以如果用squid做反向代理肯定可以减轻静态文件服务的压力。但是问题也在这里,一定要量寚w态文件有压力的时候再加Squid?br /> 其实本次切换的主要问题是动态服务与静态服务分开。因为没有选择U磁盘阵列用光纤或者iSCSI的方式挂在到动态服务器Q因为原先的2950充当了文件服务器Q,所以ؓ(f)了不费计算资源我们动态服务器Q?G内存QRaid1?5k rpm盘Q和静态服务器Q?G内存QRaid5?50G X 6?200 rpm盘Q分开处理Q这样动态服务器跑DjangoQ静态服务器跑Lighttpd。他们之间只需要一个读写的通讯Q因为是内部通讯Q所以用http是没有意义的。用NFS可能是最直接的方法。用SAN或者iSCSI的方式其实也是可行的Q前者是成本问题Q而后者是费计算资源的问题,所以我们自然的按HD的意思上了NFSv4?br /> 然后又引出MogileFS的问题。其实这是个大文件存储的真谛问题。如果数据量辑ֈ一定程度,单个节点不可以承受的时候,那么我们只能选择数据分片Q可以时髦的叫做shardQ如google做的map reduce的GFS。或者干脆就自己写个单的数据索引Q然后\由分Z下,q个概念是MogileFS。MogileFS是利用多个有自q计算资源的静态服务器来分区存储ƈ理它们的一个准分布式文件系l(因ؓ(f)MogileFS不支持随问,只是整存整取Q所以说是准文gpȝQ,它已l能解决我们Web 2.0应用的问题了QFlickr也是q么q的……选用它或者自己做是个看v来和做v来都挺简单的问题Q只是它比什么都不需要改变的NFSq是E微ȝ一炏V所以这个作为未来的一U被选方案。其实呼应一下HD在方案分析里面说的应付流量压力的目标QMogileFS只是用来解决存储压力的一个方式?br /> 关于FSQ我最q也作了ResearchQ发现这q真是一个坑呀Q非常大的坑。XFS、JFS、nb的ZFS都是好方案,但是大文件系l还要考虑分区表格式,MBR已经成了限制Q用GPT吧你q不好引|因ؓ(f)如果你都是大盘的话Q单弄一个小的上MBR引导Q其它再分GPTQ势必要费一块硬盘,非常不划)Q然后LVM解决引导问题吧用hq不t实Q毕竟它的条带化不是g的Raid那样可靠Q,然后你又需要去Ҏ(gu)那几个FSQ反正头大。最后还是硬着头皮上了XFS?br /> 我觉得架构考量像HD所说的Q你有无数选择Q这些选择造成了噪韻I然后在你四处壁的时候,你可能选择了第一个可以用的方案去实施。而实际上你会(x)很快发现更好的方?#8230;…架构的重构代h可怕的……所以有了更好的Ҏ(gu)可能也不?x)实施,或者要很久以后再实施。所以,q个l验是需要年头的Q也许,也许Q很多的Ҏ(gu)都让被实施者称Z学徒l手的冬瓜,脑袋上的伤口只有冬瓜自己知道。虽然我作ؓ(f)学徒……看着也疼。我发誓Q下ơ我一定做到更好!<br /> <br /> 相关的好看簿故事Q我把好看簿服务器升U的q程用照片故事的形式记录下来了,Ƣ迎大家参观Q?br /> <a onclick="return top.js.OpenExtLink(window,event,this)" target="_blank">http://www.haokanbu.com/story<wbr>/2991/</a><br /> <br /> q有关于中国|志2007的记?br /> <a onclick="return top.js.OpenExtLink(window,event,this)" target="_blank">http://www.haokanbu.com/story<wbr>/3022/</a><br /> <br /> <img src ="http://www.tkk7.com/iamtin/aggbug/163835.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/iamtin/" target="_blank">Tin</a> 2007-11-28 22:39 <a href="http://www.tkk7.com/iamtin/archive/2007/11/28/reply_architecture_debate_of_haokanbu.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何安装Siegeq进行测?/title><link>http://www.tkk7.com/iamtin/archive/2007/10/24/how_to_use_siege.html</link><dc:creator>Tin</dc:creator><author>Tin</author><pubDate>Wed, 24 Oct 2007 05:52:00 GMT</pubDate><guid>http://www.tkk7.com/iamtin/archive/2007/10/24/how_to_use_siege.html</guid><wfw:comment>http://www.tkk7.com/iamtin/comments/155580.html</wfw:comment><comments>http://www.tkk7.com/iamtin/archive/2007/10/24/how_to_use_siege.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/iamtin/comments/commentRss/155580.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/iamtin/services/trackbacks/155580.html</trackback:ping><description><![CDATA[<div class="bvfnvxx" id="searchable"> <p>如何安装Siegeq进行测?<br /> <br /> 在CentOS 5上面的过E。其它系l安装方式略有不同参照它的官方网站?br /> </p> <h2 id="安装siege">安装siege</h2> <pre class="wiki">yum -y install siege </pre> <h2 id="配置siege">配置siege</h2> <p>q行一ơsiegeQ它?x)在你的~目录创徏一?siegerc。你可以在里面修改你需要的东西。里面有说明Q可以自׃攏V需要说明的是里面有一个benchmark的属性,为false。siege不同于ab在于试q发的时候请求也有个随机延迟Q这h较接q实际效果?</p> <h2 id="q行siege">q行siege</h2> <p>一般用法:(x) </p> <pre class="wiki">siege -c 100 -r 10 -f someScript.url </pre> <p>-c是ƈ发量Q?r是重复次数?url文g是一个文本,每行都是一个urlQ它?x)从里面随机讉K的?</p> <p>cMab的纯q发压力试Q?</p> <pre class="wiki">siege -c 100 -r 10 http://www.google.com</pre> <p>手册在此Q因为siege很早有Q命令语法也变了很多Q要么直接man siegeQ要么就看官Ҏ(gu)册:(x) <a class="ext-link" ><span id="vbthtdp" class="icon">http://www.joedog.org/Siege/Manual</span></a> </p> <p>== 关于sproxy === sproxy是用来录制siege脚本的代理工兗可是我没有在CentOS上调试成功,需要自q译安装。好处是方便模拟posth和cookie{,但是目前没有用到?<a class="ext-link" ><span id="xbxddhh" class="icon">http://www.joedog.org/Sproxy/Manual</span></a> </p> </div> <img src ="http://www.tkk7.com/iamtin/aggbug/155580.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/iamtin/" target="_blank">Tin</a> 2007-10-24 13:52 <a href="http://www.tkk7.com/iamtin/archive/2007/10/24/how_to_use_siege.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Twitter的性能调优的关键点http://www.tkk7.com/iamtin/archive/2007/10/16/scaling_twitter_the_key_points.htmlTinTinTue, 16 Oct 2007 00:42:00 GMThttp://www.tkk7.com/iamtin/archive/2007/10/16/scaling_twitter_the_key_points.htmlhttp://www.tkk7.com/iamtin/comments/153144.htmlhttp://www.tkk7.com/iamtin/archive/2007/10/16/scaling_twitter_the_key_points.html#Feedback3http://www.tkk7.com/iamtin/comments/commentRss/153144.htmlhttp://www.tkk7.com/iamtin/services/trackbacks/153144.htmlTwitter的水qx展的一些关键点Q虽然它是个RoR应用Q但是这些徏议绝Ҏ(gu)放之四v而皆准的Q非常好的ȝ?br /> 因ؓ(f)q初Twitter曄遇到了性能瓉Q而且几乎束手无策。当初很多h开始怀疑Ruby的性能问题Q而后Twitter站v来了 ^__^

有时间的朋友看看q个slideQ?a >http://www.slideshare.net/Blaine/scaling-twitterQ没有时间的看看我的摘要?br />
开发:(x)
1、一定要试Q一定要早点试Q一定要早点试Q否则你死定了。不要存M侥幸心理Q从目的开始就写好试?br /> 2、对M部分都要试。还是测试!
3、性能试要交l用h做。那h有意义。所以要做好log。用好分析工P(x)MuninQ服务器内存占用监控Q、NagiosQ服务器服务|络状态监控)、AWStats & Google Analytics、错误日志、发C错误马上q入问题跟踪pȝQTrac、Jira……太多了,但是最好有一个)?/p>


架构Q?br /> 1、用可以分区的架构。按照架构上的功能清晰的分区。这意味着你可以通过替换一个实现来改进性能Q因为性能和复杂度往往是不可兼得的?/p>

对于数据库:(x)
1、尽量不要分布式数据库,包括数据库分区。最好通过提高单台服务器的性能提升q个节点的性能。更重要的是查询优化。通过备䆾服务器解军_Ҏ(gu)障?br /> 2、对where子句中的字段增加index。(q个当然了)
3、扁q_查询Q比如一个user有很多朋友,查一个h的朋友如果通过外键?x)浪费很多性能。可以把ids序列化ؓ(f)1,2,3q样Q然后用like查询速度更快?br /> 4、一定要优化你的SQLQ不要寄希望于ORMl你解决Q不是DataMapper、ActiveRecord或者UnitOfWorkQ?/p>

CacheQ?br /> 1、一定要考虑CacheQ最重要的是领域对象的CacheQ一定要考虑MemcacheQ如Memcached?br /> 2、应该有90%的查询可以Cache?br /> 3、但是要注意Cache实效问题Q要?qing)时标注实效Q,q个是个隄也是个重炏V?br /> 4、可以考虑用Message来标记实效(q样可以保证异步Q无d的按照顺序的让数据失效)Q据UC不是很难?/p>

MessagingQ?br /> 1、؜合应用。不用去看Java的OpenFire了,即它很好,完全可以考虑erlang的ejabberd了,俄罗斯的产物?br /> 2、排队问题有很多解决Ҏ(gu)QActiveMQ、RabbitMQ、MySQL + Lightweight Locking、DrbQfor rubyQ?/p>

Tin 2007-10-16 08:42 发表评论
]]>
大型Java Web目的架构和部v调优问题http://www.tkk7.com/iamtin/archive/2007/09/17/java_web_architecture_and_performance_turnning.htmlTinTinMon, 17 Sep 2007 14:48:00 GMThttp://www.tkk7.com/iamtin/archive/2007/09/17/java_web_architecture_and_performance_turnning.htmlhttp://www.tkk7.com/iamtin/comments/146003.htmlhttp://www.tkk7.com/iamtin/archive/2007/09/17/java_web_architecture_and_performance_turnning.html#Feedback5http://www.tkk7.com/iamtin/comments/commentRss/146003.htmlhttp://www.tkk7.com/iamtin/services/trackbacks/146003.html 本文已经发表于InfoQ中文站,Q?a >大型Java Web目的架构和部v问题Q?br />

一位ID是jackson1225的网友在javaeye询问?a title="一个大型Webpȝ的架构和部v选型问题" target="_blank">一个大型Webpȝ的架构和部v选型问题Q希望能提高现有的基于Java的Web应用的服务能力。由于架构模式和部v调优一直是JavaC֌的热门话题,q个问题引发了很多热心网友的讨论Q其中一些意见对其它大型Web目也有很好的指导意义。在讨论之初jackson1225q样描述了当前的应用的架构和部vҎ(gu)Q?/p>

目前pȝ架构如下:

  1. web层采用struts+tomcat实现Q整个系l采?0多台web服务器,其负载均衡采用硬件F5来实玎ͼ
  2. 中间层采用无状态会(x)话Bean+DAO+helpercL实现Q共3台weblogic服务器,部v有多个EJBQ其负蝲均衡也采用F5来实玎ͼ
  3. 数据库层的操作是自己写的通用cd现的Q两台ORACLE数据库服务器Q分别存攄户信息和业务数据Q一台SQL SERVER数据库,是第三方的业务数据信息;

web层调用EJBq程接口来访问中间g层。web层首先通过一个XML配置文g中配|的EJB接口信息来调用相应的EJBq程接口Q?/p>

该系l中一ơ操作涉?qing)到两个ORACLE库以?qing)一个SQL SERVER库的讉K和操作,x三个数据库连接,在一个事务中完成?/p>

q样的架构其实很多公叔R在用,因ؓ(f)Struts和Tomcat分别是最行的Java Web MVC框架和Servlet容器Q而F5公司的负载均衡是横向扩展常见的解x案(例如配置session stickyҎ(gu)Q。由于这个系l中有跨数据源的事务Q所以用Weblogic Server EJB容器和支持两阶段提交的数据库驱动可以保证跨数据源的事物完整性(当然Q容器管理的分布式事务ƈ非是唯一和最优的解决Ҏ(gu)Q?/p>

但是随着Rod Johnson重量U的著作《J2EE Development without EJB》和其中的Spring框架的流行,轻量U框架和轻量U容器的概念已经深入人心。所以对于jackson1225提出的这个场景,大多数网友都提出了置疑,认ؓ(f)q个pȝ滥用了技术,完全是在费钱。网友们大都认ؓ(f)SLSBQ无状态会(x)话BeanQ完全没有必要出现在q个场景中,认ؓ(f)SLSB通过q程接口讉K本地资源?x)有很大的性能开销Q这U观点也是Rod johnson在without EJB中批判EJB 2.x中的一大反模式?/p>

׃JavaEE是一个以模式见长的解x案,模式和架构在JavaEE中占有很重要的地位,所以很多业内专家也都警?#8220;反模式(Anti-patternsQ?#8221;的出现。对于上面所q的Ҏ(gu)是否是反模式Qjackson1225马上站出来申辩:(x)

我们目是把EJB作ؓ(f)一个FacadeQ只是提供给WEB层调用的q程接口Q而且只用了无状态会(x)话BeanQ所以性能上还可以的?/p>

q个解释很快得到了一些网友的认可Q但是大家很快意识到架构的好坏决定于是否能够满用户的需求,davexinQ可能是jackson1225的同事)描述了这个系l的用户和ƈ发情况:(x)

现在有用?000万,马上要和另一个公司的?x)员pȝ合ƈQ加h一共有9000万用戗数据量单表中有一亿条以上的数据。这是基本的情况Q其实我觉得现在的架构还是可以的Q现在支持的q发大概5000q发用户左右Q接下来?x)进行系l改造,目标支持1万个q发用户?/p>

具体的ƈ发量公布后又有网友置疑这个数据,认ؓ(f)q个pȝ的Servlet容器支持的ƈ发数太小Q怀疑是否配|不够优化。davexin又补充了该项目的服务器配|:(x)

pȝ前端tomcat都是用的刀片,配置?G内存Qcpu大概?.0GQ每台机器也支?50-400个ƈ发,再多的话Q就?x)相应时间非常的常,?0U,失去了意?Q所以我们才得出q样的结论的?/p>

一位ID是cauherk的网友提Z比较中肯的意见,他没有从Web容器单纯的ƈ发支持能力上提出改进Ҏ(gu)Q而是提出了对于类似的应用?a title="一些通用的改q提C? target="_blank">一些通用的改q提C?/a>Q这里摘要一下:(x)

  1. 数据库压力问?

    可以按照业务、区域等{特性对数据库进行配|,可以考虑分库、用rac、分区、分表等{策略,保数据库能正常的进行交易?/p>

  2. 事务问题

    要在两个数据库中操作Q那么必考虑到分布式事务。你应该仔细的设计你的系l,来避免用分布式事务Q以避免分布式事务带来更多的数据库压力和其它问题。推荐你采用延迟提交的策?q不保证数据的完?Q来避免分布式事务的问题Q毕竟commitp|的几率很低?/p>

  3. web的优?

    静态、图片独立用不同的服务器,对于常态的静态文Ӟ采用E-TAG或者客L(fng)~存Q?google很多是q样q的。对于热点的功能Q考虑使用完全装蝲到内存,保证l对的响应速度Q对于需要频J访问的热点数据Q采用集中缓?多个可以采用负蝲均衡)Q减L据库的压力?/p>

    对于几乎除二q制文gQ都应该在L4上配|基于硬件的压羃Ҏ(gu)Q减网l的量。提高用户用的感知?/p>

  4. |络问题

    可以考虑采用镜像、多路网l接入、基于DNS的负载均衡。如果有_的投资,可以采用CDN(内容分发|?Q减M的服务器压力?/p>

cauherk的这个分析比较到位,其中ETags的方案是最q的一个热点,InfoQ?#8220;使用ETags减少Web应用带宽和负?/a>”里面对这U方案有很详l的介绍。一般以数据库ؓ(f)中心的Web应用的性能瓉都在数据库上Q所以cauherk把数据库和事务问题放C前两位来讨论。但是davexin解释在所讨论的这个项目中数据库ƈ非瓶颈:(x)

我们的压力不在数据库层,在web层和F5?当高峰的时?QF5也被Ҏ(gu)了,是每秒点击过30万,web动态部分根本承受不了。根据我们程序记录,20台web最多承?000个ƈ发,如果再多Qtomcat׃响应了。就像死了一栗?/p>

q个回复让接下来的讨论都集中于Web容器的性能优化Q但?a title="JavaEye站长robbin发表了自q意见" target="_blank">JavaEye站长robbin发表了自q意见Q将话题引回了这个项目的架构本nQ?/p>

performance tuning最重要的就是定位瓶颈在哪里Q以?qing)瓶颈是怎么产生的?/strong>

我的推测是瓶颈还是出在EJBq程Ҏ(gu)调用上!

tomcat上面的java应用要通过EJBq程Ҏ(gu)调用Q来讉Kweblogic上面的无状态SessionBeanQ这L(fng)q程Ҏ(gu)调用一般都?00ms~500msU别Q或者更多。而如果没有远E方法调用,即大量采用spring的动态反,一ơ完整的webh处理在本地JVM内部的完成时间一般也不过20ms而已。一ơwebh需要过长的执行旉Q就?x)导致servletU程被占用更多的旉Q从而无法及(qing)时响应更多的后箋h?/p>

如果q个推测是成立的话,那么我的是既然你没有用到分布式事务Q那么就q脆LEJB。weblogic也可以全部撤掉,业务层用spring取代EJBQ不要搞分布式架构,在每个tomcat实例上面部v一个完整的分层l构?/p>

另外在高q发情况下,apache处理静态资源也很耗内存和CPUQ可以考虑用轻量web server如lighttpd/litespeed/nginx取代之?/p>

robbin的推断得C|友们的支持Qdavexin也认同robbin的看法,但是他解释说公司认ؓ(f)攑ּSLSB存在风险Q所以公司們֐于通过Tomcat替换为Weblogic Server 10来提升系l的用户支撑能力?a title="robbin则马上批评了q种做法" target="_blank">robbin则马上批评了q种做法Q?/p>

坦白说我q从来没有听说过大规模互联网应用使用EJB的先例。ؓ(f)什么大规模互联|应用不能用EJBQ其实就是因为EJB性能太差Q用了EJB几乎必然出现性能障碍?/p>

web容器的性能说到底无非就是ServletU程调度能力而已QTomcat不像WebLogic那样附加n多管理功能,跑得快很正常。对比测试一下WebLogic的数据库q接池和C3P0q接池的性能也会(x)发现cM的结论,C3P0可要比WebLogic的连接池快好几倍了。这不是说WebLogic性能不好Q只不过weblogic要实现更多的功能Q所以在单一的速度斚w׃(x)牺牲很多东西?/p>

以我的经验来判断Q用tomcat5.5以上的版本,配置a(chn)pr支持Q进行必要的tuningQ用BEA JRockit JVM的话Q在你们目前的刀片上面,支撑500个ƈ发完全是可以做到的。结合你们目?0个刀片的gQ那么达?万ƈ发是没问题的。当然这样做的前提是必须扔掉EJBQƈ|web层和业务层在同一个JVM内部?/p>

接下来robbinq针对davexin对话题中的应用分别在tomcat和weblogic上的试数据q行了分析:(x)

引用Q?

2?台weblogic10 ExpressQ相当于1台tomcatQ用于发布jsp应用Q加1台weblogic10Q发布ejb应用Q,能支?000个ƈ发用?.....
......
4?台tomcat4.1?台weblogic8Q只能支?50个ƈ发用Ptomcatpl超Ӟ说明此种l构瓉在tomcat?

q说明瓶颈还不在EJBq程调用上,但是问题已经逐渐清楚了。ؓ(f)什么weblogic充当web容器发vq程EJB调用的时候可以支?000个ƈ发,但是tomcat只能?50个?只有两个可能的原因:(x)

  1. 你的tomcat没有配置好,严重影响了性能表现
  2. tomcat和weblogic之间的接口出了问?

 

接着springside目发v者江南白衣也提出了一个M的优化指|(x)

1.基础配置优化

tomcat 6Q?tomcat参数调优?
JRockit JVM? JVM参数调优Q?br /> Apache+Squid 处理静态内容?

2.业务层优?/p>

部分功能本地化,而不调remote session bean?
异步提交操作,JMSQ?br /> cache热点数据Q?

3.展示层优?/p>

动态页面发布ؓ(f)静态页面?
Cache部分动态页面内容?

davexin在调整了Tomcat配置后应验了robbin对tomcat配置问题的质疑,davexinq样描述l过配置优化以后的测试结果:(x)

l过试Qƈ发h数是可以辑ֈ像robbin所说的一P能够?00人左叻I如果压到q发700人,有15%左右的失败,虽然在调整上面参C后,q发人数上去了,但是在同L(fng)旉内所完成的事务数量下降了10%左右Qƈ且响应时间gq了1U左叻I但从整体上来_(d)牺牲一点事务吞吐量和响应时_(d)q发人数能够提高500Q觉得还是值得的?/p>

xq个话题有了一个比较好的结果。这个话题ƈ非完全针对一个具体的目才有意义Q更重要的是在分析和讨论问题的过E中|友们解决问题的思\Q尤其是cauherk、robbin、江南白衣等几位|友提出的意见可以让q大Java Web目开发者了解到中、大型项目所需要考虑的架构和部v所需要考虑的关键问题,也消除了很多人对轻量Servlet容器与EJB容器性能的一些误解?/p>

在讨Zq有一些小插曲Q如davexin和江南白衣讨ZJRocket的实ӞRealtimeQ版本是否可以提升Servlet容器的相应能?/a>Q答案是不可以。还有ID为mfc42d的网友从Servlet容器的ƈ发支持能力引甛_?a title="Java的线E调度能力和NIO对Servelet容器的意? target="_blank">Java的线E调度能力和NIO对Servelet容器的意?/a>Q他推荐了自q两篇不错的blog“java的线E实?/a>”?#8220;javaq程使用的最大内存的数?/a>”Qblog文章里面从JVM源码U别分析了Java的线E支持能力,面(f)JVM性能调优问题的网友可以认真阅M下?/p>

Tin 2007-09-17 22:48 发表评论
]]>
从CTO如何设计软g到如何才是架构师http://www.tkk7.com/iamtin/archive/2007/09/15/cto_design_project_and_how_to_be_architect.htmlTinTinSat, 15 Sep 2007 06:57:00 GMThttp://www.tkk7.com/iamtin/archive/2007/09/15/cto_design_project_and_how_to_be_architect.htmlhttp://www.tkk7.com/iamtin/comments/145365.htmlhttp://www.tkk7.com/iamtin/archive/2007/09/15/cto_design_project_and_how_to_be_architect.html#Feedback3http://www.tkk7.com/iamtin/comments/commentRss/145365.htmlhttp://www.tkk7.com/iamtin/services/trackbacks/145365.html 起因是javaeye的这个帖子:(x)我回复maqujun_(d)(x)
呵呵Q国外不止是CTOq样做?br /> 我国外的一些朋友在大学的时候计机相关的作业就是这L(fng)Q这U做法一般不叫design by interface。老外一般叫做design by contractQ因为contract有的时候是interfaceQ有的时候是UMLQ有的时候是描述非常详细的类设计文档Q但是结果是一L(fng)Q要求的外观和接口,内部怎么实现是你的事情?br />
maqujun又回复说Q?/span>
其实CTO不做q种事啦Q我的文章写的有点偏题了。interface design是我的工作。我在文中是Ҏ(gu)自己工作的ȝl验Q希望和更多人分享。你所说的国外大学的计机相关的作业的内容Q我很认同。这才是大学中应该学的东ѝ可惜我们中国的大学Ҏ(gu)没有这斚w的涉?qing)。有些差距在一开始的地方Ş成了。不q好在我们自己可以I补它?br />
哈哈Q很高兴收到你的回复。交个朋友吧。我加你为好友! :D

我又回复Q?/span>
哈哈Q是呀。我q真没见q公叔R面专门有人做interface design的,q样不错Qapi?x)变漂亮?br /> 老外的计机教育让我觉得在国内上大学基本上就是浪Ҏ(gu)间?br />
maqujun回复Q?/span>
哈哈Q?#8220;国内上大学基本上是费旉”有同感!
不过我可不是专门做interface design的哦。我不是架构工程师,我是软g开发工E师Q本质还是做开发的。design部分只是一个新目的开始前的工作而已?br />
我的感想Q?/span>
架构师这个概忉|较虚。在国内Q架构师其实是有强烈基們֐的开发者,他们有很大的热情来实验一个自q(zhn)或者感兴趣的东西,从概念上q不是架构师?br />
我很x国外的一些架构师描述如何成ؓ(f)架构师。架构师其实最重要的是见识Q要无們֐性的研究技术和需求。我很喜Ƣ的印度的一位精导师克里希姆纳提说q自q前提是要学会(x)聆听Q而聆听就是在听的时候心理不要有M反抗或者评论的dQ所有的思考都要留在听C后。电(sh)影《教父》里面有一句台词我非常喜欢Q不要仇恨你的敌人,因ؓ(f)那会(x)影响你的判断力。我惌都是一个意思。如果想要成为架构师p多聆听,然后思考,又清楚的判断力,q样选择才会(x)是正的Q?br />

Tin 2007-09-15 14:57 发表评论
]]>
说说我对moo、prototype、JQuery的看?/title><link>http://www.tkk7.com/iamtin/archive/2007/09/13/reply_to_javaeye_fins_why_leave_prototype_choose_moo.html</link><dc:creator>Tin</dc:creator><author>Tin</author><pubDate>Thu, 13 Sep 2007 00:40:00 GMT</pubDate><guid>http://www.tkk7.com/iamtin/archive/2007/09/13/reply_to_javaeye_fins_why_leave_prototype_choose_moo.html</guid><wfw:comment>http://www.tkk7.com/iamtin/comments/144680.html</wfw:comment><comments>http://www.tkk7.com/iamtin/archive/2007/09/13/reply_to_javaeye_fins_why_leave_prototype_choose_moo.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.tkk7.com/iamtin/comments/commentRss/144680.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/iamtin/services/trackbacks/144680.html</trackback:ping><description><![CDATA[因ؓ(f)javaeye的fins的这个帖子:(x)<a >我ؓ(f)什么选择mootools,抛弃了prototype. (mootools与prototype 核心代码分析)</a><br /> 我发表了一下我的看?img src="/CuteSoft_Client/CuteEditor/images/emwink.gif" align="absmiddle" border="0" alt="" /><br /> <br /> 我觉得fins同学的一些说法会(x)造成没有深入使用q几个框架的朋友的误解。因几个框架的思想是不一L(fng)Q所以它们的语法也是不同的。fins同学的评价似乎更像从Java的OOx来评价几个js框架?br /> 其实Qmoo一开始的x是light weightQ所以它的很多语法其实就是没有语法。fins说的json语法Q其实就是js里面的散列对象嘛Qjavascript语法本来是q个样子呀Q不包装是q样。而这U方式如果写的好读v来很像DSLQ很舒服Qmoo充分发挥了这个好处?br /> prototype和JQuery都没有强调承这L(fng)概念。javascript的强大很大就来自它的原Şl承Q如果要用好它就要利用好原Şl承。prototype在这斚w很像RubyQ比如EnumerableQ这是一U按照行为的抽象Q很W合Ruby/Python里面Module的想法,q所有行为都要抽象到一个对象再l承Q行为本w也可以抽象再؜入?br /> JQuery我觉得像Python。write less do moreq个x也比较pythonic。在q个框架中有很强的函数式~程的味道,其实javascript已经具备了函数式~程的语法能力,所以用FP的强大是JQuery受欢q的原因之一?br /> <br /> 说回来,q是派原因。moo的生比前两者要晚。prototype已经开始走大而全的\子了Q而且配套的script.aculo.us也是来臃肿(而且q个Ҏ(gu)库的代码质量的确不怎么好)Q但是要看到RoR里面使用RJS化Ajax应用开发都得益于这些大而全的库Q所以我们也没什么可抱怨的Q只能说没有使用RoRn受点便利吧。JQueryl箋保持它的优美Q插件也来多Q我了解到的很多使用Djangoq行W(xu)eb开发的朋友都在用JQuery。而mooQ越来越受欢q,我们也要认真x它的体积Q如果它能持l保持苗条,那么轻量UWeb目很有可能越来越多的选用它?br /> 每年学一门新语言Q学两三个新框架Q肯定是有益的。fins转阵营说明你也在拥抱变化呀:D<br /> <img src ="http://www.tkk7.com/iamtin/aggbug/144680.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/iamtin/" target="_blank">Tin</a> 2007-09-13 08:40 <a href="http://www.tkk7.com/iamtin/archive/2007/09/13/reply_to_javaeye_fins_why_leave_prototype_choose_moo.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>充满Trick的CSSQ两隄选择http://www.tkk7.com/iamtin/archive/2007/09/10/css_trick_to_be_or_not_to_be.htmlTinTinMon, 10 Sep 2007 00:02:00 GMThttp://www.tkk7.com/iamtin/archive/2007/09/10/css_trick_to_be_or_not_to_be.htmlhttp://www.tkk7.com/iamtin/comments/143872.htmlhttp://www.tkk7.com/iamtin/archive/2007/09/10/css_trick_to_be_or_not_to_be.html#Feedback1http://www.tkk7.com/iamtin/comments/commentRss/143872.htmlhttp://www.tkk7.com/iamtin/services/trackbacks/143872.html 本文已经发表于InfoQ中文站,Q?a target="_blank">充满Trick的CSSQ两隄选择Q?

javaeye的hax最q在他的blog上进行了一场关于如何写css的讨论,其中反思和讨论了一些关于基于标准或trickq行设计的选择问题Q这个问题也?a target="_blank">David Heinemeier Hansson对于XHTML/CSS/Javascript标准q行RIA开发话?/a>的一个g展。我们可以从中思考如何在不完的技术中选择一条相对完的技术\U?

讨论的v因是淘宝|的UED团队成员D늎爷在他的blog上发表了一?a target="_blank">关于淘宝|页面设计上的小技巧(TrickQ?/a>的介l,q个技巧是Z让一些条目之间的分隔U完全用css生成Q不使用多余的classQ段王爷q对比了其它三种常见实现Ҏ(gu)。实现方法如下:(x)

从很久很久以前开始,cȝ间的横线无非都只有三U?br /> 1、背景图
在a标签讄一个padding 用宽1px高不{的背景图来position到右侧?br /> ~点Q最后一个还是要用class来隐藏掉背景?br /> 2、符?br /> 在每个a标签之间?#8220;|”W号来填充?br /> ~点Qhtml文g变大Q文件维护变得很ȝQ而且在html中毫无意义?br /> 3、a标签右侧的boder?br /> 同背景图一P只不q用border-right来代ѝ缺点也同上?br />
其实现有Q淘宝的实现方式Q是利用ul的overflow:hidden 再将li的margin-left:-1px的做法做出来的。这L(fng)做法可以同旉免以上的~点了?br />

上面提到的用border的传l方式需要在W一或者最后一个元素上面添加class来隐藏borderQRealazy也在他的blog中给Z一U不错的解决Ҏ(gu)Q他推荐q样做:(x)

D目间的竖线Q我们往往通过border或者background来实现。特D需求是Q第一左Ҏ(gu)竖线或最后一右Ҏ(gu)竖线。按照一般的~程Ҏ(gu)Q控制第一要比控制最后一容易得多?br />
区分W一的q有一个好处是QCSS有一?first-child的伪元素Qpseudo elementQ可以让我们轻而易丄选择W一个子元素。遗憄是,当前全球占有率最高的览器,IE6Qƈ不支持这个伪元素。我们可以手工给W一个元素加上class然后再定义它。等ie6淘汰之时Q就可以攑ֿ?:first-child了,相权衡的话,我觉得给W一加上class="first"也不׃ؓ(f)实用M做法?

Realazy提出的方案的思\是用基于标准的css选择器(selectorQ,q种Ҏ(gu)的好处是可以实现完美的内容与表现分离。但是现实的问题是ƈ非所有的览器都Z标准实现Q这也正是基于标准的RIA开发面对的最大问题,其以CSS和Javascript问题最大。javaeye的hax在他的blog中提Z自己对于q个Trick的不同意见:(x)

因ؓ(f)我觉得这个方法一点也不好。很单的一个理由:(x)q只是一个trickQ只适合q特D情况,假设你要换用“-”来分割呢Q作为插入分割符h_(d)真正合理使用css的,我给一个例子:(x)
li ~ li:before { content:'-'; margin:0.25em; }

优点Q含义非常清晎ͼl护性极高。你可以换Q何的分隔字符Q可以设定字体,可以讑֮颜色、大等样式Q甚臛_以换用图片作为分隔?/p> 好了Q下面说~点。唯一的缺点:(x)IE不支持?/strong>

haxl出的方案在IE中无法用,其实对于大部分网站来说这q当于l大多数用户都无法看到这U表玎ͼq就意味着p|。淘宝UED的小马提?#8220;实用W一”Q从q种观点上说hax的方案就是不实用的。但是hax提出可以使用Dean Edwards的IE7 Javascript?/a>Q?/p>

IE7是一个可以让IE像标准浏览器一样工作的Javascript库。它修正了很多CSS问题Q让PNG在IE5和IE6下正常工作?

IE7q个库动态的实现了很多IE原本不支持的伪类QPseudo ClassesQ,让完全基于标准的css选择器(使用伪类Q成为可能。随后,hax在他的另外一blog“面向未来的CSS实践”中作了如下设惻I(x)

我推崇一U面向未来的CSS实践?strong>卛_胆采用CSS2.1甚至部分CSS3的特性?/strong>因ؓ(f)l大多数Ҏ(gu),Firefox、Opera?Safari{都已经很好的支持了。MSIE7也改q了许多Q将来IE也无疑终I会(x)完全支持CSS2.1。对于目前的IEQ除了graceful degradation的方式(实际上整个内Ҏ(gu)式分ȝ原则和良好的CSS设计可以保q点Q比如淘宝以前的“怽”所体现的)Q可以考虑通过特定手段来patch之?br />
在这点上Q我必须_(d)我原来也是一直坚持只用ie6的selector的。是什么改变了我?是Dean Edwards的IE7Q它的出C仅在于实践h(hun)值——即提供了一个对于IE的补丁,让开发者可以直接写C(j)SS2甚至CSS3?

hax提出的这U方式是比较Ȁq的Q他q在“面向未来的CSS实践”中进一步的描述了通过脚本修正的方式解决IE不支持标准伪cd多class问题的设惻I他的核心x是让CSS的开发可以遵循标准,减少Z优雅退化(graceful degradationQ而向最低支持(览器)兼容造成的表达方式限制。但是hax自己也提Zq种思\面(f)的尴,它D了table布局的实用性h(hun)gؓ(f)例:(x)

我认为出现这栯刺的情况Q即遵@标准的hzd比不遵@的h更篏Q是很有问题的?/strong>q种矛盾在我w上存在着Q?001q的时候我在某bbs上发了个_(d)大数 table布局之罪Q但是过了几天我又跑上去说table布局在某U情况下也可以用用?dlee同志貌似到现在也跟我当时一栗如果你实认ؓ(f)Qtable布局从实用主义角度无法被完全否定Q那DHH同志采用实用M的角度来力挺 html/css/js׃有点心虚Q那个标题也显得带点Q性味?#8230;…

“遵@标准的hzd比不遵@的h更篏”q句话说Z很多坚持Z标准q行CSS设计的开发h员的心声Q这其实是实用性和坚持标准之间的一些交换,现实世界中两个方面如何^衡正是广大XHTML/CSS/Javascript开发者需要认真思考的Q关键的问题Q还是目的要明确。盲目的遵@标准Q例如很多开发者着q于使用div布局代替tableQ但是却没有明确的目标就?x)迷失,haxq样评h(hun)Q?/p>

从实用主义角度说Q}慎的table布局也许更简单,因ؓ(f)它更好的映射Cgrid模型上。如果你转用div/spanQ?strong>标签是清CQ但是css是؜qQ?/strong>q些属性(css属性)是分散的Qcss代码无法反映整体Q无法记录你的grid 布局意图Q这是ؓ(f)什么我们经常说我有一个css trick的原因,它是trick而已Q是你达到最l目的的手段Q但是你的目的,你的意图Q没有好好加入文档的话,那维护v来恐怕也不见得轻松?/strong>

table布局 其他css样式 = 清晰的布局意图和内容的混合?/p>

div容器 css样式 = 内容样式分离Q但是从css代码中很隄出布局意图

关于div/css布局q有一些误区,单的把table标签换成div是没有意义的Q若q层U的div可能比table更糟p)?strong>实际上我们希望的是语义标{?/strong>

我们应该看到QCSS的意图是表现分R从设计的角度就是实现语义化的htmll构Q让html/xhtml量只表辄_的数据l构。但是此时css里面的布局意图是比较难以被记录的(难以被理解就难以l护Q难以重构)Q有其在充斥了大量Trick的情况下Q这正是q大E序?设计人员需要解决的Q我们是否应该通过不断地重构来扑ֈq个矛盾的^衡点呢?Ƣ迎大家讨论。最后附上淘宝UED团队的小马ȝ的淘宝CSS~程原则Q?/p>

  1. 量不用hack
  2. 量不用ie6不支持的选择W?/strong>
能符合这两个条g的最z的写法Q就是我们的目标?


Tin 2007-09-10 08:02 发表评论
]]>
推荐一个iTunesҎ(gu)插ghttp://www.tkk7.com/iamtin/archive/2007/08/03/134276.htmlTinTinFri, 03 Aug 2007 08:42:00 GMThttp://www.tkk7.com/iamtin/archive/2007/08/03/134276.htmlhttp://www.tkk7.com/iamtin/comments/134276.htmlhttp://www.tkk7.com/iamtin/archive/2007/08/03/134276.html#Feedback1http://www.tkk7.com/iamtin/comments/commentRss/134276.htmlhttp://www.tkk7.com/iamtin/services/trackbacks/134276.html阅读全文

Tin 2007-08-03 16:42 发表评论
]]>
非常好的职业Q来自Scott Adamshttp://www.tkk7.com/iamtin/archive/2007/08/03/scott_adams_on_career.htmlTinTinFri, 03 Aug 2007 08:06:00 GMThttp://www.tkk7.com/iamtin/archive/2007/08/03/scott_adams_on_career.htmlhttp://www.tkk7.com/iamtin/comments/134266.htmlhttp://www.tkk7.com/iamtin/archive/2007/08/03/scott_adams_on_career.html#Feedback4http://www.tkk7.com/iamtin/comments/commentRss/134266.htmlhttp://www.tkk7.com/iamtin/services/trackbacks/134266.html非常好的职业Q来自Scott Adams
从一个非常喜Ƣ的人的blog看到的,q个人是Tomcat的作者,现在是Apple的Object C开发者,兼重要的RoR作者,D深摄影师Q兼Mac大fansQ他叫James Duncan DavidsonQ?a >http://duncandavidson.com/Q?br>在一Blog讲到QScott Adams_(d)(x)
Everyone has at least a few areas in which they could be in the top 25% with some effort. In my case, I can draw better than most people, but I’m hardly an artist. And I’m not any funnier than the average standup comedian who never makes it big, but I’m funnier than most people. The magic is that few people can draw well and write jokes. It’s the combination of the two that makes what I do so rare. And when you add in my business background, suddenly I had a topic that few cartoonists could hope to understand without living it.
译一下就是说Q?br>每个人都可以扑ֈ通过一些努力就可以跻n?5%的行业。例如我Q我可以比大多数人画的好Q但是我q够不上艺术家的水^。我也没有达到喜剧演员那U好W的水^Q但是我比大多数人好W。魔法在于没什么h即画得好又会(x)写笑话。所以؜合一下我很E有了。加上我的商业知识背景,我突然发现我比其它的动画人更能理解它Q商务)?/p>

思考一下,其实是当下行的mush up。你混合一下你的长处,也许你就扑ֈ了你真正的长处,你的职业?br>同时James又推荐了Stay HungryQStay FoolishQ他说他37岁了依然觉得那是很好的文章。我很早之前也推荐过q篇文章Q大家l看看?/p>

Tin 2007-08-03 16:06 发表评论
]]>
վ֩ģ壺 Ʒһ| ޹aۺ| ѵƵ| ëƬëƬַ| | ĻƷþ| ɫ7777Ƶ߹ۿ| ޹ƷȾþ| ԭ1769þѲ| ޳AVƬ߹ۻ| þwww˳ɾƷ㽶| þþþAVۺϲҰ| ڵaëƬѿ| ҹƬ߹ۿӰԺ| VƬ߹ۿ| ޾ƷƷ벻| Ƭѹۿ92ƵƵ| AƵһ| һһ60Ƶ| ۺAV߲| Ƭѿ| av߹ۿ| 91Ʒֻ| 鶹ɫۺվ| ƶ߹ۿ| ޿ѿ| Ļ| þþƷ˳| һɫþۺ޾Ʒ| ɫ˿߹ۿ | ޾Ʒþþþȥq| aëƬþѹۿ| 97츾͵ͼƬ| һ| AVһԧӰԺ| ˵ĺÿѹۿƵ| һ| ͵͵޸պ| 114ëƬѹۿ| ޾Ʒŷ߹ۿ| VAĻ|