免费智能真题库 > 历年试卷 > 系统架构设计师 > 2014年下半年 系统架构设计师 下午试卷 案例
  第5题      
  知识点:   Linux   MySQL   Apache   PHP   Web服务   Web服务器   磁盘   系统架构   运维

 
【说明】
某软件公司开发运维了一个社交网站系统,该系统基于开源软件平台LAMP(Linux+Apache+MySQL+PHP)构建,运行一段时间以来,随着用户数量及访问量的增加,系统在Web服务器负载、磁盘I/O等方面出现了明显瓶颈,已不能满足大量客户端并发访问的要求,因此公司成立了专门的项目组,拟对系统架构进行调整以提高系统并发处理能力。目前系统采用了传统的三层结构,系统架构如图 5-1 所示。
 
问题:5.1   针对目前出现的Web服务器负载过大问题,项目组决定在客户端与中间层Web服务器之间引入负载均衡器,通过中间层Web服务器集群来提高Web请求的并发处理能力。在讨论拟采用的负载均衡机制时,王工提出采用基于DNS的负载均衡机制,而李工则认为应采用基于反向代理的负载均衡机制,项目组经过讨论,最终确定采用李工提出的方案。请用200字以内的文字,分别简要说明两个机制的基本原理;并从系统执行效率、安全性及简易性等方面将两种机制进行对比,将对比结果填入表 5-1 中。
 
问题:5.2   针对并发数据库访问所带来的磁盘I/O瓶颈问题,项目组决定在数据层引入数据库扩展机制。经过调研得知系统数据库中存储的主要数据为以用户标识为索引的社交网络数据,且系统运行时发生的大部分数据库操作为查询操作。经过讨论,项目组决定引入数据库分区和MySQL主从复制两种扩展机制。数据库分区可采用水平分区和垂直分区两种方式,请用350字以内的文字说明在本系统中应采用哪种方式及其原因,并分析引入主从复制机制给系统带来的好处。
 
