导语:服务器的构成包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。那么,我们可以怎么选择好的服务器
怎么选择好的服务器你需要从不同的角度来决定选择一台什么样的服务器,找到满足技术需要、业务发展和成本控制之间的最佳平衡点,为了做到这一点,绝对还是需要一点智慧。51IDC将在下面为大家介绍一些易于理解,尽可能全面的建议,并帮助你做出决定。
先不要急于决定需要怎样的CPU,几个硬盘,几个G内存,需要多少兆带宽这样的问题,那些是我们最后需要得到的答案。在这之前,先一起梳理几个问题。在下面,我们列出了一些“多少”或“什么样”的问题,拿起你的笔或在Windows记事本里新建一个文件,尝试根据下面四个问题来评估自己的需求:
1服务器运行什么应用
2需要支持多少用户访问
3需要多大空间来存储数据
4我的业务有多重要
1:服务器运行什么应用这是首先需要考虑的问题,在这里你要根据服务器的应用类型,也就是用途,来决定服务器的性能、容量和可靠性需求。我们按照前端服务器+应用程序服务器+数据服务器的常见基础架构来讨论:
11Web前端:正常情况下,我们认为大多数Web前端服务器(Front-end)对服务器的要求不大,例如静态Web服务器、动态Web服务器、服务器等等,因为在现有的技术框架中,我们有很多方案可以解决前端服务器的性能扩展和可靠性问题,例如LVS、Nginx反向代理、硬件负载均衡(F5,A10,Radware)等。甚至在很多访问量不高(几百个用户同时在线)的应用中,51IDC的经典酷睿服务器就可以满足需求。
12应用服务器:由于承担了计算和功能实现,我们需要为基于Web架构的应用程序服务器(Application Server)选择足够快的服务器,另外应用程序服务器可能需要用大量的内存,尤其是基于Windows基础架构的Ruby,Python,Java服务器。这一类服务器至少需要使用单路至强的配置。对于可靠性的问题,如果你的架构中只有一台应用服务器,那肯定需要这台服务器足够可靠,RAID绝对是不能忽视的选项。但如果有两台或更多的应用服务器,并设计了负载均衡机制,具有冗余功能,那我们则不必将每台服务器武装到底。
13特殊的应用:除了作为Web架构中的应用程序服务器之外,如果你的服务器是用来处理流媒体视频编码、服务器虚拟化、媒体服务器(Asterisk之类),或者作为游戏服务器(逻辑、地图、聊天)运行,则同样对CPU和内存需求比较高,我们至少要考虑单路至强的服务器。其中服务器虚拟化对存储的可靠性的要求都非常高,因为一个篮子里有十几个鸡蛋,篮子一定要足够牢靠才是。
14公共服务:我们指的是邮件服务器、文件服务器、DNS服务器、域控服务器这类服务器。通常情况我们会部署两台DNS服务器作为互相备份,域控主服务器也会拥有一台备份服务器(专用的或非专用的),所以对于可靠性,无需达到苛刻的地步。至于邮件服务器,至少需要具备足够的硬件可靠性和容量大小,这主要是为了对邮件数据负责,因为很多用户没有保存和归档邮件数据的习惯,当他们重装系统后,总会依赖重新下载服务器上的数据。至于性能问题,我们认为需要评估用户数量才能决定。
15数据库:我们最后讨论的应用,也是要求最高,最重要的服务器。无论你使用的是MySQL、SQLServer还是Oralce,一般情况下,我们认为它需要足够快的CPU,足够大的内存,足够稳定可靠的硬件。单路至强CPU/4GB内存/Raid1绝对是入门配置。关于准确的配置我们需要再讨论业务需求后才能作决定。
2:服务器需要支持多少用户访问服务器肯定是为了提供某种服务,而使用这些服务的用户同样是我们必须考虑的因素,有几个具体的问题你需要做出评估:有多少注册用户正常情况下有多少用户会同时在线访问每天同时在线访问的最高峰值大概是多少这些问题,对我们决定采用什么样的CPU,多大的内存有着至关重要的影响。51IDC建议你的技术人员和业务部门坐在一起来讨论这几个问题,最后甚至需要按照特定的技术模型和算法,将这些数字转化为一些更具体的技术数字,例如并发多少个连接(很多时候,用户数与连接数不是一个概念)。同时,你还要对未来的用户增长做一个尽可能准确的预测和规划,你的服务器需要支持越来越多的用户。
3:需要多大空间来存储数据我们需要从两个角度来计算这个问题,一个角度是有哪些类别的数据,包括: *** 作系统本身占用的空间、安装应用程序所需要的空间、应用程序所产生的数据、数据库、日志文件、邮件数据等等,如果是Web20类的网站,你还要计算每个用户的存储空间;另一个角度是从时间轴来考虑,这些数据每天都在增长,你至少要为未来1年(我们建议2~3年)的数据增长做个准确的测算,这可能仍然需要你的软件开发人员和业务人员一起提供足够的信息。最后你仍然需要为计算出来的数字结果乘15左右的系数,方便维护的时候做各种数据备份和文件转移 *** 作。
4我的业务有多重要:你需要根据自身的业务领域,来遵循一些要求,我们在下面举几个简单的例子,帮助你理解这些服务器对可靠性、数据完整性等方面的要求:
41如果你的服务器用来运行一个WordPress博客,与朋友们分享观点。那么我相信,一台酷睿服务器,1G内存外加一块160GB的硬盘就足够了。就算服务器出现了一点硬件故障,导致几个小时甚至一两天不能提供访问,生活会照常继续,天也不会塌下来。
42如果你的服务器用来作为测试平台,那么就不会如生产环境那样,对可靠性有极高的要求,你所需要的可能只是做好例行的数据备份,服务器宕机后,能有个人在今天把问题解决掉就OK了
43如果你是一个电子商务公司,服务器正在运行电子商务网站平台,那么请一定要像重视女朋友一样重视服务器,当硬件发生故障而导致宕机,你需要对以下危言耸听的后果做好心理准备:投诉电话被打爆、顾客大量流失、顾客要求退款、市场推广费用打水漂、员工无事可干,公司运营陷入瘫痪、数据丢失(这是最痛苦最灾难的结果,我们经历了太多这样的案例,它甚至会导致一个公司就此消亡)在这里,我们其实只需要简单讨论你的业务对服务器硬件可靠性的要求。换言之,如果你觉得业务不能承担硬盘损坏带来的停机或数据丢失风险,那么一定要选择一个合适的Raid卡,对于冗余电源问题,道理一样。(全面解决这个问题,不单考虑单个服务器的硬件,还需要结合系统架构的规划设计和运维管理来分析,这部分我们将单独撰写文章来讨论。)
在完成以上问题后,我们接下来就可以决定这些具体选项:
选择什么CPU
回忆一下上面”服务器运行什么应用“和“需要支持多少用户访问”两个问题的答案,这将帮助我们来选择合适的CPU。毫无疑问,CPU的主频越高,其性能也更高;两个CPU要比一个CPU来得更爽,至强肯定比酷睿更生猛。但我们究竟需要选择怎样的CPU我们在这里为你提供一些常见情况下的建议:
(1)如果你的业务刚刚起步,预算不是很充足,建议你选择一款经典酷睿服务器,毕竟51IDC的E5300服务器最便宜只需要450块钱一个月。而且,以后你可以根据业务发展情况,随时升级到更高配置的服务器。
(2)如果你需要在一台服务器同时运行多种应用服务,例如Net+Exchange+SQLServer,那么一个单路至强(例如X3330)或新一代酷睿I3/I7(双核四线程)将是最佳的选择。虽然从技术角度,这不是一个好主意,但至少能够帮你节约一大笔成本。
(3)如果你的服务器运行SQLServer、MySQL或者Oracle,而且目前有几百个用户同时在线,未来还会不断增长,那么你至少应该选择安装一个E5504(或更高主频)的至强服务器。当半年后负载越来越大的时候,可以选择增加一个CPU。
(4)如果你需要一台游戏服务器,那么我们建议你选择一台单路或双路的至强服务器。需要注意的是,使用双路CPU需要应用程序的支持,如果应用程序本身没有对双路CPU进行代码优化,就不会带来性能的显著提升,而且将造成投资的极大浪费。
需要多大的内存
同样,”服务器运行什么应用“和“需要支持多少用户访问”两个问题的答案,也将帮助我们来选择合适的内存容量。相比于CPU,我们更认为内存(RAM)是影响性能的最关键因素。因为在相当多正在运行的服务器中,我们发现CPU利用率一般都在10%~30%之间,甚至更低。但我们发现由于内存容量不够而导致服务器运行缓慢的案例比比皆是,如果服务器不能分配足够的内存给应用程序,应用程序就需要通过缓慢的硬盘接口来交换读写数据,这将导致网站慢的令人无法接受。内存大小主要取决于服务器的用户数量,当然也和应用软件对内存的最低需求和内存管理机制有关系,所以,最好由你的程序员或软件开发商给你最佳的内存配置建议。我们同样在下面给出了一些常见应用环境下的内存配置建议:
(1)无论是Windows下的`IIS还是Linux下的Apache,一般情况下Web前端服务器不需要配置特别高的内存,尤其是在集群架构中,1GB-2GB就已足够。只有当几千个并发用户,并运行动态脚本的时候,我们才会考虑使用4GB或更高的内存。
(2)对于运行Tomcat、Resin、WebLogic、Websphere或Net这样的应用服务器,2GB内存应该是基准配置。更准确数字需要根据用户数量和技术架构来确定。
(3)数据库服务器的内存由数据库实例的数量、表大小、索引、用户数来决定,一般建议配置4GB以上的内存,我们甚至在很多的客户案例中使用了24GB到48GB的内存。
(4)诸如Imail、Notes、Exchange这样的邮件服务器对内存的要求也并不高,1GB-2GB就可以满足了。
(5)对于一台文件服务器,1GB内存可能就足够了。
(6)还有一些特殊的服务器,我们需要为之配置尽可能高的内存容量,包括Squid,Varnish这样的缓存服务器,和Memcached Server。事实上,上面的数字已经足够慷慨,由于内存技术的不断进化和价格不断降低,我们才得以近乎奢侈的讨论4G、8G、16GB这些曾经不可想象的内存容量。早在2000年的时候,我面对的大多数服务器都是256MB、512MB内存,1GB已经算是高配,而那时同样也需要满足大量用户的访问。所以,除了花钱购买内存来满足应用程序的贪婪之外,系统优化和内存管理仍然是我们需要重视的问题。需要怎样的硬盘存储系统硬盘存储系统的选择和配置是整个服务器系统里最为复杂的一部分,我们需要考虑硬盘的数量、容量、接口类型、转速、缓存大小,以及是否需要Raid卡,Raid卡的型号和Raid级别等问题。甚至在一些高可靠性高性能的应用环境中,我们还需要考虑使用怎样的外部存储系统(SAN、NAS或DAS)。
网卡的问题:
如果你的基础架构是多服务器环境,而且服务器之间有大量的数据交换,那么我们建议你为每台服务器配置两个或更多的网卡,一个用来对外提供服务,另一个用来做内部数据交换。如果你对安全的要求特别高,我们甚至可以单独安装一个用于系统管理和日常维护的网卡。至于网卡端口的速率问题,这主要取决于你对带宽流量的评估。大多数情况下,百兆网卡足够用来对外提供服务,而内部数据交换建议使用千兆网卡。但话说回来,除了经典酷睿服务器之外,我们现在很难找到百兆接口的服务器主板了。还有一种情况需要注意,如果你选择51IDC的数据备份服务(Managed Backup Service),则需要一块单独的网卡连接到专有的数据备份网络中,进行每天的数据备份,这会带来几个好处:不会占用宝贵的外网带宽、保证数据传输的安全、提供快速的数据备份速度。我们非常希望这篇文章能够帮助你为服务器选择合适的硬件配置,如果你阅读后发现有不正确的地方,请在评论中指出来,我们会及时更新并感谢你的热情指正。
一、前端开发
前端开发主要涉及网站和App,用户能够从浏览器上或App屏幕上看到的东西。简单地说,能够从浏览器上或App屏幕看到的东西都属于前端。
1、技能与工具
前端开发,就是要创造上面提到的网站面向用户的部分背后的代码,并通过建立框架,构建沉浸性的用户体验。为了实现这个目标,开发需要熟练运用下列语言、框架、工具库:
三大语言:HTML,CSS,和Javascript;
此外,掌握jQuery和LESS等工具库也很重要,它们能帮助开发者以更高效的方式编码;
很多前端开发岗也要求Ajax方法的使用经验,它可以帮助你使用Javascript在后台从服务器拉取数据,协助实现页面的动态加载。
使用这些技术,前端开发者能连接起网站设计者和后端开发者之间的桥梁。他们能提供用户体验方面的分析,构建模型和线框,给设计团队提出建议。他们能给后端编写的服务应用赋予生命,提升格调,营造美感。
二、后端开发
后端开发即“服务器端”开发,主要涉及软件系统”后端“的东西。比如,用于托管网站和App数据的服务器、放置在后端服务器与浏览器及App之间的中间件,它们都属于后端。简单地说,那些你在屏幕上看不到但又被用来为前端提供支持的东西就是后端。
1、技能与工具
为了让服务器、应用、数据库能够彼此交互,后端工程师需要具有如下技能:
用于应用构建的服务器端语言:PHP,Ruby,Python,Java,Net等;
数据相关工具:MySQL,Oracle,SQLServer等;
PHP框架:Zend,Symfony,CakePHP等;
版本控制工具:SVN,CVS,Git等;
还要熟练使用Linux作为开发和部署环境。
后端开发者使用这些工具编写干净、可移植、具有良好文档支持的代码来创建或更新Web应用。但在写代码之前,他们需要与客户沟通,了解其实际需求并转化为技术目标,制定最有效且精简的方案来进行实现。
Web前端开发所需要的知识技能及学习路径。
1HTML5CSS3JavaScript。
Web开发基础中的基础,HTML是负责网页结构,CSS负责网页样式,JS则负责逻辑交互。前两者更像是标记语言,没有什么逻辑,JS才是前端的重中之重。HTML5新增的技术大部分需要结合JS学习。
每个人学习进度可能不同,这个阶段主要是多仿站,熟悉基础,试试用CSS写响应式页面,了解JS深入性的知识,比如原型链、闭包、设计模式等需要更多的积累,逐渐理解并实践掌握。
2JQueryBootStrapAjaxJson。
jQuery是JS的一个应用库,能够提升原生JS开发效率。Bootstrap则是响应式框架,更简单的实现手机/平板/PC多个设备的页面支持。Ajax技术用于异步交互,不刷新页面就能更新数据,比如地图应用等。Json是一种数据格式,被广泛应用在各大编程语言中。
jQuery和bootstrap会简化很多编写的代码量,用着不亦乐乎,但对于基础还不是很扎实的人建议还是少用。Ajax和json通常用于和后端交互,在实际业务中也经常用到。
3Git/SVN。
版本管理工具,主要用于团队开发时避免文件冲突,也可回档。前端推荐学习Git。
4NodejsMysql/MongoDB(可选)。
运行在服务器端的JavaScript。Express是其拓展MVC框架。其中nodejs最常用到的就是npm包管理器,不用到各个网站去下载资源包。数据库的学习可以选择MongoDB或者MySQL,前者与Nodejs的契合度更好,不过现在大多数网站都是PHPMysql的组合,如果有学PHP的打算的话,可以先学习Mysql。
5ECMAScript6。
JavaScript的语言标准。ES6中加入了很多新的概念,也弥补了之前版本中JS的很多缺陷,越来越多的项目开始运用ES6进行开发。学之前最好把ES5先搞懂了,目前实际项目中考虑到兼容性,ES6是需要通过Babel将其编译为ES5来部署的。
6Angular/React/Vue。
前端三大框架,各自也有着各自的生态系统,根据需求自行选择学习。目前企业需求量最大的仍然是Angular,但近期趋势来看react和vue则更受欢迎。因为现在前端技术发展太过于突飞猛进,工具和框架的更新比翻书还快,建议学习还是看文档比较好。学习过程中也会遇到很多用到各种构建工具的时候。
7其他常用工具。
这个一样是根据需求自行选择学习。比较常用的现在有Webpack,可以将多个不同编程风格的文件打包,比如ES6/AMD/CMD之类的模块化都能识别并编译成浏览器能运行的文件。Sass/Less,CSS预编译框架,可以用带有逻辑性的方式编写CSS代码。Gulp/Grunt构建工具,可以自动化对代码进行压缩合并等工作。
8其他后端编程语言。
目前市场对前端基本都要求会一门后端语言,PHP/JAVA/Nodejs/Python等。
学习编程重要的还是实践,多敲代码,多去尝试。独立解决问题的能力、探究钻研的精神是必不可少的。有兴趣的话也可以自己搭建一个技术博客,往github上传几个开源项目,这些都是不错的加分点。
第六学习web前端,你不能不知道的技巧。1、不要让对未来的忧虑干扰你现在的学习,有些JavaScript初学者会问刚开始要学习哪种框架,但是如果你还没能熟练使用原生JavaScript,你就不应该问这种问题。因为你会花很多时间研究各种框架而得不到进步。走出这个陷阱的一个方法是制定一个学习路径图。
2、不要让自信骗你进入持续遗忘的陷阱,快速理解一个概念会是JavaScript进步的最大阻碍,下面我将解释。当你遇到一个知识点,而你好像理解了,你很可能抑制不住内心跳到下一个知识点的冲动。但是,很快你会到达一个节点,在这个节点你发现自己已经忘了前面所学,于是你需要回过头复习,你快速瞟了一下之前所学然后又继续学习新的知识。但是现在,你忘记了其他东西。你一直重复这种继续-回顾-继续-回顾模式直到你发现自己完全迷失。你开始沮丧,想要休息,然后当你开始重振旗鼓,却发现自己已经忘掉所有。
幸运的是,我们有两个应对上述问题的方法:
1、一次只学一样东西
2、做练习-实际上是敲代码
当你学习一个新的概念,你要将它实践出来,练习它,与它和善相处,甚至能够将它与其他概念联系到一起。当你学习一个示例,最重要的是你要自己将代码敲出来,这样能帮助你吸收它。另外,一次只学一个东西能够帮助你巩固所学,因为记忆更少的东西更容易。
这个过程看起来貌似比阅读然后快速跳到下一个知识点要花费更长的时间,但是实际上它所花的时间更少,因为这样你就不需要频繁复习之前所学。我在好几个场合后才艰难的领悟到这个道理。
3、思考的更慢你将学得更快。这一条听起来违反直觉,所以下面我将用一个故事来解释。我的一个朋友又一次对JavaScript的一个特性感到困惑。我让他将他知道的解释给我听,然后告诉我哪儿让他困惑。当它向我解释代码,我发现他在跳步。“等会儿!”我说道。“慢慢来,然后将这些一步步解释给我听。”我的朋友直接将整个代码的功能总结给我听。我再次让他暂停。“你还是在跳步。再解释一次,这次我需要你一步步将每一行代码发生了什么解释给我听。”这一次,我的朋友能够更好的解释代码是如何运行的。关键在于他花时间去理解每一行代码而不是试图一下理解所有。
在这样这种案例中,思考的更慢实际上让你学得更快。大家都知道学习不能急于求成,学会坚持就已经超过85%的人了。
没有合适的前端服务器指的是网站。云电脑没有合适的网站入口,前端服务器是指网站的入口,它负责接收用户的请求,并将请求转发给后端服务器,后端服务器则负责处理用户的请求,并提供相应的服务。前端开发是指开发人员使用各种技术和工具来创建网站或应用程序的用户界面部分。
前端开发包括了使用HTML、CSS和JavaScript等技术创建网页,并与后端服务器进行交互,呈现最终用户所看到的网页或应用程序的内容。
前端开发人员负责设计和实现用户界面,使其尽可能直观和易于使用。他们还需要确保网站或应用程序能够在各种设备和浏览器上正常工作,包括桌面电脑、平板电脑和手机等。因此,前端开发人员需要对响应式设计和移动优化有深入的理解。
一些常见的前端开发技术包括HTML、CSS、JavaScript、React、Vue、Angular等,以及一些前端工具如Webpack、Gulp、Grunt等。前端开发也通常需要与后端开发人员密切合作,以确保整个网站或应用程序能够正确地工作。
想要系统学习,枯伍你可以考察对比一下开设有相关专业的热门学校获取资料好的学校拥有根据当下企业需求自主研发课程的能力,能够在校期间取得大专或本科学历,中博软件学院、南京课工场、南京北大青鸟等开设相关专业的学校都是不错的,建议实地考察对比一下。
祝你学有所成,望采纳。
北大青鸟学生课堂实录
您好,前端插件之所以要在服务器环境下工作,是因为它们需要依赖服务器端的资源,以及服务器端的数据处理能力。前端插件可以更好地访问服务器端的数据,并且可以更快地处理数据,从而提高用户体验。此外,服务器端的环境也可以提供更多的安全性,以保护用户的隐私和数据安全。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)