




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
系统开发项目-概要设计说明书25/26********************建设项目*********************系统开发“***********”系统建设概要设计说明书*********有限公司2015.5版本v1.0文档审批修订记录日期版本编号简要说明著者审核者审核日期2015.5.5V1.0王**说明:“简要说明”主要是对修订原因和修订的内容进行简要说明
目录TOC\o"1-5"\h\z\u1引言 41.1编写目的 41.2背景 42系统总体设计 42.1需求规定 42.1.1系统集成建设 42.1.2系统功能设计 5网站栏目设计 5后台功能设计 52.1.3系统界面设计 72.1.4系统可扩展性设计 82.1.5系统性能设计 82.2运行环境 82.3基本设计概念 92.3.1系统网络拓扑图 92.4技术路线 92.4.1底层开发框架 92.4.2Web开发框架 10SpringMVC 10Struts1 12Struts2 142.4.3前台JavaScript框架 162.4.4数据持久层框架 17Hiberante 17MyBatis 19SpringDataJpa 20综述 213系统部署 214系统性能设计 214.1高效的数据算法 214.2负载均衡 214.3良好的接口设计 224.4低耗的磁盘IO 224.5细粒度的事务管理 224.6应用配置相关调优 234.7数据库性能设计 234.7.1索引控制 234.7.2SQL优化 234.8数据库高可用性设计 234.8.1设计原则 23分布性原则 23读写分离原则 23垂直分割原则 24水平分割原则 245系统出错设计 245.1出错信息 245.2补救措施 255.3系统维护设计 25
1引言1.1编写目的本文档基于《*********开发项目招标文件》和《*********开发项目开发合同》和《“*********”系统需求规格说明书》,进行“*********”系统开发项目的概要设计。通过编制本文档,明确本项目的整体架构和整体设计思想,并为系统的详细设计和技术实现提供指导和帮助。在下一阶段的详细设计中,程序设计员就可参考此概要设计报告,对系统进行详细设计。在以后的软件测试以及软件维护阶段也可参考此说明书,以便于了解在概要设计过程中所完成的各模块设计结构,或在修改时找出在本阶段设计的不足或错误,更好的完善和优化文档。1.2背景 *********建设是*********信息化建设的一项重要工作。待网站建设完成,将显著提升原*********各部门内计算机网络应用的水平,提升*********的办公效率及业务水平。充分考虑*********的实际工作情况、业务流程、网站建设的目标要求,在本次网站设计构建中,应始终坚持安全、便捷、切合实际工作的原则,有利于*********广大教职工的高效、安全及简单易用。根据*********建设的目标和业务需求,在充分分析*********现有通信网络基础上,构建*********网络,作为整个*********网运行的基础网,网站应能满足*********多项业务、高带宽应用的需求,因此*********网将建成一个承载多种业务的网络平台。2系统总体设计2.1需求规定2.1.1系统集成建设包括基础平台建设、网络设备、安全设备、服务器设备和系统软件集成。2.1.2系统功能设计网站应用系统开发,包括门户网站建设、后台管理系统建设。网站栏目设计网站栏目功能说明备注网站前台管理行业资讯展示行业内最新资讯信息企业展厅展示企业产品图片专家点评展示专家的点评信息活动展示以图文列表形式展示活动信息联系我们展示联系方式信息网站后台管理栏目内容管理各类文章的添加及管理广告及广告位管理广告的添加及管理联系我们和友情链接管理友情链接添加、编辑及联系我们的信息管理舆论监督管理舆论监督信息的添加及管理企业管理企业信息的添加及管理后台功能设计.1栏目内容管理进入栏目内容管理页面,点击栏目列表,出现栏目列表页,在此页面,可以新建文章。点击栏目名称,进入栏目内容页,所有文章内容以信息分页列表形式呈现,可对文章进行查询、编辑、删除操作。在文章信息分页列表中,可点击编辑按钮,点击按钮后,可在对文章内容进行编辑。文章内容包括:所属栏目、标题、信息来源、文章作者、外链、文章内容页配图、文章列表页图片、首页幻灯配图、首页幻灯配图描述、文章内容、文章排序。文章修改后,可直接发布。点击新建文章按钮,可在文章内容信息板块中新建文章,并可直接发布上线。.2广告及广告位管理在广告位管理中,分为广告位添加、广告位列表;广告位添加中,可新增广告位,新增广告位的内容是:所属栏目名称、广告位名称、广告位宽度、广告位高度、广告位描述。其中除广告位描述外,其他字段均是必填项;点击提交按钮后,广告位添加成功。点击重置按钮,则所有广告位信息重置。在广告位列表中,可新建广告位,同时将已建好的广告位以分页信息列表形式展示。可对已建好的广告位进行编辑、删除操作;在广告管理中,分为广告添加和广告列表;广告添加中,可添加广告,每条新增的广告只能对应一个广告位。所添加的内容是:所属栏目名称、所属广告位名称、广告名称、广告url、上传广告。其中上传广告需要上床一张广告图片。点击提交按钮后,广告添加成功。点击重置按钮,则所填写的广告信息被重置。在广告列表中,可新建广告,同时已经建好的广告将以分页信息列表的形式呈现。可对广告进行编辑和删除操作。.3联系我们和友情链接管理在友情链接中,分为友情链接列表和添加友情链接。在友情链接列表中,已添加好的友情链接将以分页信息列表的形式呈现。并可在此页面进行新建友情链接操作。可对信息列表进行编辑和删除操作。在添加友情链接中,需要填写的字段内容是:友情链接名称、友情链接图片、友情链接url、友情链接排序。其中除友情链接排序外,其他字段均是必填项。再联系我们中,点击联系我们列表,可展示出联系方式。可对联系方式进行编辑和删除。联系方式包括的字段有:公司名称、公司地址、邮箱、广告合作QQ、电话,所有字段均是必填项。.3舆情监督管理舆论管理分为舆论列表和添加舆论。在舆论列表中,可新增舆论。已添加的舆论内容以分页信息列表的形式呈现,在列表中,可对舆论内容进行编辑和删除操作。在添加舆论中,需要填写的字段包括:舆论标题、舆论内容、舆论排序。.4企业管理在企业管理中,分为企业列表和添加企业。在企业列表中可新增企业,已添加的企业信息内容将以分页信息列表的形式呈现,列表中的内容可进行编辑和删除操作。在添加企业中,需要填写的内容字段包括:企业名称、所属栏目名称、企业logo、企业展厅列表图片、企业url、企业关键字、是否推荐到首页、企业排序。在企业图片组管理中,分为企业图片组列表和添加企业图片组。在企业图片组列表中可新增企业图片,已添加的企业图片信息内容将以分页信息列表的形式呈现,列表中的内容可进行编辑和删除操作。在添加企业图片组中,需要填写的内容字段包括:所属企业名称、企业图片信息(企业图片、描述、url)。点击提交按钮后,添加成功。点击重置按钮,则所填写的信息被重置。2.1.3系统界面设计 系统的界面整体设计如下:1)页面内容:主题突出,站点定义、术语和行文格式统一、规范、明确,栏目、菜单设置和布局合理,传递的信息准确、及时。内容丰富,文字准确,语句通顺;专用术语规范,行文格式统一规范。2)导航结构:页面具有明确的导航指示,且便于理解,方便用户使用。3)技术环境:页面大小适当,能用各种常用浏览器以不同分辨率浏览;无错误链接和空链接;采用CSS处理,控制字体大小和版面布局。4)艺术风格:界面、版面形象清新悦目、布局合理,字号大小适宜、字体选择合理,前后一致,美观大方;动与静搭配恰当,动静效果好;色彩和谐自然,与主题内容相协调。2.1.4系统可扩展性设计本系统未来要接入“中国教育之声”平台,向自媒体和社交性网站方向发展,所以系统设计要求能够体现扩展性要求,以适应将来功能扩展的需求。2.1.5系统性能设计系统需要满足百万级用户量,上千同时并发,响应时间0.2秒内,保证系统稳定性、安全性、数据完整性等。2.2运行环境操作系统:LinuxWEB服务器:Apache数据库:MYSQL开发语言:PHP5浏览器:IE8.0+chrome30.0以上,及其他主流浏览器2.3基本设计概念2.3.1系统网络拓扑图2.4技术路线2.4.1底层开发框架PHP(外文名:HypertextPreprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,易于学习,使用广泛,主要适用于Web开发领域。优点:开放源代码所有的PHP源代码事实上都可以得到。免费性和其它技术相比,PHP本身免费且是开源代码。快捷性程序开发快,运行快,技术本身学习快。嵌入于HTML:因为PHP可以被嵌入于HTML语言,它相对于其他语言。编辑简单,实用性强,更适合初学者。跨平台性强由于PHP是运行在服务器端的脚本,可以运行在UNIX、LINUX、WINDOWS、MacOS下。效率高PHP消耗相当少的系统资源。图像处理用PHP动态创建图像,PHP图像处理默认使用GD2。且也可以配置为使用imagemagick进行图像处理。面向对象在php4,php5中,面向对象方面都有了很大的改进,php完全可以用来开发大型商业程序。专业专注PHP支持脚本语言为主,同为类C语言。缺点:对递归的不良支持许多PHP模块都不是线程安全的没有命名空间混乱的许可证缺少标准框架2.4.2Web开发框架SpringMVCSpringMVC属于SpringFrameWork的后续产品,已经融合在SpringWebFlow里面。Spring框架提供了构建Web应用程序的全功能MVC模块。使用Spring可插入的MVC架构,可以选择是使用内置的SpringWeb框架还可以是Struts这样的Web框架。通过策略接口,Spring框架是高度可配置的,而且包含多种视图技术,例如JavaServerPages(JSP)技术、Velocity、Tiles、iText和POI。SpringMVC框架并不知道使用的视图,所以不会强迫您只使用JSP技术。SpringMVC分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。优点:对覆盖绑定(overridingbinding)、验证(validation)等提供生命周期管理;清晰的角色划分:控制器(controller)、验证器(validator)、命令对象(commandobect)、表单对象(formobject)、模型对象(modelobject)、Servlet分发器(DispatcherServlet)、处理器映射(handlermapping)、试图解析器(viewresoler)等等。每一个角色都可以由一个专门的对象来实现;强大而直接的配置方式:将框架类和应用程序累都能作为JavaBean配置,支持跨多个context的引用;可适配、非侵入:可以根据不同的应用场景,选择何事的控制器子类(simple型、command型、from型、wizard型、multi-action型或者自定义),而不是一个单一控制器(比如Action/ActionForm)继承;可重用的业务代码:可以使用现有的业务对象作为命令或表单对象,而不需要去扩展某个特定框架的基类;可定制的handlermapping和viewresolution:Spring提供从最简单的URL映射,到复杂的、专用的定制策略。与某些webMVC框架强制开发人员使用单一特定技术相比,Spring显得更加灵活;灵活的model转换:在Springweb框架中,使用基于Map的键/值对来达到轻易的与各种视图技术集成;简单而强大的JSP标签库(SpringTagLibrary):支持包括诸如数据绑定和主题(theme)之类的许多功能。他提供在标记方面的最大灵活性;SpringBean的生命周期可以被限制在当前的HTTpRequest或者HTTpSession。准确的说,这并非SpringMVC框架本身特性,而应归属于SpringMVC使用的WebApplicationContext容器;可定制的本地化和主题(theme)解析:支持在JSP中可选择地使用Spring标签库、支持JSTL、支持Velocity(不需要额外的中间层)等等;可定制的绑定(binding)和验证(validation):比如将类型不匹配作为应用级的验证错误,这可以保证错误的值。再比如本地化的日期和数字绑定等等。在其他某些框架中,你只能使用字符串表单对象,需要手动解析它并转换到业务对象;与许多表示层技术/框架无缝集成:JSP/JSTL、Tiles、Velocity、FreeMarker、Excel、XSL、PDF等;SpringMVC完美支持Rest服务;便于测试——归功于IoC;性能和原生态JSP和Servlet相差无几;缺点:大量的XML配置文件;太过灵活——没有公共的父控制器;没有内置的Ajax支持;Struts1Struts是Apache软件基金会(ASF)赞助的一个开源项目。它最初是Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。它通过采用JavaServlet/JSP技术,实现了基于JavaEEWeb应用的MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品。Struts是一个灵活的基于标准的技术(如Javaservlet,控制层javabean,resourcebundle,和XML,以及各种ApacheCommons包、BeanUtils和链的责任。框架可以帮助您为您的应用程序创建一个可扩展的开发环境,基于出版标准和证明设计模式。优点:实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现;有丰富的tag可以用,Struts的标记库(Taglib)如能灵活动用,则能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点;页面导航,页面导航将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统个部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接受这个项目时,这种优势体现的更加明显;提供Exception处理机制;数据库链接池管理;支持l18N;缺点:转到展示层时,需要配置forward,每一次转到展示层,相信大多数都是直接转到JSP,而涉及到转向,需要配置forward,如果有十个展示层的JSP,需要配置诗词Struts,而且还不包括有时候目录、文件变更、需要重新修改forward,注意,每次修改配置之后,要求重新部署整个项目。而tomcat这样的服务器,还必须重新启动服务器,如果业务变更复杂频繁的系统,这样的操作简直不可想象;Struts的Action必须是Thread—safe方式,它仅仅允许一个实例去处理所有的请求。所有Action用到的所有的资源都必须统一同步,这个就引起了线程安全的问题;测试不方便,Struts的每个Action都用Web层耦合在一起,这样它的测试依赖于Web容器,单元测试也很难实现。不过有一个Junit的扩展工具StrutsTestCase可以实现它的单元测试;类型的转换Struts的FormBean把所有的数据都作为String类型,它可以使用工具Commins—Beanutils进行类型转化。但它的转化都是在Class级别,而且转化的类型是不可配置的。类型转化时的错误信息返回给用户也是非常困难的;对Servlet的依赖过强,Struts处理Action时必须要依赖ServletRequest和ServletResponse,所以它摆脱不来哦Serlvet容器;前端表达式语言方面,Struts集成了JSTL,所以它主要使用JSTL的表达式语言来获取数据,可是JSTL的表达式语言在Collection和索引属性方面处理显得很弱;对Action执行的控制困难,Struts创建一个Action,如果想控制它的执行顺序将会非常困难,甚至你要重新去写Servlet来实现你的这个功能需求;对Action执行前和后的处理。Struts处理Action的时候是基于Class的Hierarchies,很难在Action处理前和后进行操作;对事件支持不够,在Struts中,实际是一个表单Form对应一个Action类(或DispatchAction),换一句话说:在Struts中实际是一个表单只能对应一个事件,Struts这种事件方式称为applicationevent,applicationevent和componentsevent相逼是一种粗粒度的事件;Struts2Struts2是Struts的下一代产品,是在struts1和WebWork的技术基础上进行了合并的全新的Struts2框架。其全新的Struts2的体系结构与Struts1的体系结构差别巨大。Struts2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts2可以理解为WebWork的更新产品。虽然从Struts1到Struts2有着太大的变化,但是相对于WebWork,Struts2的变化很小。优点:在Action的实现方面:Struts1要求必须统一扩展自Action类,而Struts2中可以是一个普通的POJO;线程模型方面:Struts1的Action是单实例的,一个Action的实例处理所有的请求。Struts2的Action是一个请求对应一个实例(每次请求时都新new出一个对象),没有线程安全方面的问题;Servlet依赖方面:Struts1的Action依赖于ServletAPI,比如Action的execute方法的参数就包括request和response对象。这使程序难于测试。Struts2中的Action不再依赖于ServletAPI,有利于测试,并且实现TDD;封装请求参数:Struts1中强制使用ActionForm对象封装请求的参数。Struts2可以选择使用POJO类来封装请求的参数,或者直接使用Action的属性;表达式语言方面:Struts1中整合了EL,但是EL对集合和索引的支持不强,Struts2整合了OGNL(ObjectGraphNavigationLanguage);绑定值到视图技术:Struts1使用标准的JSP,Struts2使用“ValueStack”技术;类型转换:Struts1中的ActionForm基本使用String类型的属性。Struts2中使用OGNL进行转换,可以更方便的使用;Struts1中支持覆盖validate方法或者使用Validator框架。Struts2支持重写validate方法或者使用XWork的验证框架;Action执行控制的对比:Struts1支持每一个模块对应一个请求处理,但是模块中的所有Action必须共享相同的生命周期。Struts2支持通过拦截器堆栈为每一个Action创建不同的生命周期;缺点:安全性不够稳定;struts2标签会影响性能;OGNL设计不当会造成注入漏洞2.4.3前台JavaScript框架JQuery是继prototype之后又一个优秀的Javascript框架。它是轻量级的js库,它兼容CSS3,还兼容各种浏览器(IE6.0+,FF1.5+,Safari2.0+,Opera9.0+),jQuery2.0及后续版本将不再支持IE6/7/8浏览器。JQuery使用户能更方便地处理HTML(标准通用标记语言下的一个应用)、events、实现动画效果,并且方便地为网站提供AJAX交互。JQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。JQuery能够使用户的html页面保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需定义id即可。JQuery是一个兼容多浏览器的javascript框架,核心理念是writeless,domore(写得更少,做得更多)。jQuery在2006年1月由美国人JohnResig在纽约的barcamp发布,吸引了来自世界各地的众多JavaScript高手加入,由DaveMethvin率领团队进行开发。如今,JQuery已经成为最流行的javascript框架,在世界前10000个访问最多的网站中,有超过55%在使用JQuery。JQuery是免费、开源的,使用MIT许可协议。JQuery的语法设计可以使开发者更加便捷,例如操作文档对象、选择DOM元素、制作动画效果、事件处理、使用Ajax以及其他功能。除此以外,JQuery提供API让开发者编写插件。其模块化的使用方式使开发者可以很轻松的开发出功能强大的静态或动态网页。优点:动态特效;AJAX;通过插件来扩展;方便的工具-例如浏览器版本判断;渐进增强;链式调用;众多插件资源;性能支持比较好;多浏览器支持,支持InternetExplorer6.0+、Opera9.0+、Firefox2+、Safari2.0+、Chrome1.0+(在2.0.0中取消了对InternetExplorer6,7,8的支持);缺点:不能向后兼容;插件兼容性;2.4.4数据持久层框架HiberanteHibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。 优点:对象/关系数据库映射(ORM);它使用时只需要操纵对象,使开发更对象化,抛弃了数据库中心的思想,完全的面向对象思想;透明持久化(persistent)带有持久化状态的、具有业务功能的单线程对象,此对象生存期很短。这些对象可能是普通的JavaBeans/POJO,这个对象没有实现第三方框架或者接口,唯一特殊的是他们正与(仅仅一个)Session相关联。一旦这个Session被关闭,这些对象就会脱离持久化状态,这样就可被应用程序的任何层自由使用。事务Transaction应用程序用来指定原子操作单元范围的对象,它是单线程的,生命周期很短。它通过抽象将应用从底层具体的JDBC、JTA以及CORBA事务隔离开。某些情况下,一个Session之内可能包含多个Transaction对象。尽管是否使用该对象是可选的,但无论是使用底层的API还是使用Transaction对象,事务边界的开启与关闭是必不可少的;它没有侵入性,即所谓的轻量级框架;对数据库移植性支持很好;提供一级缓存和二级缓存;提供简洁的HQL编程;提供和常见第三方缓存插件集成;提供和常见第三方数据库连接池插件集成;极高的开发效率;缺点:对象持久化会影响一些执行的性能;配置数据库关系到对象比较复杂;对批量操作数据支持不好;MyBatisMyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(PlainOldJavaObjects,普通的Java对象)映射成数据库中的记录。每个MyBatis应用程序主要都是使用SqlSessionFactory实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。SqlSessionFactoryBuilder可以从一个xml配置文件或者一个预定义的配置类的实例获得。用xml文件构建SqlSessionFactory实例是非常简单的事情。推荐在这个配置中使用类路径资源(classpathresource),但你可以使用任何Reader实例,包括用文件路径或file://开头的url创建的实例。MyBatis有一个实用类Resources,它有很多方法,可以方便地从类路径及其它位置加载资源。 优点:易于上手和掌握;sql写在xml里,便于统一管理和优化;解除sql与程序代码的耦合;提供映射标签,支持对象与数据库的orm字段关系映射;提供对象关系映射标签,支持对象关系组建维护;提供xml标签,支持编写动态sql;良好的执行性能;灵活的ORM封装,可以选择几个字段进行返回赋值;缺点:sql工作量很大,尤其是字段多、关联表多时,更是如此;sql依赖于数据库,导致数据库移植性差;由于xml里标签id必须唯一,导致DAO中方法不支持方法重载;字段映射标签和对象关系映射标签仅仅是对映射关系的描述,具体实现仍然依赖于sql;DAO层过于简单,对象组装的工作量较大;支持级联更新、级联删除;编写动态sql时,不方便调试,尤其逻辑复杂时;提供的写动态sql的xml标签功能简单,编写动态sql仍然受限,且可读性低;若不查询主键字段,容易造成查询出的对象有“覆盖”现象;参数的数据类型支持不完善;(如参数为Date类型时,容易报没有get、set方法,需在参数上加@param)多参数时,使用不方便,功能不够强大;(目前支持的方法有map、对象、注解@param以及默认采用012索引位的方式)缓存使用不当,容易产生脏数据;SpringDataJpa SpringDataJpa是符合JPA(JavaPersistenceAPI)规范的基于Hibernate构建的优秀的ORM数据持久化框架,他是SpringData项目的子项目,这使其更容易构建Spring-powered使用数据访问技术的应用程序。优点:基于Hiberante构建,继承了Hiberante很多优秀的特性;满足JPA规范标准,有良好的可持续发展性;按照SpringDataJpa规范只需定义接口即可,不需编写实现类,极大的提高了开发效率;采用SpringScheme配置减少了配置文件编写;缺点:基于Hibernate构建,同时也存在Hibernate的一些缺点;按照SpringDataJpa规范定义接口实现时容易出错;关联多表查询支持不好;技术文档不够全面;综述 综合以上三个最成熟使用最多的三个数据持久层框架的优点和缺点,并考虑到本系统实际架构情况,我们决定采用基于最成熟的Hibernate框架构建的SpringDataJpa框架进行数据持久化;3系统部署web服务器与应用服务器在部署上可以采用灵活的策略,既可以独立安置web服务器,也可以使用weblogic自带的http服务。web服务器起到前端代理和转发http请求的作用,为应用服务器分担并发请求的负载,同时屏蔽对应用服务器的直接访问,保护应用服务器的安全。此外,还可以将系统中的静态内容放置在web服务器上,如静态页面,图片,样式表,js文件等,将对这些静态内容的访问负载转移到web服务器来承担。4系统性能设计4.1高效的数据算法针对每项数据算法,以及数据类型的选择,经过严格测试,从优择选以最优算法,以及数据类型。4.2负载均衡系统遵循了可伸缩性原则,保障可横向扩展,整体扩展依赖于中间件,保证系统高可用性。负载均衡模式是指采用多个相似功能的组件一起构成负载均衡集,并且通过不断地在他们间分配、均衡工作载荷,以实现期望的吞吐能力和响应性能。如果需要支持更多的工作载荷,可以向负载均衡集中添加更多的组件或设备。负载均衡组件模式可以显著地提高可用性,当一个或多个参与负载均衡的组件因为失效或者维护等原因不可使用时,整个系统仍然可以使用。系统容量的损失取决于该组件承担的负载的比例。采用负载均衡组件模式后,系统的性能受到少量的负面影响,因为负载均衡组件需要确定如何分配请求。但是,系统的伸缩性得到了显著的改善。通过向负载均衡集中添加新的组件,就可以方便地增加系统的容量。负载均衡组件能够确保向新添加的组件分配合理的请求份额。负载均衡组件方案也会显著的增加成本,但通常要比活动冗余组件方案节省成本。因为购买多个中等容量的设备的代价要小于购买一个大容量的设备。可见活动冗余组件模式和负载均衡组件模式都提高了系统的可用性,同时,负载均衡组件模式还具有更好的伸缩性。因此,通常情况下,负载均衡模式是更好的选择。即使如此,某些情况下,活动冗余组件方案可能是唯一的选择。例如接入Internet的最外层的交换机就没有办法使用负载均衡组件模式,除非接入服务供应商已经提供了外部的负载均衡器。在确定系统逻辑架构的过程中,我们通常要权衡是采用活动冗余组件模式还是采用负载均衡组件模式。如果同时满足下述四个条件,活动冗余组件模式是较好的选择,包括:单个组件如果能够足够提供长期的峰值负载容量;单个组件的价格比较便宜,使得活动冗余组件模式的成本比负载均衡组件模式的成本更低;单个组件本身的可靠性很高,组件维护也相当方便快捷;组件故障引致的后果不是特别严重。综合上述评估原则,在B/S应用的基础设施中通常对交换机和负载均衡器采用活动冗余组件模式,对Web服务器和应用服务器采用负载均衡组件模式。4.3良好的接口设计接口经过严格设计,使接口位最优,避免大量创建类,使整个系统最优运行。4.4低耗的磁盘IO针对所有磁盘IO操作采用最低限度使用IO策略,针对某些高频使用数据类型存储到缓存中,尽量避免针对磁盘IO操作。应用逻辑通过Cache技术直接访问装载在内存的配置数据,降低系统对磁盘的访问频率,提高系统的运行效率。4.5细粒度的事务管理整体数据访问事务,通过良好设计,封装为细粒度事务,从而避免了长事务的增长,导致的性能瓶颈。且针对事务锁机制,系统将通过高压测试调优,整体设计尽量避免锁等待瓶颈。4.6应用配置相关调优该系统业务系统主要调优点如下:并发线程数据连接池内存回收策略队列数量等参数4.7数据库性能设计4.7.1索引控制系统数据模型中,索引经过严格筛选,避免某表多索引造成的写操作效率低下。4.7.2SQL优化系统中对所有SQL语句均通过高并发的压力测试并调优,整体语句完全通过测试且数据库调为可优化语句。且整体系统中避免冗余连接,在游标控制中完全采用软分析。4.8数据库高可用性设计4.8.1设计原则分布性原则整体数据库采用分布式技术,从主机角度以及应用角度等采取分布式技术。保障数据库高效运行。读写分离原则读写分离原则,主要指在A数据库中写入数据,然后把写入的数据同步到多节点。而其它节点保障数据库读取应用。如此可将应用的负载分布在多个不同的数据库节点上面。如果写的数据库失败,可以
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国芝麻油行业市场发展现状调研及投资趋势前景分析报告
- 2025年度私人车位租赁及车位租赁市场推广服务合同
- 2025年上海链家租赁市场租赁保证金监管服务合同
- 度假村装饰工程合同
- 2025年度企业对赌协议合同-战略合作风险防控与业绩对赌
- 2025年度体育场馆租赁无偿使用合作协议
- 书推广服务合同范本
- 2025年度养老护理服务聘用护工协议书
- 2025年度互联网金融平台资金质押合同模板
- 2025年度文化创意产业股份发行合作协议
- 乐理知识考试题库130题(含答案)
- 前言 马克思主义中国化时代化的历史进程与理论成果
- 管道吹扫、试压检验批质量验收记录表
- 数控铣床(加工中心)编程与操作完整版课件
- 感动中国人物-于敏
- 《中国特色社会主义法治理论》复习题集及解析共20篇
- 融资租赁租金计算表
- 数据结构英文教学课件:Chapter 5 Recursion
- 《中国—东盟自由贸易区概论》新版
- 降低钻孔灌注桩混凝土充盈系数QC
- 华中数控车床编程及操作PPT课件
评论
0/150
提交评论