web2.0架构师的能力
1. 熟知你的业务模式和目标人群
架构师从某种程度上讲也是也是产品经理。
2. 了解负载均衡策略实现
(1)发展初期,适当的考虑数据库分拆和按照业务进行域名分拆就足够了。
(2)中等规模的情况下,可能需要适当的采纳迎驾或者软件Load-Balancer,在这种场景中:
Web层面的负载均衡可以通过F5/NetWare等硬件来实现。选择Apache或者更加专业的负载均衡软件也是未尝不可。 比如Windows下的NLB和Linux下的LVS。
应用层面,适当的调整,至少不能够随信所欲的使用Session变量(其实也未必完全不可用)。而一旦采用了缓存(例如MemCached),如果考虑不周全,本来单机环境下好好的程序就会变得乱七八糟,本质上无非是数据不同步的问题。
总之,作为Web Arch.必须了解负载均衡策略的不同实现。
3. 设计“合理”的存储
不可能把素有的东西存储在一个关系数据库中。
传统的存储分为SAN、NAS、DAS。 随着技术发展,边界已经越来越模糊。 不同的预算与需求采用不同的方案。当然,也可能有人热衷通过相对廉价的设备构建诸如GFS那样的存储架构。
初期,不需要太多精力考虑,只要大致测算出一台服务器的容纳能力,然后估算出在到达容纳能力上限的一般左右,就需要考虑升级了。
4. 异构平台的整合能力
主流的3个平台,.NET/Java/LAMP,还有,Phyton,ror....等等。企业应用角度,应该尽可能避免异构,但Web架构师来说,并非如此。
比如,你的大多数应用是.NET写的,但是你需要提供一个论坛,你采用了DiscuZ,就需要对PHP了解,否则连统一登录的问题都没有办法解决。
作者的看法:一个好的架构师最好能同时熟悉两种操作系统,两个以上的开发语言。一个方面是现实世界的业务复杂度,一个方面是既然会存在不同的平台,
那必定有其合理性。也就是:一个好的架构师应该有异构平台的处理能力的。
5. 设计更好的交互
(原文如此,我理解作者的意思是:更广的技术视角、更好的技术选型能力) 例如Ajax等,并非让架构师去对细节技术了如指掌,但是需要架构师清楚优缺点,并技术选型(原文:规定应该用什么,怎么用,那些不可用)。
6. 性能和故障诊断