时间: 2011-10-15 / 分类: WEB后端编程 - 开发与实践 / 浏览次数: / 0 个评论 发表评论
一个优秀的网站系统架构师是怎样炼成的?
项目前端开发的架构
12条经典摄影技巧
CSS Hack浏览器兼容IE6+IE7+IE8+IE9+FF
WEB前端开发中的一些编程风格和书...

一个具有一定知名度的网站,面对的问题无非是:稳定的性能、海量访问、海量数据。

优秀的Website Architecture应该良好的解决上述问题,那么应该熟悉或了解下面的技术:

开发语言架构:应该至少熟悉一种web开发语言,包括java、web、python、ror等,然后采用比较稳健的、成熟的开发语言架构
单点登陆,自建session server,类似discuz的passport的方案

目前常用的是cas sso解决方案
web服务器集群:
负载均衡:软件比如keepalived,ultramokey.硬件如四层交换机;
web服务器集群方案:常用lvs
web服务器选型:apache、Nginx、lighttpd

其他服务器-如java 应用服务器的集群部署;
利用缓存:
页面静态化规则,页面缓存;缓存软件:squid,oscache,等
常用数据缓存解决方案,缓存数据命中率

如果采用ORM,考虑采用二级缓存
ajax:避免页面全局刷新,提高用户体验;合理使用,避免泛滥。
数据库
集群数据库
如果数据库采用mysql,那么一般是master-slave,对master进行写入或更新数据,对slave进行数据的查询。如果使用hibernate那么,使用native sql太动态绑定不同的数据库表。复杂一些可以研究一下Hibernate Shards,这是google捐献给hibernate的项目的。

oracle数据库集群,可以采用磁盘阵列方式,oracle部署在几个服务器上,表和数据文件放在磁盘阵列上
做好备份策略,分清不同数据的生命周期。根据不同的生命周期,做好数据的归档/转存的工作

商业数据存储首选大型商业数据库,其他数据可以用mysql等开源数据库。
搜索引擎:
常用的技术选型是lucene ,另外有ferret,Sphinx。
分布式存储和分布式查询

中文分词
网络蜘蛛:
知道如何抓取别人网站的网页

懂得如何屏蔽未知或部分蜘蛛访问你的网站
seo
关注互联网业内的情况
facebook的f8是啥回事
google的产品和api,了解Google Maps API、OpenSocial API、Google Apps等等
找到sns,blog,wiki等web2.0的技术表现形式
guice、google toolkit、Android
关注新冒出来一些网站的情况
研究和分析知名网站的架构
跟踪一些知名技术专家的文章或blog

适当的参加一些技术或互联网聚会和话题讨论
了解比较新的一些技术概念,如soa、esb、云计算、MapReduce、BigTable、Google

 

转一个招聘需求和解决方案:

最近部门里面要为一个外包的项目招聘一个架构师,客户直接要求希望这个架构师有10年以上经验;4年以上的C#实际开发经验;良好的英语书写和口语;优秀的沟通技巧和团队合作精神。那么该如何准备面试这样一个架构师呢?我本人的开发经验有5年左右,担任Team Leader有2年左右时间,斗胆以此浅薄的经历来谈一谈来面试这个架构师的想法。

最好的面试思路即以JD的要求为主,然后再增加其他方面的面试点。这样,我们针对每一条要求提一些问题,并对每个问题进行一些必要的展开和讨论。

一,良好的英语书面和口语。

书面英语,可以要求候选者详细写一个开发过的项目或者模块的介绍,可以要求字数范围在200-300以内,大概10-15句话。

英语口语,则需要面试者用英语和候选者进行对话,比较参见的是从英文的自我介绍开始,然后随机提一些问题测试候选者的表达能力。把英语当做面试的第一个问题基于两点考虑。a)项目需要英语能力,包括书面和口语。但是口语的要求可以比书面低一些。b)很多人的英语都不太好,因为此把这个条件当做第一个可以节省很多时间。

二,10年以上开发经验,4年以上C#经验。

这个要求最重要的是考察技术,考察的方面依次为:基础知识,如数组和链表的区别,堆和栈的区别等,冒泡排序,二分法查找等。这些基础的信息可以考察后选择是否还从事实际的开发工作,以及基础知识是否踏实。然后是设计类的一些题目,例如面对对象的几个基本原则,Gof的一些设计原型和最佳的应用场景等。最后考察的是高级设计,例如详细解释MVC框架的优点和缺点,SOA,或者对某些参见类库的高级分析;比较参见的是让架构师详细讲解他以前设计过的一个系统,以及该设计中的难点,最后是怎么解决的,解决之后是否有一些新的认识,是否有更好的解决方式。

三,优秀的沟通技巧和团队合作。

如果在第一个中有要求候选者详细介绍他以前做过的某一个系统,那么则可以看到候选者在表述的系统时,是否条理清晰,逻辑合理。是否有系统性,是否由大到小,由概念到细节。在系统的介绍中可以做一些提问,以此考察对系统的理解程度和水平。对于团队合作方面,可以问一些常见的问题,例如某某不服从工作安排怎么办?他不遵守代码规范怎么办?可以让候选者详细地回答这些问题。

四,考察是否具备优秀的项目开发管理和控制,在具体问题上可以包括。

1. 是否经常使用源代码管理工具,在管理时的最佳实践是什么?

2. 是否使用daily build过程,该过程是否自动完成?

3. 是否采用TDD开发,以及如何有效地进行白盒测试?

4. 对代码规范的认知态度。越是高层次的程序员,代码规范越是严谨。

5. 是否编写过工具为自己或团队服务。

等等,越是能力高的架构师,对项目越是有苛刻的要求。只要要求严格,才能制造出质量可靠的软件。

      站点地图 | 关于我 | 返回顶部
    Copyright © 2001-2013 { amiku.cn | zhangshunjin.com }. Powered by 

    阿米酷

    张顺金


    浙ICP备11002820号-1