大型互联网公司项目如何架构
初始阶段的网站架构
大型网站都是从小型网站发展而来,网站架构也是一样,是从小型网站架构逐步演化而来,小型网站最开始没有太多人访问,只需要一台服务器就绰绰有余,这时的网站架构如图。
应用程序,数据库,文件等所有的资源都在一台服务器上。通常服务器操作系统使用Linux,应用程序使用PHP开发,然后部署在Apache上,数据库使用MySql,汇集各种开源软件及一台廉价服务器就可以开始网站的发展之路了。
应用服务和数据服务分离
随着网站业务的发展,一台服务器逐渐不能满足需求:越来越多的用户访问导致性能越来越差,越来越多的数据导致存储空间不足,这时就需要将应用和数据分离,应用和数据分离后整个网站使用三台服务器:应用服务器,文件服务器和数据库服务器,如下图所示,这三台服务器对硬件资源的要求各不相同,应用服务器需要处理大量的业务逻辑,因此需要更快更强大的CPU,数据库服务器需要快速磁盘检索和数据缓存,因此需要更快的硬盘和更大的内存,文件服务器需要储存大量用户上传的文件,因此需要更大的硬盘。
应用和数据分离后,不同特性的服务器承担不同的服务角色,网站的并发处理能力和数据存储空间得到了很大改善,支持网站业务进一步发展,但是随着用户逐渐增多,网站又一次面临挑战:数据库压力太大导致访问延迟,进而影响整个网站的性能,用户体验受到影响,这时需要对网站架构进一步优化。
使用缓存改善网站性能
网站访问特点和现实世界的财富分配一样遵循二八定律:80%的业务访问集中在20%的数据上。淘宝买家浏览的商品集中在少部分成交数多、评价良好的商品上;百度搜索关键词集中在少部分热门词汇上;经常登录的用户才会发微博、看微博,而这部分用户也只占总用户数目的一小部分。
既然大部分的业务访问集中在,那么如果把这一小部分数据缓存在内存中,就可以减少数据库的访问压力。网站使用的缓存分为两种:缓存在应用服务器上的本地缓存和缓存在专门的分布式缓存服务器上的远程缓存。本地缓存的访问速度更快一些,但是受应用服务器内存限制,其缓存数量有限,而且会出现和应用程序争用内存的情况。远程分布式可以使用集群的方式,部署大内存的服务器作为专门的缓存服务器,可以在理论上做到不受内存容量限制的缓存服务。
使用缓存后,数据访问压力得到有效缓解,但是单一应用服务器能够处理的请求连接有限,在网站的访问高峰期,应用服务器会成为整个网站的瓶颈。
使用应用服务器集群改善网站的并发处理能力
使用集群是网站解决高并发,海量问题的常用手段,当一台服务器的处理能力、储存空间不足时,不要企图去换更强大的服务器,对大型网站而言,不管多么强大的服务器,都满足不了网站持续增长的业务需求,这种情况下,更恰当的做法是增加一台服务器分担原有服务器的访问及存储压力。
对网站而言,只要能通过一台服务器的方式改善负载压力,就可以以同样的方式持续增加服务器不断改善系统性能,从而实现系统的可伸缩性,应用服务器实现集群是网站可伸缩集群架构设计中较为简单成熟的一种。如下图所示。
通过负载均衡调度服务器,可将来自用户浏览器的请求分发到应用服务器集群中的任何一台服务器上,如果有更多的用户,就在集群中加入更多的应用服务器,使应用服务器的负载压力不在成为网站的瓶颈。
数据库读写分离
网站使用缓存后,大部分数据操作访问都可以不通过数据库就能完成,但是仍有一部分读操作,(缓存访问不命中、缓存过期)和全部的写操作,需要访问数据库,在网站的用户达到一定规模后,数据库因为负载压力过高而成为网站的瓶颈。
目前大部分的主流数据库都提供主从热备功能,通过配置两台数据库主从关系,可以将一台数据库服务器的数据更新同步到另一台服务器上。网站利用数据库的这一功能,实现数据库读写分离,从而改善数据库负载压力。
应用服务器在写数据的时候,访问主数据库,主数据库通过主从复制机制将数据更新同步到从数据库,这样当应用服务器读数据的时候,就可以通过从数据库或得数据。为了便于应用程序访问读写分离后的数据库,通常在应用服务器端使用专门的数据访问模块,使数据库读写分离时对应用透明。
使用反向代理和CDN加速网站响应
CDN和反向代理的基本原理都是缓存,区别在于CDN部署在网络提供商的机房,是用户在请求网站服务时,可以从距离自己最近的网路提供商机房获取数据;而反向代理则部署在网站的中心机房,当用户请求到达中心机房后,首先访问的服务器是反向代理服务器,如果反向代理服务器中缓存着用户请求的资源,就将其直接给用户。
使用分布式文件系统和分布式数据库系统
分布式数据库是网站数据库拆分的最后手段,只有在单表数据规模非常庞大的时候才使用,不到万不得以时,网站更常用的数据库拆分手段是业务分库,将不同业务的数据库部署在不同的物理服务器上。
使用NOSQL和搜索引擎
对于海量数据的查询,我们使用nosql数据库加上搜索引擎可以达到更好的性能。并不是所有的数据都要放在关系型数据中。常用的NOSQL有mongodb和redis,搜索引擎有lucene。
业务拆分
随着业务进一步扩展,应用程序变得非常臃肿,这时我们需要将应用程序进行业务拆分,如百度分为新闻、网页、等业务。每个业务应用负责相对独立的业务运作。业务之间通过消息进行通信或者同享数据库来实现
分布式服务
这时我们发现各个业务应用都会使用到一些基本的业务服务,例如用户服务、订单服务、支付服务、安全服务,这些服务是支撑各业务应用的基本要素。我们将这些服务抽取出来利用分部式服务框架搭建分布式服务。淘宝的Dubbo是一个不错的选择
计算服务器吧?要看你做什么应用,如果是做图形设计,那么 是要图形工作站。如果是做科学计算,就是高性能服务器。
推荐你看看国产品牌正睿的这款双路八核图形工作站。标配2颗至强E5-2687W八核十六线程处理器(31GHz/8GT/20M缓存),英特尔C602服务器芯片组主板,32G DDR3 REG ECC 1333MHz容错校验内存,SSD 512G 6Gb高速固态硬盘,固态硬盘系统的随机读写IO能力可以达到传统SATA机械硬盘的30~100倍,4个热插拔盘位,Quadro 6000顶级专业绘图卡(6GB GDDR5显存,举世无双),双千兆网卡,性能可以说是非常不错。它是标配的两颗处理器,达成16颗处理核心,32条处理线程(在任务管理器处能看到32个处理核心的格子- -~很NB),最大支持256GB内存。
产品型号:I2TW2-8898HC
产品类型:双路八核工作站
处 理 器:Xeon E5-2687W×2
内 存:32G DDR3 REG ECC
硬 盘:SSD 512G
绘 图 卡:Quadro 6000
机 构:塔式
价 格:¥79900
银牌服务
全国三年免费上门售后服务,关键部件三年以上免费质保。
给你推荐的是国产品牌正睿的服务器产品,他们的产品性价比很高,做工很专业,兼容性,质量之类的都有保障,售后也很完善,3年免费质保,3年免费上门售后服务,在业界口碑很不错。
通过服务器外形的结构,可以把服务器分为塔式、机架式、刀片式服务器三种类型。而目前市场上比较常见的是塔式和机架式服务器两种,那么这两种服务器有什么区别呢
外形上:
塔式服务器它的外形上跟我们普通电脑的主机差不多,是立的,可以随便放置,无需机柜。只不过个头更大一些,它的尺寸并无统一的标准,硬要说的话,高度一般有10U。(1U=445cm)。
机架式的外形则是扁平式的,是平放的,常见的高度有1U、2U,需要放在服务器机柜中。
优点:
塔式服务器优点是扩展性强,因为其体积更大内部空间比较大,主板插槽也很多,这有利于后期对硬盘和电源灯的冗余扩展。因为其良好的扩展性,配置也能高,这种服务器,可以满足一般的服务器应用需求,尤其适合常见的入门级、工作级的服务器应用。
机架式服务器优点是占用空间小,便于统一管理。机架式服务器的设计宗旨就是尽可能减少空间的占用,所以在机器的内部会做很多的优化。同时它的外形是按照工业统一标准设计的,
可以方便放在一个机柜里面做统一管理。
机架式服务器优点还有就是安全性高,性能更好,这是因为机架式服务器需要放入机柜中,一般人根本接触不到。
缺点:
塔式服务器的缺点就是体积较大,占用空间多。如果是需要多台塔式服务器的话,就会管理不方便,因为其电源线,网线,数据线,显示器,键盘,鼠标,交换机,路由器不像机架式服务器有机柜统一的线槽,容易出现乱七八糟的情况。
机架式服务器的缺点就是内部空间比较小,其扩充性较受限制,散热问题上受到限制。在价格方面,机架式服务器一般比同等配置的塔式服务器更贵些。
总体来说,这两种类型服务器各有优缺点,看企业具体需求选择使用。不过目前来说,主流的是机架式服务器,特别是服务器租用市场,DELL R730xd、DELL R630xd、曙光I610-G20等机架式的服务器受到许多企业的青睐。
说说比较大的:阿里云、腾讯云等。这两家是起步很早的,别的都比较晚,技术上面还有差距。
个人网站配置从1核2g起步就可以了,慢慢的流量大了后期可以平滑升级到更高配置,也不用网站搬家,这就是云计算的弹性升级,很方便。
访问量在3W左右的话,算比较大的了。这种大型数据库服务器对cpu性能,内存容量,磁盘读写速度要求都非常高的。\x0d\\x0d\你可以看看国产品牌正睿的这款双路八核服务器,标配2个Xeon E5-2690八核心十六线程处理器(29GHz,8GT,20M缓存)、24G DDR3 REG ECC容错校验内存,SSD 512G 6Gbps高性能固态硬盘,2U热插拔机构,可以在不关机的情况下增加或更换硬盘,四个千兆网卡。如果以后随着业务量的增长,觉得性能不够用了,还可以扩展到两颗处理器,达成16颗处理核心32条计算线程(任务管理器那里可以看到32个处理器格子,相当恐怖- -~),最大支持512GB DDR3 REG ECC高速容错校验内存,怎么也够用了。\x0d\产品型号:I22S2-88916RHVK\x0d\产品类型:双路八核机架式服务器\x0d\ 处 理 器:Xeon E5-2690×2\x0d\内 存:32G DDR3 REG ECC\x0d\硬 盘:SSD 512G\x0d\机 构:2U机架式 \x0d\价 格:¥69800\x0d\ 银牌服务\x0d\全国三年免费上门售后服务,关键部件三年以上免费质保。\x0d\\x0d\这个配置跑你的大型数据库怎么也够用了,CPU性能时顶级配置了,没办法再升了。硬盘是超高性能的SSD硬盘,读可以达到500MB/s,写可以达到260MB/s,如果加上3个做raid5,那读速度可以达到1200MB/s,写可以达到500MB/s左右,所向无敌。所以可以考虑增加到3个,做raid5阵列,这样既保证数据安全,又可以提升读写性能。\x0d\\x0d\给你推荐的是国产品牌正睿的服务器产品,他们的产品性价比很高,做工很专业,兼容性,质量之类的都有保障,售后也很完善,3年免费质保,3年免费上门售后服务,在业界口碑很不错。
实验16 Windows环境下的文件服务器配置2007年06月12日 星期二 上午 09:001 实验目的与要求
(1) 学会安装和配置文件服务器。
(2) 学会服务器端共享文件夹的配置和管理。
(3) 学会客户端访问共享文件夹的方法。
(4) 学会分布式文件系统的设置方法。
(5) 实验学时:2
2 实验相关理论与知识
计算机网络的基本功能是在计算机间共享信息,文件共享可以说是最基本、最普遍的一种网络服务。虽然越来越多的用户购置专用文件服务器(如NAS),但是通用操作系统提供的文件服务器功能也非常实用,完全能满足一般的文件共享需求,下面主要介绍Windows Server 2003文件服务器的配置、管理和应用。
文件服务器负责共享资源的管理和传送接收,管理存储设备(硬盘、光盘、磁带)中的文件,为网络用户提供文件共享服务,也称文件共享服务器。除了文件管理功能之外,文件服务器还要提供配套的磁盘缓存、访问控制、容错等功能。部署文件服务器,主要要考虑以下3个因素。
·存取速度:快速存取服务器上的文件,例如可提供磁盘缓存加速文件读取。
·存储容量:要有足够的存储空间以容纳众多网络用户的文件,可使用磁盘阵列。
·安全措施:实现网络用户访问控制,确保文件共享安全。
文件服务器主要有两类解决方案,一类是专用文件服务器,另一类是使用PC服务器或PC计算机组建的通用文件服务器。
专用文件服务器是专门设计成文件服务器的专用计算机,以前主要是运行操作系统、提供网络文件系统的大型机、小型机,现在的专用文件服务器则主要指具有文件服务器的网络存储系统,如NAS和 SAN。NAS独立于操作系统平台,可支持多种操作系统和网络文件系统,提供集中化的网络文件服务器和存储环境,比一般的文件服务器的功能更强大,可看作是专用存储服务器,可为那些访问和共享大量文件系统数据的用户提供高效、性能价格比优异的解决方案。SAN全称存储区域网络,是一种用户存储服务的特殊网络,通常由磁盘阵列、光盘库、磁带库和光纤交换机组成。NAS可作为独立的文件服务器,提供文件级的数据访问功能,更适合文件共享。而SAN提供数据块级的数据访问功能,更适合数据库和海量数据。
目前一般用户使用PC服务器或PC计算机,通过网络操作系统来提供文件服务,UNIX、Linux、Novell、 Windows等操作系统都可提供文件共享服务。Windows网络操作系统,如Windows NT Server、Windows2000 Server和最新的Windows Server 2003由于操作管理简单、功能强大,在中小用户群中的普及率非常高,许多文件服务器都运行Windows网络操作系统。下面将重点以Windows Server 2003为例介绍文件服务器的配置、管理和应用。
3 实验环境与设备
C/S模式的网络环境,包括一台Windows XP客户机和一台Windows Server 2003服务器。
两种可选的物理拓扑(交叉线连接或通过集线器/交换机用直连线连接)。
4 实验内容与步骤
40 服务器的基本网络配置,包括IP地址为“192168105XX”、网关为“192168105254”等。(注:“XX”代表你配置机器的主机编号,“nXX”代表你的服务器主机名,例如你坐在5号机上则“XX”代表“05”,“1XX”代表“105”,配置此机的IP地址为“1921681055”、主机名为“n05”,下同)。
41 安装和配置文件服务器
文件服务器提供网络上的中心位置,可供存储文件并通过网络与用户共享文件。当用户需要重要文件时,可以访问文件服务器上的文件,而不必在各自独立的计算机之间传送文件。如果网络用户需要对相同文件和可通过网络访问的应用程序的访问权限,就要将该计算机配置为文件服务器。默认情况下,在安装Windows Server 2003系统时,将自动安装“Microsoft网络的文件和打印共享”网络组件。如果没有该组件,可通过网络连接属性对话框安装。
1.准备工作
在部署文件服务器之前,应当做好以下准备工作。
·划出专门的硬盘分区(卷)用于提供文件共享服务,而且要保证足够的存储空间,必要时使用磁盘阵列。
·磁盘分区(卷)使用NTFS文件系统,因为FAT32缺乏安全性,而且不支持文件和文件夹压缩、磁盘配额、文件加密或单个文件权限等重要特性。
提示:使用Windows Server 2003自带的工具即可将FAT32转换成NTFS格式。该工具名为Convertexe,位于Windows安装目录下的System32目录中。在命令行状态运行该工具即可,如Convert E:/FS:NTFS。
·确定是否要启用磁盘配额,以限制用户使用的磁盘存储空间。
·确定是否要使用索引服务,以提供更快速、更便捷的搜索服务。
2.配置文件服务器
只要将Windows Server 2003计算机上的某个文件夹共享出来,就会自动安装文件服务器,也可通过“配置您的服务器向导”工具来安装文件服务器角色。这两种方法的差别是,第二种方法提供更多的选项,并在程序菜单中提供文件服务器管理台工具。这里介绍采用第二种方法的基本步骤。
(1) 启动“配置您的服务器向导”工具。默认情况下,登录Windows Server 2003时将自动启动“管理您的服务器”(也可从控制面板中选择管理工具→管理您的服务器),单击添加或删除角色。另一种方法是直接从控制面板中选择管理工具→管理您的服务器→配置您的服务器向导。单击下一步按钮。
(2) 在配置选项界面中选择自定义配置,单击下一步按钮。
(3) 在服务器角色界面中,如果文件服务器的已配置状态为“否”,就单击文件服务器,然后单击下一步。
注意:如果文件服务器的已配置状态为“是”,就单击文件服务器,再单击下一步按钮打开角色删除确认界面,并选择删除文件服务器角色复选框,即可删除文件服务器角色,这样该服务器上的文件和文件夹就不再共享,依赖于这些共享资源的网络用户、程序或宿主都将无法与它们连接。
(4) 出现文件服务器磁盘配额对话框中,为服务器上所有NTFS分区设置默认的磁盘配额。勾选为此服务器的新用户设置默认磁盘空间配额和拒绝将磁盘空间给超过配额限制的用户。单击下一步按钮。默认情况下是没有启用磁盘配额。
(5) 出现文件服务器索引服务对话框,确定是否要使用索引服务。单击下一步按钮。一般情况下不需索引服务,只有在用户要经常搜索该服务器上的文件内容时才启用它。
(6) 出现选择总结对话框,查看和确认已经选择的选项,单击下一步按钮。
本例中有“设置默认磁盘配额”、“安装文件服务器管理”和“运行共享文件夹向导来添加一个新的共享文件夹或共享已有文件夹”等选项。
(7) 自动完成相关配置后,出现共享文件夹向导,根据提示配置共享文件夹以供其他用户共享。只有配置了共享文件夹之后,文件服务器才能建立。
(8) 单击下一步按钮,出现文件夹路径对话框,指定要共享的文件夹路径。可通过浏览在C盘目录下新建一个FileShare作为共享目录,此时文件夹路径输入框中将出现C:\FileShare(如果C盘中已经建立过此文件夹,才可以在此输入框中直接输入)。
(9)单击下一步按钮,出现名称、描述和设置对话框,指定共享名。
(10) 单击下一步按钮,出现权限对话框,指定共享权限为管理员有完全访
问权限;其他用户有只读访问权限,单击完成按钮。这里提供了几种预置的权限,也可以自定义权限。
(11)共享成功对话框中显示共享成功,给出新建共享文件夹的信息。如果要继续设置其他共享文件夹,则选中下面的复选框。单击关闭按钮,完成。
至此文件服务器配置就完成了。接下来可执行各项文件管理任务。
3.文件服务器管理工具(以下方法至少掌握一种)
Windows Server 2003提供了用于文件服务器配置管理的多种工具。
·文件服务器管理控制台:打开“管理您的服务器”工具,在文件服务器区域单击管理此文件服务器,打开该控制台。要使用“配置您的服务器向导”工具安装文件服务器,可从程序菜单中选择管理工具→文件服务器管理命令打开该控制台。
·“共享文件夹”管理工具:也可通过“计算机管理”工具中的“共享文件夹”管理工具来执行共享文件夹的配置管理,从程序菜单中选择管理工具→计算机管理,展开共享文件夹节点即可。
·Windows资源管理器:可直接将文件夹配置为共享文件夹。
·命令行工具:如net share可显示有关本地计算机上全部共享资源的信息。
一般来看节奏是这样的:
1方案讨论、设计。网站提供什么内容?需要哪些功能?面向群体如何?服务目标如何?访问压力如何?
2总体设计。哪些分页?站点结构如何?
3技术选型。静态站点还是动态站点?物理服务器、虚拟主机还是云?多少台服务器可以承载?后端用什么语言什么框架什么数据库为主体?前端用什么框架什么类库?前后端如何交互?多服务器的话如何协同?
4美工总体设计。页面怎么布局?什么配色?什么风格?字体选择?
5前端开发与具体美工设计协同。如何切图?大小、位置、间距?前端具体开发工作,美工具体设计工作。
6后端与前端协同。通信方式?API标准文档?前端具体开发工作,后端具体开发工作。
7后端与运维协同。服务要求?数据备份和恢复方式?安全工作?运维流程设计。
9测试。单元测试、整体测试、压力测试、少量用户内部测试
10服务器。配置、安装、部署。运维实际工作。
11买个域名。
12公开测试/发布。
0条评论