艾巴生活网

您现在的位置是:主页>科技 >内容

科技

web架构师需要掌握哪些知识(Web架构师应该具备哪些能力)

2023-12-09 09:17:02科技帅气的蚂蚁
最近和几个朋友聊到现在流行的Web 2 0,提到了最重要的角色,——架构师。多方有争议,都是因为专业背景和视角。单词建筑本身就是借鉴建筑

web架构师需要掌握哪些知识(Web架构师应该具备哪些能力)

最近和几个朋友聊到现在流行的Web 2.0,提到了最重要的角色,——架构师。多方有争议,都是因为专业背景和视角。单词建筑本身就是借鉴建筑。至于建筑师,可以简单的从建筑的建筑师引申出来,无非就是设计结构,设计建筑的结构。回到软件本身,可以简单理解为负责设计软件框架的人。

我们没有讨论不清楚架构师、软件架构师、系统架构师和他们的Web架构师这些看似相同但不同的角色之间的关键区别,我们的观点不同,我们可以一时半会儿说不清楚。最后,我们讨论了作为一个Web 2.0网站架构师需要具备的一些基础知识和能力(个人观点难免有失偏颇):

1.熟悉你的商业模式和目标群体。

这才是最重要的。Web 2.0本质上是基于Web的应用。如果你不it it并不真正了解你的业务、用户的核心需求和目标客户的典型行为。制作一个好的网站很难。从这个角度来说,一个Web架构师首先必须是一个优秀的产品经理。很多时候,我们在业务技术上领先就够了,但是一味的追求技术的先进会陷入泥潭。

找到技术和商业的平衡点,就是要知道整个商业的核心竞争力在哪里。目标群体的基本诉求在哪里?然后选择成本最低的技术实现业务需求,但反过来也要适当预留适当的业务拓展空间。

举个例子,如果是照片分享的应用,你可以把注册程序写的很差(但是可以不要坏到可以不被感动),而且可以让帮助系统看起来不那么好看。但是上传照片和浏览照片一定不能慢。数据库可以设计得不那么好,但是存储问题一定要慎重。一万多张照片下来,网站速度肯定没牛.

只有真正明白自己要做什么,技术才能变得可爱。

2.了解负载平衡策略的实施

无论是什么样的Web2.0或业务,你都要做一个关键的假设:你的流量一定会上升,单机可以无法满足您业务发展的需要。我相信这个假设是合理的。没有一家Web 2.0公司相信他们能用一台机器改变世界。

不要求一开始就设计一个理想的负载均衡策略,这有点太雨天,但是作为一个Web架构师,一定要给自己留一些分隔的空间。因此,有必要正确理解不同级别的负载平衡策略的实现。

