领导力大挑战
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
该内容已经被标记书签!
标记书签错误,请重试!
作者 Gavin Terrill 译者 郭晓刚 发布于 2008年6月25日
虽然经受“/.效应”的考验常被人拿来说事,但其实Yahoo!的首页才是互联网上最繁忙的站点。Lukas Biewald讲述了他的FaceStat网站被Yahoo!首页上榜之后访问人数急速上升到100,000,因而不得不快速完成伸缩的故事。
星期天早上我坐在厨房里,边看报纸边想着早饭午饭一块儿吃了就在这时候接到了Chris的电话。他告诉我他家里的电话有好几通留言,都是说我们的网站FaceStat挂了。FaceStat是我们Dolores Labs用来展示群众资源技术的一个站点,发布一个月以来已经有了一小群追随者。我检查了一下网站的情况,发现它给我返回了500错误——10次请求里大概只有一次能打开真正的页面。于是我登录到应用服务器上,发现磁盘已经满了,log文件竟然涨到了20GB!我把log文件删了,然后让朋友Zuzka查查看我们是不是被Slashdot临幸了。
第一反应是建立静态的页面,但他们发现仍不足以在汹涌的潮水中站住脚:
难以置信,我们的Web服务器(nginx)连静态页面也没办法可靠地显示……Brendan发现我们已经达到了系统对最大文件打开数的限制——100,000——因为连接也算是打开文件。
接着团队转向要求主机托管商增加服务器资源,增加缓存,并且开始去除一些功能:
Brendan忙着安装新的机器,我则开始砍掉系统里所有数据库密集的功能,Chris负责增加缓存……大概中午1点网站重新上线,看起来很稳定。
周一负荷继续增大,于是团队增加了memcached、监控工具,还把数据库移到了另一台更大的机器上:
现在已经是周二的晚上,原来在一台机器上处理的负载,现在已经增长到了50倍,网站看上去有点摇摇欲坠。我们有6台应用服务器和一台大型的数据库服务器。Chri和Brendan真是了不起的黑客,现在的工具进步也很了不起。Slicehost的伸缩速度正是我们需要的。Amazon的S3负担了所有的图片,虽然响应延迟不甚完美,但单凭我们自己绝对解决不了这种带宽问题。Capistrano让我们得以随时随处部署和回滚;git加上github让我们得以争分夺秒地分头行动,再把代码合并到一起做部署。God保障服务器运行。memcached给了我们出色的缓存,而痛苦非常少(基本上……
)。
Lukas总结他们在三天里得到的教训:
编写可伸缩的代码然后随着负载增长慢慢地提高,这是一回事;像我们这样在一两天里疯狂地重新架构一个工作中的网站则是截然不同的另一回事。我想现在网站已经是互联网上能排得上号的了,应该不会再有更大规模的流量突然上升……不过如果再发生这样的事情,我已经在这次经历中学到了一些教训:
(1)做好网站的监测。在此之前已经让异常处理程序发送邮件给我们,但异常很多,所以我并不会认真看,而且事情发生的时候我不在线。预先就为这种负载来伸缩网站显然是不合理的,但我们错在不该依靠好心人查出Chris的邮件地址和家庭电话去告诉他……
(2)不要畏惧放上一个错误页面。当我们放上一个页面说明网站挂了并解释原因之后,收到了很多兴高采烈的用户来信。而当我们的网站勉强运行,不但延迟严重还断断续续地死机的时候,我们收到了很多愤怒的用户来信。不切实际的想法让我们在网站真正准备好之前一两个小时就把它上了线。
(3)静态生成的首页是件好东西,memcached是件了不起的东西。
Brendan O'Connor在一篇后续文章中谈到了FaceStat应用背后的技术:
查看英文原文:Need to Scale Fast? Just Re-Architect it!是的,我们基本上是用Rails。我们实际上用的从Rails衍生出来的Merb,它的效率更高一些,底下用的是Thin。我们发现Rails类的平台对于快速打造新网站的原型真是无价之宝。特别是我们启动FaceStat的时候完全是当作一个实验品,根本不清楚人们会不会喜欢,而且最初的功能设想和后来实际的情形差别很大。Chris这个Ruby专家对于我们的团队也是无价之宝:)。
不过,与整体的架构相比,高层的平台实在不算什么:我们如何使用数据库(postgres)、如何缓存(memcached/merb-cache)、如何分摊负载、如何部署新系统(xen/slicehost),这些才是真正有影响的架构议题。FaceStat是写操作密集的、要执行的统计计算也相当复杂,种种问题都不可小视。但现在我们所服务的用户比原先的负载提高了将近100倍,也就是说我们干得还算不错——至少现在!
译者 郭晓刚 是InfoQ中文站架构社区编辑,创建并终结过数家软件小企业,翻译过多本技术书籍。
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
论道WP第三篇专栏,以应用程序栏的使用为中心,包括了软键盘带来的问题、应用程序栏介绍、如何绑定应用程序栏的属性等几个方面的具体话题,为开发者顺利使用应用程序栏开发提供了具体指导。
在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中对于锁的性能优化,以及锁的存储结构及升级过程。
本次分享将首先介绍现代富文本编辑器的组成和实现,然后结合UEditor的开发过程,与参会者分享UEditor在设计和实现的过程中,所涉及到的核心功能的细节实现。
本次演讲视频录制于百度技术沙龙。
我们所开发的应用程序大多都需要提供一个图形用户界面(GUI)。关于GUI应用的架构设计,已经有了Form & Control、MVC,、MVP、 Passive View等多种模式。模式可以帮助我们建立优雅的架构,但前提是弄清楚模式的应用场景。弄清楚GUI应用面临的设计上的问题,有助于我们正确的挑选设计方案。
MongoDB是一种非常易用的NoSQL方案,Brian C. Dilley在这篇文章里介绍了MongoDB的优劣势,并介绍了MJORM项目。MJORM用于MongoDB,是一个没有注解的Java ORM库。
随着网络基础设施的逐步成熟,从RPC进化到Web Service,并在业界开始普遍推行SOA,再到后来的RESTful平台以及云计算中的PaaS与SaaS概念的推广,分布式架构在企业应用中开始呈现出不同的风貌,然而殊途同归,这些分布式架构的目标仍然是希望回到建造巴别塔的时代,系统之间的交流不再为不同语言与平台的隔阂而产生障碍。
没有回复
关注此讨论 回复