问题:5.3   为进一步提高数据库访问效率,项目组决定在中间层与数据层之间引入缓存机制。赵工开始提出可直接使用MySQL的查询缓存(query cache)机制,但项目组经过分析好友动态显示等典型业务的操作需求,同时考虑已引入的数据库扩展机制,认为查询缓存尚不能很好地提升系统的查询操作效率,项目组最终决定在中间层与数据层之间引入Memcached分布式缓存机制。
(a)请补充下述关于引入Memcached后系统访问数据库的基本过程:系统需要读取后台数据时,先检查数据是否存在于(1)中,若存在则直接从其中读取,若不存在则从(2)中读取并保存在(3)中;当(4)中数据发生更新时,需要将更新后的内容同步到(5)实例中。(备选答案:数据库、Memcacbed 缓存)
(b)请结合已知信息从缓存架构、缓存有效性及缓存数据类型等方面分析使用Memcached代替数据库查询缓存的原因。
 
 
 

   知识点讲解    
   · Linux    · MySQL    · Apache    · PHP    · Web服务    · Web服务器    · 磁盘    · 系统架构    · 运维
 
       Linux
        Linux是一个类似于UNIX的操作系统,Linux系统不仅能够运行于PC平台,还在嵌入式系统方面大放光芒,在各种嵌入式Linux迅速发展的状况下,Linux逐渐形成了可与Windows CE等嵌入式操作系统进行抗衡的局面。嵌入式Linux的特点如下:
        (1)精简的内核,性能高,稳定,多任务。
        (2)适用于不同的CPU,支持多种架构,如x86、ARM、ALPHA、SPARC等。
        (3)能够提供完善的嵌入式图形用户界面以及嵌入式X-Windows。
        (4)提供嵌入式浏览器、邮件程序、音频和视频播放器、记事本等应用程序。
        (5)提供完整的开发工具和软件开发包,同时提供PC上的开发版本。
        (6)用户可定制,可提供图形化的定制和配置工具。
        (7)常用嵌入式芯片的驱动集,支持大量的周边硬件设备,驱动丰富。
        (8)针对嵌入式的存储方案,提供实时版本和完善的嵌入式解决方案。
        (9)完善的中文支持,强大的技术支持,完整的文档。
        (10)开放源码,丰富的软件资源,广泛的软件开发者的支持,价格低廉,结构灵活,适用面广。
 
       MySQL
        MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
 
       Apache
        如下表所示为Apache资源监控指标。
        
        Apache资源监控指标
        
 
       PHP
        PHP(Professional Hypertext Preprocessor)是一种服务器端HTML嵌入式脚本描述语言,目前正式发布的最高版本为4.04。服务器端脚本技术又分为嵌入式与非嵌入式两种,PHP是嵌入式的,类似的如ASP。它是一种功能非常强大的面向Internet/Intranet的编程语言,可以开发动态交互的Web应用程序,可在多种系统平台和多种Web服务器中使用,是真正的跨平台、跨服务器的开发语言。
        PHP语言主要具有以下特征。
        (1)免费,轻巧快速,真正跨平台。
        (2)PHP是一种遵守GNU条约的软件。根据此条约,所有用户都可以免费使用PHP并可以得到它的源代码,还可以在源代码上进行修改和完善,开发成适合自己使用的新版本。
        (3)HP易学易用。因为PHP 3.0以上版本是用C语言实现的,而且它自身的语法风格同C语言极其相似,有许多的语句、函数PHP与C语言是完全相同的。
        (4)具有十分强大的数据库操作功能,可直接连接多种数据库,并完全支持ODBC,这一特点是其他脚本语言所不能比拟的。
        (5)PHP语言可以嵌入HTML中。当使用者使用经典程序设计语言(如C语言或Pascal)编程时,所有的代码必须编译成一个可执行的文件,然后该可执行文件在运行时,远程的Web浏览器会产生可显示的HTML标记。
 
       Web服务
        Web是为了程序到用户的交互,而Web服务是为程序到程序的交互做准备。Web服务使公司可以降低进行电子商务的成本、更快地部署解决方案以及开拓新机遇。实现Web服务的关键在于通用的程序到程序通信模型,该模型应建立在现有的和新兴的标准之上,例如,HTTP、可扩展标记语言(Extensible Markup Language,XML)、简单对象访问协议(Simple Object Access Protocol,SOAP)、Web服务描述语言(Web Service Description Language,WSDL)以及通用描述发现和集成(Universal Description Discovery and Integration,UDDI)。
               Web服务的定义
               Web服务是描述一些操作(利用标准化的XML消息传递机制可以通过网络访问这些操作)的接口。Web服务是用标准的、规范的XML概念描述的,称为Web服务的服务描述。这一描述包括了与服务交互需要的全部细节,包括消息格式(详细描述操作)、传输协议和位置。该接口隐藏了实现服务的细节,允许独立于实现服务所基于的硬件或软件平台和编写服务所用的编程语言使用服务。Web服务履行一项特定的任务或一组任务。Web服务可以单独或同其他Web服务一起用于实现复杂的聚集或商业交易。
               Web服务体系结构基于三种角色(服务提供者、服务注册中心和服务请求者)之间的交互。交互涉及发布、查找和绑定操作。这些角色和操作一起作用于Web服务构件——Web服务软件模块及其描述。在典型情况下,服务提供者托管可通过网络访问的软件模块(Web服务的一个实现),服务提供者定义Web服务的服务描述并把它发布到服务请求者或服务注册中心。服务请求者使用查找操作来从本地或服务注册中心检索服务描述,然后使用服务描述与服务提供者进行绑定并调用Web服务实现或同它交互。服务提供者和服务请求者角色是逻辑结构,因而服务可以表现两种特性。下图描述了这些操作、提供这些操作的组件及它们之间的交互。
               
               Web服务的角色、操作和构件
               WSDL——Web服务描述语言(Web Service Description Language)
               WSDL是一种XML Application,它将Web服务描述定义为一组服务访问点,客户端可以通过这些服务访问点对包含面向文档信息或面向过程调用的服务进行访问(类似远程过程调用)。WSDL首先对访问的操作和访问时使用的请求/响应消息进行抽象描述,然后将其绑定到具体的传输协议和消息格式上以最终定义具体部署的服务访问点。相关的具体部署的服务访问点通过组合就成为抽象的Web服务。
               UDDI——通用描述发现和集成(Universal Description Discovery and Integration)
               (1)UDDI的基本概念。UDDI允许动态发现相关的Web服务并将其集成到聚合的业务过程中。UDDI提供一种搜索有关企业和电子化服务的信息。在UDDI中发布企业与服务信息使其他企业能大范围访问到这些信息。UDDI基于现成的标准,如可扩展标记语言(Extensible Markup Language,XML)和简单对象访问协议(Simple Object Access Protocol,SOAP)。
               (2)UDDI注册中心。在UDDI中,一个重要的概念就是UDDI注册中心。UDDI注册中心包含了通过程序手段可以访问到的对企业和企业支持的服务所做的描述。此外,还包含对Web服务所支持的因行业而异的规范、分类法定义以及标识系统的引用。UDDI提供了一种编程模式,定义与注册中心通信的规则。UDDI规范中所有API都用XML来定义,包装在SOAP信封中,在HTTP上传输。
 
       Web服务器
        Web服务器也称为WWW服务器,主要功能是提供网上信息浏览服务。
        在UNIX和Linux平台下使用最广泛的HTTP服务器是W3C、NCSA和Apache服务器,而Windows平台使用IIS的Web服务器。跨平台的Web服务器有IBM WebSphere、BEA WebLogic、Tomcat等。在选择使用Web服务器应考虑的本身特性因素有性能、安全性、日志和统计、虚拟主机、代理服务器、缓冲服务和集成应用程序等。
        Web服务器的主要性能指标包括最大并发连接数、响应延迟、吞吐量(每秒处理的请求数)、成功请求数、失败请求数、每秒点击次数、每秒成功点击次数、每秒失败点击次数、尝试连接数、用户连接数等。
 
       磁盘
        在磁表面存储器中,磁盘的存取速度最快,且具有较大的存储容量,是目前广泛使用的外存储器。磁盘存储器由盘片、驱动器、控制器和接口组成。盘片的两面用来存储信息。驱动器用于驱动磁头(读/写头)沿盘面作径向运动以寻找目标磁道位置,驱动盘片以额定速率稳定旋转,通常是5400~15000r/min(Revolution Per Minute,RPM),并且控制数据的写入和读出。控制器接收主机发来的命令,将它转换成磁盘驱动器的控制命令,并实现主机和驱动器之间数据格式的转换及数据传送,以控制驱动器的读/写操作。一个控制器可以控制一台或多台驱动器。接口是主机和磁盘存储器之间的连接逻辑。
        磁盘存储器也称为硬盘存储器。硬盘存储器具有存储容量大,使用寿命长,存取速度较快的特点。硬盘存储器的硬件包括硬盘控制器(适配器)、硬盘驱动器以及连接电缆。硬盘控制器(Hard Disk Controller,HDC)对硬盘进行管理,并在主机和硬盘之间传送数据。硬盘控制器以适配卡的形式插在主板上或直接集成在主板上,然后通过电缆与硬盘驱动器相连。硬盘驱动器(Hard Disk Drive,HDD)中有盘片、磁头、主轴电机(盘片旋转驱动机构)、磁头定位机构、读/写电路和控制逻辑等。
        为了提高单台驱动器的存储容量,在硬盘驱动器内使用了多个盘片,它们被叠装在主轴上,构成一个盘组;每个盘片的两面都可用作记录面,所以一个硬盘的存储容量又称为盘组容量。
        硬盘的接口方式可以说是硬盘另一个非常重要的技术指标,这点从SCSI硬盘和IDE硬盘的巨大差价就能体现出来,接口方式直接决定硬盘的性能。现在最常见的接口有IDE(ATA)和SCSI两种,此外还有一些移动硬盘采用了PCMCIA或USB接口。
        .IDE(Integrated Drive Electronics):IDE接口最初由CDC、康柏和西部数据公司联合开发,由美国国家标准协会(ATA)制定标准,所以又称ATA接口。普通用户家里的硬盘几乎全是IDE接口的。IDE接口的硬盘可细分为ATA-1(IDE)、ATA-2(EIDE)、ATA-3(Fast ATA-2)、ATA-4(包括UItraATA、Ultra ATA/33、Ultra ATA/66)与Serial ATA(包括Ultra ATA/100及其他后续的接口类型)。基本IDE接口数据传输率为4.1Mb/s,传输方式有PIO和DMA两种,支持总线为ISA和EISA。后来为提高数据传输率、增加接口上能连接的设备数量、突破528MB限制及连接光驱的需要,又陆续开发了ATA-2、ATAPI和针对PCI总线的FAST-ATA、FAST-ATA2等标准,数据传输率达到了16.67MB/s。
        .小型计算机系统接口(Small Computer System Interface,SCSI):SCSI并不是专为硬盘设计的,实际上它是一种总线型接口。由于独立于系统总线工作,所以它的最大优势在于其系统占用率极低,但由于其昂贵的价格,这种接口的硬盘大多用于服务器等高端应用场合。
 
       系统架构
               客户机/服务器系统
               C/S(Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到客户机端和服务器端来实现,降低了系统的通信开销。目前大多数应用软件系统都是客户机/服务器形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和客户机/服务器应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。
               浏览器/服务器系统
               B/S (Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(浏览器)实现,但是主要事务逻辑在服务器端(服务器)实现,形成所谓三层3-tier结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握,成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(如LAN,WAN, Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全。
               多层分布式系统(Multi-tier System)
               (1)概念。
               随着中间件与Web技术的发展,三层或多层分布式应用体系越来越流行。在多层体系中,各层次按照以下方式进行划分,实现明确分工:
               ①瘦客户:提供简洁的人机交互界面,完成数据的输入/输出。
               ②业务服务:完成业务逻辑,实现客户与数据库对话的桥梁。同时,在这一层中,还应实现分布式管理、负载均衡、Fail/Recover、安全隔离等。
               ③数据服务:提供数据的存储服务。一般就是数据库系统。
               (2)多层系统主要特点。
               多层系统主要特点是:
               .安全性。中间层隔离了客户直接对数据服务器的访问,保护了数据库的安全。
               .稳定性。对于要求24×7工作的业务系统,多层分布式体系提供了更可靠的稳定性。一是中间层缓冲Client与数据库的实际连接,使数据库的实际连接数量远小于Client应用数量。当然,连接数越少,数据库系统就越稳定。二是Fail/Recover机制能够在一台服务器宕机的情况下,透明地把客户端工作转移到其他具有同样业务功能的服务上。
               .易维护。由于业务逻辑在中间服务器,当业务规则变化后,客户端程序基本不做改动。
               .快速响应。通过负载均衡以及中间层缓存数据能力,可以提高对客户端的响应速度。
               .系统扩展灵活。基于多层分布体系,当业务增大时,可以在中间层部署更多的应用服务器,提高对客户端的响应,而所有变化对客户端透明。
               (3)多层系统举例。
               目前最为流行的两类多层应用架构为Sun的J2EE和Microsoft.Net,下面简单介绍J2EE的多层架构。
               
               J2EE多层应用架构
               (4)客户层。
               客户层用于与企业信息系统的用户进行交互以及显示根据特定商务规则进行计算后的结果。基于J2EE规范的客户端可以是基于Web的,也可以是不基于Web的独立(Stand Alone)应用程序。
               在基于Web的J2EE客户端应用中,用户在客户端启动浏览器后,从Web服务器中下载Web层中的静态HTML页面或由JSP或Servlets动态生成的HTML页面。
               在不基于Web的J2EE客户端应用中,独立的客户端应用程序可以运行在一些基于网络的系统中,例如手持设备或汽车电话等。同样,这些独立的应用也可以运行在客户端的Java Applet中。这种类型的客户端应用程序可以在不经过Web层的情况下直接访问部署在EJB容器(EJB Container)中的EJB组件。
               (5) Web层。
               J2EE规范定义的Web层由JSP页面、基于Web的Java Applets以及用于动态生成HTML页面的Servlets构成。这些基本元素在组装过程中通过打包来创建Web组件。运行在Web层中的Web组件依赖Web容器来支持诸如响应客户请求以及查询EJB组件等功能。
               (6)业务层。
               在基于J2EE规范构建的企业信息系统中,将解决或满足特定业务领域商务规则的代码构建成为业务层中的Enterprise JavaBean (EJB)组件。EJB组件可以完成从客户端应用程序中接收数据、按照商务规则对数据进行处理、将处理结果发送到企业信息系统层进行存储、从存储系统中检索数据以及将数据发送回客户端等功能。
               部署和运行在业务层中的EJB组件依赖于EJB容器来管理诸如事务、生命期、状态转换、多线程及资源存储等。这样由业务层和Web层构成了多层分布式应用体系中的中间层。
               (7)企业信息系统层。
               在企业应用系统的逻辑层划分中,企业信息系统层通常包括企业资源规划(ERP)系统、大型机事务处理(Mainframe Transaction Processing)系统、关系数据库系统(RDMS)及其他在构建J2EE分布式应用系统时已有的企业信息管理软件。
 
       运维
        运维是运行维护的简称,是一种IT服务形态。在《信息技术服务分类与代码》(GB/T 29264-2012)中,对运行维护服务(operation maintenance service)给出的定义是“采用信息技术手段及方法,依据需方提出的服务级别要求,对其信息系统的基础环境、硬件、软件及安全等提供的各种技术支持和管理服务”。
        运维是信息系统全生命周期中的重要阶段,也是内容最多、最繁杂的部分,是对信息系统提供维护和技术支持以及其他相关的支持和服务。运维服务的主要对象包括基础设施、硬件平台、基础软件、应用软件以及依赖于IT基础设施的数据中心、业务应用等信息系统,其范围可以是单个IT基础设施的运维,也可以是整体IT基础设施和业务应用的总体运维。运维服务交付内容主要包括咨询评估、例行操作、响应支持和优化改善。
        在《信息技术服务分类与代码》(GB/T 29264-2012)中,将运行维护服务分成基础环境运维、硬件运维服务、软件运维服务、安全运维服务、运维管理服务和其他运行维护服务六类,每类运维服务及其说明见下表。
        
        运维服务分类与代码
        
        任何组织和个人提供运维服务需要依据需方提出的服务级别要求,并确保提供的运行维护服务符合与需方约定的质量要求。因此,具备相应运维服务能力是服务组织提供服务的必要条件,比如规范和明确运维人员的岗位职责和工作安排、提供绩效考核量化依据、提供解决事故和问题经验、提供知识的积累和共享手段、实现完善的IT运维管理、提高组织经营水平和服务水平等等。在《信息技术服务运行维护第1部分:通用要求》(GB/T 28827.1-2012)中给出了供方运维服务的能力模型,该模型定义了运行维护服务能力的四个关键要素:人员、资源、技术和过程,每个要素通过关键指标反映应具备的条件和能力。模型也给出了供方为持续提升运维能力的管理方法。
   题号导航      2014年下半年 系统架构设计师 下午试卷 案例   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
 
第5题    在手机中做本题