一般来说,在小规模开发初期,根据业务适当考虑数据库拆分和域名拆分就足够了。在中等规模的情况下,可能需要适当地采用硬件或软件负载平衡器。在这种情况下,您可以通过使用F5/NetWare等硬件来帮助您实现Web级别的负载平衡。当然,选择Apache或者更专业的负载均衡软件也未尝不可,比如Windows下的NLB,Linux下的LVS。为了实现负载平衡,还需要在应用服务器级别进行一些适当的调整。至少目前,你可以不要随意使用会话变量(事实上,它it’并不是完全没有。一旦你采用了缓存(Web 2.0,谁不呢不知道MemCached?),如果你不如果你想得不够仔细,单机环境下原本很好的应用程序最终会变得一团糟。本质上,它无非就是数据异步的问题。事实上,如果你反过来想,你我把流量和压力分解了,数据是独立的。没有问题是没有道理的。

不管怎么说,作为一个Web架构师,你必须了解负载均衡策略的不同实现,更重要的是负载均衡后可能导致的问题和关键点。你对此一无所知,你可以不要当着你的面证明它是正当的。

3.设计合理储存;储备

没有人计划将所有东西都存储在关系数据库中,也没有人能说Web 2.0网站可以用关系数据库解决问题。如果Web 2.0是以用户为中心,也可以说用户数据是核心价值,应用的核心驱动力是数据。没有办法讨论是否使用关系数据库。很多事情都是要找到平衡的,一合理平衡。

传统存储可分为SAN、NAS和DAS。但是,随着技术的发展,两者之间的界限越来越模糊,甚至可以让你忘记差异。你可以盯着口袋里的钱,大致了解自己能做多少钱。但你还是需要做出选择。对于Web应用,大多是PC服务器,或者很多人热衷于通过相对便宜的设备搭建GFS等存储架构。

许多人认为Web 2.0最关键的是业务,而能用钱解决的问题不是问题。这种说法是正确的。如果在早期阶段为未来5-10年设计架构,架构师 远见将来肯定会成为笑柄,但反过来,不考虑任何数据分布的可能性,这样的短视最终会弄巧成拙。

看实际情况,建筑师应该如何面对?在创业阶段,简单直接的关系数据库就可以了。你不不需要花太多精力去想它。只是粗略的算一个服务器的容量,然后估计一下达到容量上限的一半左右还要折腾多少时间。那所有,这够了。简单来说,粗鲁一点,一个文件服务器,一个数据库服务器,只要你不不要犯愚蠢的错误,比如文件只有一个目录,完全分不开,数据库只有一个表,再加上逻辑太多等等。既然没有一,随它去吧。但是当业务达到一定规模,比如10万用户,就不可能忽视你的存储。这个时候我们会发现很多性能问题都是因为不合理的存储问题造成的。此时,存储设计更关注性能。然而,当它发展到更大的规模时,存储的可管理性和成本逐渐成为关键问题。

对于建筑师来说,不同时期选择不同的设计策略尤为重要。没有最好的,只有合理的架构,存储也是如此。

4、异构平台的集成能力

从企业应用的角度来说,绝对不赞成一个系统中有多个平台,这样会不必要地增加集成的成本。过去数据岛就是最好的证明。那么对于一个Web架构师来说,精通一个平台就足够了,还是能够在多个平台之间漂流更好呢?

让让我们重新定义平台。我简单理解为两个层面,一个是操作系统层面,一个是开发语言层面。当然,如果讨论起来,问题就大了。我们可以说框架、数据库、协议等等。但有一点必须肯定,操作系统是你业务软件水平的基础,而开发语言是实现你业务的工具。两者结合起来,有一些经典架构推荐。NET是Windows 2003/2008 SQL Server IIS 6.0,然后通过Visual Studio 2005/2008,依托微软,充分利用他们的服务。LAMP是Linux Apache MySql Php,J2EE Web架构普遍接受的是Hibernate Spring Struts。至于RoR和Python,这是一颗明星般的后起之秀。

它Web架构师仔细检查哪个平台更好或更差是愚蠢的。除了精通一个平台,这将使你在处理业务时得心应手,它最好同时熟悉另一个平台。虽然可以说时代变了,但都是XML,都是标准的REST调用,真的能保证吗?大多数应用程序都是由。你需要提供一个论坛。你用Discuz,你需要适当修改你的业务。虽然论坛本身的定制功能很强大,但是你要嵌入一个具体的业务,这样你就不会我对灯一无所知。这样,即使是统一登录的问题也能这个问题不容易解决。当然,你也可以为自己说,我不不需要它,因为有其他的选择,但它也是事实,你可以don’不要随心所欲地去做你的事情。

以我个人的理解,一个好的架构师最好同时熟悉两种操作系统和两种以上的开发语言。一方面是由于现实商业的复杂性;另一方面,既然会有不同的平台,那就必须合理。向他人学习长处可以帮助一个架构师在他的工作平台上更加理性和公正地看待问题本身。事实上看着。另一方面,NET、Java或PHP意味着互相学习的优点。

一个好的架构师应该有处理异构平台的能力。必须记住,网络本身是异构的。

5.设计更好的交互

说到交互,大多数人想到的是产品设计范畴的交互设计。Web 2.0强调以用户为中心,交互也是用户驱动的交互设计。但是我我这里说的更多的是一般意义上的Web前端设计,也可以称为表示层架构。

众所周知,Web 2.0非常重视交互,也正因为如此,大部分工程师花在前台交互的时间比花在后台数据处理的时间还要多。如今,AJAX和RIA很流行,Web架构师最重要的职责之一就是简化由高互动。

我们讨论AJAX,但我们不我不希望每个开发人员都操作XmlHttpRequest,我们也不希望如此。我不想让所有人都知道HTML DOM、JavaScript和CSS,然后将它们以令人眼花缭乱的方式结合起来。大家都知道让很多开发者吐血的不是后台代码调试,而是JavaScript和CSS,因为这需要无比的耐心和技巧。架构的责任是定义有效的规范和实现。

简单来说,开发者要弹出一个类似脸书的盒子,不让每个开发者都拼出来,然后绞尽脑汁兼容不同的浏览器、版本、页面。我需要从后台获取数据,需要每个开发者自己编写,需要一个隐藏的效果,需要每个开发者各显神通。

所以有人会说上面的问题可以用jQuery解决,有的开发者会采用这个类库,但有的会用Prototype或者ExtJs,架构师的职责是指定应该使用什么,如何使用,以及哪些是不可用的。

那么我可以简单的理解为交互架构师在这个层面的关键职责就是定义是否使用jQuery,不同的接口应该使用什么html,应该采用什么服务器接口技术,应该采用什么remoting框架。

定义这些交互技术的目标是以最简单的方式实现最好的交互,这是架构的责任。

5.性能和故障诊断

这个问题本来不应该包括在内,但是考虑到典型的Web 2.0是一个永恒的beta版本,换句话说,这个问题会一直存在,你可以不要一开始就做一份完美的申请。随着业务的增长,性能问题和系统故障是不可避免的。场景很常见:流量上去了,才发现整个网站变得异常缓慢,部分页面断断续续出现错误。什么此外,开发人员也重新检查了代码,但仍然没有没有找到任何低级错误。

一个好的架构师,这个时候应该能够辅助一些诊断和优化,在业务和技术判断的基础上,找出越来越复杂的系统中的核心问题。一般来说,应用系统的性能与SQL的水平有关。但是需要快速准确的判断哪些SQL有问题,影响有多大。

我我不赞成事后诸葛亮,但一个好的Web架构师还是应该能够洞察到性能带来的问题,并且还能提出有效的故障排除方案:是数据库、程序还是网络、操作系统还是硬件本身,还是两者都有?

性能和故障诊断涉及的层面太多了,包括操作系统、数据库、配置文件、程序代码,甚至与网络有关。每个方面都需要在一本书里解释清楚,这可能不够。但是作为一个建筑师,你必须去感受它。

这是我个人对Web 2.0架构师需要具备的素质的理解,但是我觉得还是有很多能力是需要的,比如沟通能力,抽象能力,平衡能力等等。希望大家能帮我补充一下。