网站架构师的工作内容(一个新手面试Linux运维工作至少需要知道哪些知识?(一))
优采云 发布时间: 2022-02-05 09:18网站架构师的工作内容(一个新手面试Linux运维工作至少需要知道哪些知识?(一))
对于一个Linux运维工作,新手至少需要了解哪些知识?
一、什么是大网站操作?
首先明确一下,全文中所说的“运维”是指:*敏*感*词*网站运维,与其他运维有很大区别;@>进行范围定义,主要从运维复杂度的角度考虑,比如网站规格、流行度、服务器量级、PV量等,其他因素不是重点;
所以,我们首先定义服务器规模大于1000台,PV至少每天上亿(至少国内前10),比如新浪、百度、QQ等;
其他小网站可能没有真正的运维工程师,这与网站规格和成本因素的缺乏有关,更多的是一个集网络、系统、开发工作于一体的“复合型人才”,例如,有的企业将一些合同采购纳入运维职责范围,IDC网络规划也将运维职责纳入其中。因此,理解运维必须非常熟悉其他相关的工作类型:网络、系统、系统开发、存储、安全、DB等,这点很重要。我这里说的运维工程师是指专职运维工程师。
先说一下通用产品的“诞生”过程:
1、首先公司管理层给出指导思想,PM定位市场需求(或复制成熟应用)进行研究、分析,最后给出详细设计。
2、架构师根据产品设计的需要,如PV大小估算、服务器规模、应用架构等因素完成网络规划、架构设计等(基本上网络变化不大,除了大型项目)
3、开发工程师将实现设计代码,测试工程师将测试应用程序。
4、好了,运维工程师的时间到了。首先,并不是说前三步与运维工作无关。相反,前三个步骤与运维有很大关系:应用程序的初步架构设计、软/硬件资源评估、应用程序采购、应用程序设计性能和评估的隐患, IDC、*敏*感*词*能安全调优、服务器系统级优化(具体应用相关)等都需要全员参与运维,主导整个应用上线项目;运维工程师负责产品服务器的准备、服务器系统的安装、网络、IP、通用工具集安装。运维工程师还需要对在线应用系统架构是否合理、是否具有可扩展性、安全风险等因素负责,并负责产品(程序)、网络、网络的最终拼接和优化组合。和系统。,最后完成产品上线供用户使用,反复使用:需求->开发(升级)->测试->上线(性能、安全问题等,之前估计问题会逐渐出来)这里提一下. 一点:网站开发模式与传统软件开发完全不同。网站每天开发和推出1~5个升级版本是很常见的。用户体验为王。如果一个线上的问题,比如 M$ 需要一年解决问题,用户就会提前用完;应用上线后,运维工作才刚刚开始,具体工作可能包括:升级版本上线工作、服务监控、应用状态统计、日常服务状态检查、突发故障处理、日常服务变更等。随着应用PV的增减,调整、集群管理、*敏*感*词*能评估优化、数据库管理优化、应用架构扩展、安全、运维开发:应用状态统计、日常服务状态检查、突发故障处理、日常服务变化。随着应用PV的增减,调整、集群管理、*敏*感*词*能评估优化、数据库管理优化、应用架构扩展、安全、运维开发:应用状态统计、日常服务状态检查、突发故障处理、日常服务变化。随着应用PV的增减,调整、集群管理、*敏*感*词*能评估优化、数据库管理优化、应用架构扩展、安全、运维开发:
一个。尽量通过工具(如服务监控、应用状态统计、服务上线等)来实现日常的机械手工工作,提高效率。
湾。解决现实服务中存在的高可靠性和可扩展性等问题。
C。开发大型集群管理工具
例如,10000 台机器如何在 1 分钟内完成密码更改或运行指定任务?如何在2000台服务器上快速安装操作系统?如何在每个分布式IDC和存储集群中快速存储、共享和分析PB级别的数据?一系列的挑战需要运维工程师的努力。
以下是其他合作类型的说明。在整个项目中,前端应用程序是网络/系统工程师的黑匣子。同时,开发工程师只负责完成应用程序的功能开发,以及应用程序本身的性能和安全性。负责,不负责或不关心网络/系统架构问题。当然,软硬件采购人员等业务部门的其他同事不会关心这些问题。他们各司其职,但项目的核心是运维工程师~!与所有其他部门的桥梁。
上面说了很多。我想大家应该对运维有一些概念。我们在这里打个比方。如果我们是一辆在高速公路上高速行驶的汽车,那么运维工程师就是司机和维修工。司机并不简单,有时高速行驶时需要更换轮胎,还要根据路况更换档位。当汽车的速度越来越快时,汽车本身不能满足高速,调整汽车性能或升级零件,汽车在高速行驶。故障和性能问题,时刻关注前方的安全问题,并采取预防措施避免它们。这是运维工作~!
最后说说运维工程师的职责:“保证在线稳定”,看似简单,实则不易。运维工程师必须平衡许多不利因素:新产品模型对现有架构和技术的影响、产品频繁升级导致的在线bug、运维自动化管理低导致的人为错误、由于流程执行不足导致对于IT行业所追求的高效率,以及用户增加带来的性能和架构压力、IT行业技术管理文化松散、创新风险、互联网安全问题等因素,都将成为大敌< @网站 稳定性。运维工程师必须控制好这最后一道关卡,并且需要高度的责任感。,原则和协调能力,如果你能达到各种因素的最佳平衡,你将是一个优秀的运维工程师。
另外,我在这里谈一点题外话。我看到这里很多人都想谈谈自己的运维经验,比如新浪、QQ、百度等。其实这对他们来说有点难:
一个。每个公司自己的网络架构和规模,或多或少都是公司的核心机密,应该保密。此外,对于众所周知的通用软件和架构,很多公司会因为原创版本的性能而满足自己的实际业务需求。、安全、已知bug、功能等原因,都进行了二次开发(如apache、php、mysql),操作系统内核也会根据不同的业务类型进行定制,比如有些应用是计算型的,有些是High IO类型,或者大存储大内存类型。根据这些特点进行内核优化和定制。比如新浪对memcache进行了二次开发,搞出了一个MemcacheDB。我们不会谈论它是如何完成的,但值得称道的是它是开源的。国内公司基本都是开源的。请求,没有贡献;另外,服务器不是知名机型,根据业务特点,多为DELL/HP/ibm定制;另外,他们对于分布式存储都有自己的解决方案,要不然就是使用hadoop等现成的开源解决方案,或者自己开发。但是90%都是借鉴google GFS的思想:分布式存储、计算、大表。要不就是使用hadoop等现成的开源解决方案,或者自己开发。但是90%都是借鉴google GFS的思想:分布式存储、计算、大表。要不就是使用hadoop等现成的开源解决方案,或者自己开发。但是90%都是借鉴google GFS的思想:分布式存储、计算、大表。
湾。每个公司的业务方向不同,会导致不同的运维模式或方式。比如百度的运维肯定是很不一样的,因为他们的业务模式决定了他们的架构、服务器级别、IDC分布、网络结构,一般的技术都会不一样。主新闻门户新浪和主SNS的运维模式有很大不同,甚至职责也不一样;但有一点,通用技术和通用架构是相似的,大家不要太神化,更多的公司只是在玩没有任何技术含量的积木游戏。
C。如上所述,*敏*感*词*网站运维的概念和经验还处于起步阶段。从来没想过,真正的讨论只是运维工作的冰山一角,仅限于具体的技术细节,还是大名鼎鼎的某某的网站框架,没有真正的运维系统维护,这可能与当前在线运维数据不足的原因有关。或者说这也是国内运维人员比较难招,比较好的运维工程师少的原因之一。
运营商需要哪些技能和素质
成为运维工程师需要具备什么样的技能和素质?先来说说技能吧。如上所见,运维是一个综合了多种IT技能和技能的职位。对于system->network->Storage->Protocol->Requirements->Development->Testing->Security等环节需要了解,但有些环节需要熟悉甚至精通,比如systems(熟悉基本的使用操作系统、*nix、windows..)、协议、系统开发(日常重要的工作是自动化运维的开发、大型集群工具的开发和管理)、通用应用(如lvs、ha、 web server、db、middleware、storage等)、网络、IDC拓扑架构;
技能总结如下:
1、开发能力,这个很重要,因为运维工具需要自己开发,开发语言:perl、python、php(其中一)、shell(awk、sed、expect. ... etc.) ,你需要有实际项目开发的经验,否则工作会很痛苦。
2、一般应用需要知道:操作系统(国内主要是linux、bsd)、webserver相关(nginx、apahe、php、lighttpd、java...)、数据库(mysql、oralce)、其他杂七巴拉的东西; 系统优化,可靠性高;这些只是加分项,不是必须的,你可以边工作边慢慢学习,这些东西并不难。当然,在运维方面,有的优先级不同。
3、系统、网络、安全、存储、CDN、DB等需要很好的理解和相关的原理。
个人素质:
1、沟通能力和团队合作:运维工作中有很多跨部门、跨岗位的工作,需要良好的沟通能力和较强的团队合作能力;这应该是现代企业的基本素质要求,不多说。
2、在工作中要敢于用心:勇于创新,不走寻常路,尤其是运维等新型工作,更需要创新促发展;小心,运维工程师是网站admin,最高在线权限的人,一不小心,你会后悔一辈子,或者进入十八层地狱。
3、 主动性、执行力、活力、抗压能力强:由于IT行业的特点,变化快;往往计划跟不上变化,运维工作更加突出。比如国内大公司的服务器往往分布在全国各地,便宜又划算的地方,搬到那里进行*敏*感*词*的服务迁移(涉及成百上千台服务器),非常头疼;往往时间很紧,比如一周内完成,这种问题在这种情况下,运维工程师的主动性和执行力都有很高的要求:计划、解决方案、无缝服务迁移、机器搬迁、环境准备、安全评估, 绩效评估,
4、其他是一些基本素质:头脑聪明,逻辑思维能力强,谦虚稳重,有亲和力,乐于助人,有大局观。
5、最后,做网站运维需要有探索创新的精神,通过创新思维解决现实问题,因为这是一个处于起步阶段的职业(国外也是这样,但比中国起步早),没有成熟的体系或方法可以借鉴,大家只能靠自己的探索和努力。
成为一名合格的运维工程师意味着什么?
1、确保服务符合要求的上线标准,比如99.9%;保证在线稳定是运维工程师的基本职责。
2、不断提高应用的可靠性和健壮性,优化性能,提高安全性;这是对主动性和创新思维的考验。
3、网站各级监控统计的覆盖范围,软件、硬件、运行状态,能监控的都需要监控和统计,避免监控盲区,能够做到实时了解应用程序的运行情况。
4、通过创新思维解决运维效率问题;目前,各家企业的运维工作大部分仍依赖人工操作干预,需要尽可能地解放双手。
5、运维知识的积累和沉淀以及文档的完整性,运维是一个非常有经验的岗位,需要积累好的经验和陷阱,避免重复犯错。
6、计划和执行;工作有计划,计划之后,想法是不找借口,努力实现目标。
7、自动化运维;能将日常机械化工作细化、设计、开发成工具和系统,并尽可能依靠系统自动完成;让每个人都花更多的时间在思考、创新思维、做自己喜欢的事情上。
以上只是技术方面的一部分,当然个人意识也很重要。
四大运维行业的困惑、现状与发展前景
不同于其他岗位,如研发工程师、测试工程师等,运维岗位职责和职业规划非常明确,有职业认同感和成就感;而运维工作可能会给人一种什么都懂的感觉。,但他们比全职工程师更熟练,而且他们觉得他们通常受到的关注较少(除非线路出现故障)。慢慢的大家都会对职业发展感到迷茫和迷茫。为什么会这样?除了专业本身的特点外,主要是对运维缺乏深入的了解和表现造成的;其实这个问题也可以出现在其他位置,
针对这个问题,说一下网站运维的现状和发展前景(我也在思考,可能不够深入全面,请直接补充)
运维状态
1、在刚起步的初期,各大公司都有这个全职工作,但重点或重要性不高,可替代性强;小公司更有可能由其他职位来照顾这项工作,而且没有全职工作。也无法深入。
2、技术水平比较低;主要处于技术探索和积累阶段,没有系统的概念或技术。
3、体力劳动量太大;这个问题主要和第二点有关。很多事情还是靠人力进行的,训练还没有完成。*敏*感*词*集群没有成熟的自动化管理方法。*敏*感*词*集群与运维工作密切相关。如果只有一百台或十台机器,运维空间不大。
4、优秀的运维人才极度缺乏;目前各大公司基本都是靠自己的培训。这种情况导致了行业内运维人才的流动性非常低,很多好的技术仅限于大公司。比如谷歌50万台机器的科学管理,或者国内10大互联网公司的一些运维经验。这些经验非常宝贵,决定了一个公司的核心竞争力;这些问题反过来又催生了行业内先进的运维技术。流通、连接、借签,最终会限制运维的发展。
5、很多优秀的运维经验掌握在大公司手中;不是公司的技术实力,而是大公司的技术规模、海量PV、硬件规模,比如百度可怕的流量和海量数据。~~~~ 这些因素决定了他们遇到的问题是其他中小公司还没有遇到,或者即将遇到的问题。但是大公司可能已经有了很好的解决方案或系统。
前景
1、从行业角度看,随着中国互联网的快速发展(目前中国网民已经跃居世界第一一),网站规模更大,结构更复杂);要求对于专职的网站运维工程师和网站架构师来说会越来越迫切,尤其是对于经验丰富的优秀运维人才,年龄越大越有价值;基本上选择毕业生进行培训(仅限于大公司),培训成本高,加上缺乏经验的人才会导致公司技术更新慢,影响公司技术发展;当然,毕业生也有好处:一张白纸,可塑性强,
2、从个人来看,运维工程师的技术含量和要求会越来越高。同时,他们也是最熟悉公司应用和架构的人,他们会受到越来越多的关注。
3、网站运维将成为一个综合多学科(网络、系统、开发、安全、应用架构、存储等)的综合性技术岗位,为大家提供良好的个人能力和技术广阔的发展空间。
4、运维工作的相关经验将变得非常重要,也将成为个人的核心竞争力,具备良好的各级解决问题、提供解决方案、放眼全球的能力。
5、优势和兴趣的培养;由于运维岗位所接触的知识面很广,更容易培养或发展某些个人特长或爱好,比如内核、网络、开发、数据库等,可以做得很好,成为专家。
6、如果以后实在不想做运维,转其他岗位比较容易,不会有太多限制。当然,你必须真正投入其中。
7、技术发展方向:网站/系统架构师。
运维关键技术点剖析
1、 *敏*感*词*集群管理问题
首先,我们需要明确集群的概念。集群一般不是指各种功能服务器的总和,而是指服务器和硬盘资源(两台以上机器)的整合,以达到一定的目的或功能。它是一个整体。目前常规集群可以分为:高可用集群(HA)、负载均衡集群(如lvs)、分布式存储、计算存储集群(DFS,如google gfs、yahoo hadoop)、特定应用集群(某某具有特定功能的服务器组合,如db、缓存层等,目前互联网行业主要以这四种为主;对于前两种,如果业务比较简单,对应用的后期操作比较多小的,实现高服务可用性/责任平衡的作用。对于资源有限的公司,也有一些开源方案如lvs+ha,非常灵活;对于后两者,将考验公司的技术实力和应用特点。,第三个DFS主要用于海量数据应用,比如邮件、搜索等应用,尤其是搜索要求更高,除了简单的海量存储,还有数据挖掘、用户行为分析;比如google、yahoo可以保存将近一年的Analyze用户记录数据,而baidu应该不到30天,soguo少……这些对于搜索准备和用户体验都至关重要。实现高服务可用性/责任平衡的作用。对于资源有限的公司,也有一些开源方案如lvs+ha,非常灵活;对于后两者,将考验公司的技术实力和应用特点。,第三个DFS主要用于海量数据应用,比如邮件、搜索等应用,尤其是搜索要求更高,除了简单的海量存储,还有数据挖掘、用户行为分析;比如google、yahoo可以保存将近一年的Analyze用户记录数据,而baidu应该不到30天,soguo少……这些对于搜索准备和用户体验都至关重要。还有一些开源的方案,比如lvs+ha,非常灵活;对于后两者,将考验公司的技术实力和应用特点。,第三个DFS主要用于海量数据应用,比如邮件、搜索等应用,尤其是搜索要求更高,除了简单的海量存储,还有数据挖掘、用户行为分析;比如google、yahoo可以保存将近一年的Analyze用户记录数据,而baidu应该不到30天,soguo少……这些对于搜索准备和用户体验都至关重要。还有一些开源的方案,比如lvs+ha,非常灵活;对于后两者,将考验公司的技术实力和应用特点。,第三个DFS主要用于海量数据应用,比如邮件、搜索等应用,尤其是搜索要求更高,除了简单的海量存储,还有数据挖掘、用户行为分析;比如google、yahoo可以保存将近一年的Analyze用户记录数据,而baidu应该不到30天,soguo少……这些对于搜索准备和用户体验都至关重要。尤其是搜索要求更高,除了简单的海量存储,还要进行数据挖掘、用户行为分析;比如google、yahoo可以保存将近一年的Analyze用户记录数据,而baidu应该不到30天,soguo少……这些对于搜索准备和用户体验都至关重要。尤其是搜索要求更高,除了简单的海量存储,还要进行数据挖掘、用户行为分析;比如google、yahoo可以保存将近一年的Analyze用户记录数据,而baidu应该不到30天,soguo少……这些对于搜索准备和用户体验都至关重要。
接下来,我们来谈谈如何科学地管理集群。有以下几个关键点:
一个。监视
主要包括故障监控和性能、流量、负载等状态监控。这些监控关系到集群的健康运行,以及潜在问题的及时发现和干预;
湾。服务故障和状态监控:主要是对服务器本身、上层应用、关联服务数据的交互监控;比如对于前端web服务器,我们可以有很多种监控,包括应用端口状态监控,方便及时发现服务器或者应用本身是否崩溃,通过icmp包检测服务器健康状态,上层还可以包括对应用的各个通道的服务的监控。常用的方法是使用人脸行业特征码进行判断,或者对关键页进行签名,进行网站黑篡改(报警,并自动恢复被篡改数据)等,这些只是其中的一部分。有N多种监控方式,根据应用特点,
C。其他是集群状态的监控或统计,为我们合理管理和调优集群提供数据参考,包括服务瓶颈、性能问题、流量异常、攻击等问题。
2、故障管理
一个。硬件故障问题;对于成百上千台机器的多集群,服务器崩溃和硬件故障的概率非常高,几乎每时每刻都存在服务硬件问题,如崩溃、硬盘损坏、电源、内存、交换机等。针对这种情况,我们在设计网站的架构时需要充分考虑这些问题,并将其作为规范;更多地依靠应用程序的冗余机制来规避这种风险,但要给系统工程师足够的处理时间。(如果google声称800台机器同时死机,服务不会受到任何影响);这是测试运维工程师和 网站 架构师的功能的地方。一个好的设计可以实现google描述的自恢复能力,比如gfs,
湾。应用失败问题;可能是bug被触发,或者超过了某个性能阈值,攻击等等,但重要的是对这些问题要有预防措施,不要想当然。不会有问题,如果有问题,怎么处理?这需要运维工程师做大量的工作,包括应急响应速度、科学的故障处理、备份方案的有效性等。
3、自动化
自动化:简而言之,就是通过工具和系统自动完成我们日常的一些体力劳动,解放我们的双手和枯燥的重复劳动。比如在没有工具之前,我们需要安装一台裸机。安装,比如2000台,可能需要10人/10天,销毁N盘,人工成本更大。. . 现在,通过自动化工具,只需几个简单的命令就可以完成,而且还有类似机器人的程序,自动完成过去每天人工干预的工作,从而自动完成并报告结果,并且具备一定的专家系统能力,可以做一些简单的yes/no判断、优化选择等。. 这些好处是显而易见的,不用多说。. . 应该说,自动化运维是运维工程师的专业追求,造福大众,造福大众,虽然这是一项极其艰巨的任务:不断变化的业务、非标准的应用设计、开发模式、网络架构变更、IDC变更、规范变更等因素可能会对现有自动化系统产生影响,因此需要模块化、接口化、可变因素参数化等。因此,自动化相关工作是运维工程师的核心重点工作之一,也是很有价值的。反映。非标准的应用设计、开发模式、网络架构变化、IDC变化、规范变化等因素可能会对现有自动化系统产生影响,因此需要模块化、接口化、可变因素参数化等。因此,自动化相关工作是运维工程师的核心重点工作之一,也是很有价值的。反映。非标准的应用设计、开发模式、网络架构变化、IDC变化、规范变化等因素可能会对现有自动化系统产生影响,因此需要模块化、接口化、可变因素参数化等。因此,自动化相关工作是运维工程师的核心重点工作之一,也是很有价值的。反映。