系统架构师下午案例分析历年必考总结

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1.可靠性(Reliability)是指产品在规定的条件下和规定的时间内完成规定功能的能力。子特性:成熟性,容错性,易恢复性,可靠性的依从性。1.提高可靠性的技术:(1)N版本程序设计(2)恢复块方法(3)防卫式程序设计(4)双机热备或集群系统(5)冗余设计【问题1】(1)针对特定应用系统,难度较大(2)数据冗余较大(3)以应用为中心管理数据(4)数据库系统接口标准化,易于在不同应用之间共享数据【问题2】(1)关系模式(2)读写时先从磁盘读入内存,再读写,性能相对较低(3)运行时整个数据库基本全调入内存,数据库容量受内存容量限制,容量较小(4)虽然也有恢复机制,但并不是所有故障都能恢复,可靠性较低(5)内存数据库(6)内存数据库(7)关系数库(8)内存数据库(9)内存数据库2.2.数据持久层是一组软件服务,将应用程序与该程序所使用的数据源分离,为整个项目提供一个统一、安全、并发的数据持久机制。好处:1、程序代码重用性强,即使更换数据库,只需要更改配置文件,不必重写程序代码。2、业务逻辑代码可读性强,在代码中不会有大量的SQL语言,提高程序的可读性。3、持久化技术可以自动优化,以减少对数据库的访问量,提高程序运行效率。4、简化开发工作,让开发人员更关注于业务逻辑的开发。【问题2】1、项目组应选Hibernate框架2、选择该技术的原因是:(1)从移植的角度来看使用Hibernate更容易移植到其它数据库平台。Hibernate与具体数据库的关联只需在XML文件中配置即可,所有的HQL语句与具体使用的数据库无关,移植性很好。MyBatis项目中所有的SQL语句都是依赖所用的数据库的,所以不同数据库类型的支持不好。(2)使用Hibernate能降低或者消除SQL语句开发工作量,Hibernate提供了方法完成持久层操作,程序员不需要对SQL的熟练掌握,便可完成任务。(3)Hibernate提供了对象状态管理的功能,使开发者不再需要理会底层数据库系统的细节,而MyBatis在这一块没有文档说明,用户需要对对象自己进行详细的管理。3.3.数据流的组成和作用数据流:数据流是数据在系统内传播的路径,因此由一组成分固定的数据组成。外部实体:代表系统之外的实体,可以是人、物或其他软件系统。加工(处理):加工是对数据进行处理的单元,它接收一定的数据输入,对其进行处理,并产生输出。数据存储:表示信息的静态存储,可以是文件、文件的一部分、数据库的元素等。4.对ESB的定义进行描述,给出ESB的五个主要功能ESB是传统中间件技术与XML、Web服务等技术结合的产物,主要支持异构系统集成。ESB基于内容的路由和过滤,具备复杂数据的传输能力,并可以提供一系列的标准接口。--ESB全称为EnterpriseServiceBus,即企业服务总线。它是传统中间件技术与XML、Web服务等技术结合的产物。ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。ESB的出现改变了传统的软件架构,可以提供比传统中间件产品更为廉价的解决方案,同时它还可以消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现了不同服务之间的通信与整合ESB的5个主要功能:(1)服务位置透明性;(2)传输协议转换;(3)消息格式转换;(4)消息路由;(5)消息增强;(6)安全性;1)服务的MetaData管理:在总线范畴内对服务的注册命名及寻址进行管理。2)传输服务:确保通过企业总线互连的业务流程间的消息的正确交付,还包括基于内容的路由功能。3)中介:提供位置透明的路由和定位服务;提供多种消息传递形式;支持广泛使用的传输协议。4)多服务集成方式:如JCA,Web服务,Messaging,Adaptor等.5)服务和事件管理支持:调用服务的记录、测量和监控数据;提供事件检测、触发和分布功能;ESB中最常提到的两个功能是消息转换和消息路由。一条总线一个时刻,只允许一个设备接收,但允许多个设备发送5.项目计划应该包括什么内容(1)项目背景(2)项目经理、项目经理的主管领导、客户方联系人、客户方的主管领导,项目领导小组(项目管理团队)和项目实施小组人员(3)项目的总体技术解决方案(4)所选择的项目管理过程及执行水平(5)对这些过程的工具、技术和输入输出的描述(6)选择的项目的生命周期和相关的项目阶段(7)项目最终目标和阶段性目标(8)进度计划(9)项目预算(10)变更流程和变更控制委员会(11)对于内容、范围和时间的关键管理评审,以便于确定悬留问题和未决决策6.基于DNS的负载均衡与基于反向代理的负载均衡基于DNS的负载均衡是在DNS服务器中为同一个主机名配置多个IP地址,在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的节点上去,使得不同的客户端访问不同的节点,从而达到负载均衡的目的。反向代理负载均衡。反向代理负载均衡是将来自Internet上的连接请求以反向代理的方式动态地转发给内部网络上的多个节点进行处理,从而达到负载均衡的目的。6.数据库分区可采用水平分区和垂直分区两种方式本系统应采用水平分区,因为社交网络数据库的数据表记录数量非常庞大,而且记录的访问,大多集中于本地区域,所以水平分区能极大提高处理效率。7.引入主从复制机制给系统带来的好处主从复制机制使得同样的数据,存在多个副本,这样让用户查询数据时,可以选择该数据最近的副本进行访问,提高效率,降低资源使用时的冲突。8.请结合已知信息从缓存架构、缓存有效性及缓存数据类型等方面分析使用Memcached代替数据库查询缓存的原因Memcached相比数据库查询缓存:缓存架构:数据库缓存只是将查询结果进行缓存,适用面很窄,而Memcached是将数据库中的表进行缓存,对于在这些表之上的操作均可适用。缓存有效性:Memcached缓存时效较长,只要未更新,就属于有效状态,而数据查询缓存时效较短(具体时效与配置有关),所以在此方面Memcached有优势。缓存数据类型:Memcached缓存数据为表级,而数据库查询缓存为元组级。9.项目计划书的内容项目提出的背景和必要性、国内外市场分析、项目主要开发和建设内容、项目实施的技术方案、项目实施的现有基础、项目组织机构和人员安排、、项目实施进度计划、项目资金需求及来源、项目经济和社会效益分析、项目风险分析及应对措施10.要缩短项目的工期,主要有两种方法:赶工:对成本和进度进行权衡,确定如何尽量少增加费用的前提下最大限度地缩短项目所需要的时间,称为赶进度也称赶工。快速跟进:调整逻辑关系,通过对各种逻辑关系并行确定来缩短项目周期。在进行项目设计中,当风险不大时,通过精心安排而使项目的前后阶段相互搭接以加快项目进展速度的做法叫快速跟进。4.公钥加密与简单密码加密(1)基于口令的认证方式实现简单,但由于口令复杂度及管理方面的原因,易受到认证攻击;而在基于公钥体系的认证方式中,由于其密钥机制的复杂性,同时在认证过程中私钥不在网络上传输,因此可以有效防止认证攻击,与基于口令的认证方式相比更为安全。(2)按照需求描述,在完成用户身份鉴别后,需依据用户身份进一步对业务数据进行安全保护,且受保护数据中包含用户私有的终端机数据文件,在基于口令的认证方式中,用户口令为用户和认证服务器共享,没有用户独有的直接秘密信息,而在基于公钥的认证方式中,可基于用户私钥对私有数据进行加密保护,实现更加简便。(3)基于公钥体系的认证方式协议和计算更加复杂,因此其计算复杂度要高于基于口令的认证方式,但业务环境的总用户数据在100人以内,用户规模不大,运行环境又为局域网环境,因此基于公钥体系的认证方式可以满足平台效率要求。5.加密解密过程应采用流加密方式。因为需求中提及“单个敏感数据文件可能会达到数百兆的规模”,文件数据量较大,使用流加密方式可以获得更高的加解密效率。数据加密与解密过程如下:其加密过程为:首先生成一个对称密钥,使用用户公钥加密这个对称密钥后存储在文件头,然后用生成的对称密钥加密文件数据存储。其解密过程为:用户首先使用自己的私钥解密被加密的对称密钥,再用该对称密钥解密出数据原文。6.目前数据库管理系统提供的基本数据加密支持主要有以下两种:(1)加解密API:数据库管理系统提供可在SQL语句中调用的加解密API,应用可以利用这些API构建自己的基础架构,对数据进行加密保护。(2)透明加密:安全管理员为数据库敏感字段选择加密方式及密钥强度,应用访问受保护数据时只需使用口令打开或关闭密钥表,对数据的加密和解密由数据库管理系统自动完成。加解密API方式的灵活性强,但构建和管理复杂;而透明加密方式管理简单,应用程序负担轻,但灵活性较差。用户要求尽可能减少安全管理与应用程序的负担,因此应选择透明加密方式。7.关系型数据库的弊端与NOSQL数据库比较(1)用户执行读写操作时,响应时间均变得很慢;(2)随着系统功能的扩充,原有数据格式发生变化,又出现新的数据格式,维护困难;(3)数据容量很快超过系统原有的设计上限,数据库扩容困难;(4)软件系统不断出现宕机,整个系统可用性较差。其原因主要是:(1)用户响应时间慢。大型社交网络系统要根据用户个性化信息来实时生成动态页面和提供动态信息,所以基本上无法使用动态页面静态化技术,因此数据库并发负载非常高,往往要达到每秒上万次读写请求。关系数据库应付上万次SQL查询还勉强可以,但是应付上万次SQL写数据请求,硬盘I/O就已经无法承受了。特别是涉及到多表连接操作,会导致响应变慢。(2)数据格式变化。大型社交网络系统随着用户的使用,会不断地增加新的功能,导致原有数据格式发生变化,甚至出现新的数据格式。但关系数据库中采用元组方式组织数据,难以使用新型数据格式,难以维护。(3)数据容量超过设计上限。对于大型社交网络系统,往往会在很短时间内产生海量数据。关系数据库多采用中央数据存储,使得数据容量受限于前期设计的上限,很难实现数据容量的横向扩展。(4)系统可用性差:关系数据库采用中央数据存储,容易成为系统的性能瓶颈,单点故障很容易导致系统崩溃,负载过高往往导致系统出现宕机现象。【问题2】针对问题(1),NoSQL数据库支持高并发数据访问,性能较高。针对问题(2),NoSQL数据库的数据存储结构松散,能够灵活支持多种类型的数据格式。针对问题(3),NoSQL数据库能够支持海量数据的存储,且易于横向扩展。针对问题(4),NoSQL数据库基于分布式数据存储,不存在单点故障和性能瓶颈,系统可用性高。【问题2】该系统采用NoSQL数据库时可能存在的问题有:(1)NoSQL数据库的现有产品不够成熟,大多数产品处于初创期。(2)NoSQL数据库并未形成一定的标准,产品种类繁多,缺乏官方支持。(3)NoSQL数据库不提供对SQL的支持,学习和应用迁移成本较高。(4)NoSQL数据库支持的特性不够丰富,现有产品提供的功能比较有限。8.设计模式试题。【说明】某软件企业为影音产品销售公司W开发一套在线销售系统,以提升服务的质量和效率。项目组经过讨论后决定采用面向对象方法开发该系统。在设计建模阶段需要满足以下设计要求:(1)W公司经常进行促销活动。根据不同的条件(如订单总额、商品数量、产品种类等),公司可以提供百分比折扣或现金减免等多种促销方式供提交订单的用户选择。实现每种促销活动的代码量很大,且会随促销策略不同经常修改。系统设计中需要考虑现有的促销和新的促销,而不用经常地重写控制器类代码。(2)该在线销售系统需要计算每个订单的税率,不同商品的税率及计算方式会有所区别。所以W公司决定在系统中直接调用不同商品供应商提供的税率计算类,但每个供应商的类提供了不同的调用方法。系统设计中需要考虑如果公司更换了供应商,应该尽可能少地在系统中修改或创建新类。项目组架构师决定采用设计模式来满足上述设计要求,并确定从当前已经熟练掌握的设计模式中进行选择,这些设计模式包括:适配器模式(Adapter)、构造器模式(Builder)、命令模式(Command

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功