企业应用系统架构优化方法
企业应用系统架构优化方法
系统优化是一个全面而复杂的工作,很难通过某一方面的提升而获得很好的效果,也很难在一朝一夕完成系统的全面优化,每个系统都有其特性,需要综合分析综合考虑才能获得比较好的效果。 我下面为大家整理了一些企业应用系统架构优化的方法,欢迎阅读参考:
1 实现动静分离
所谓“动静”分离,就是将静态资源如、CSS、Js等和动态资源如JSP、Servlet等进行分开的处理,通过使用不同的服务器,从而加快页面的响应速度,这是目前互联网应用最常用的方式之一,但是在企业应用端相对应用较少。
动静分离至少有两个方面的好处,一是提高了静态资源的处理速度,因为应用服务器处理静态资源的速度—般都不如专业的web服务器,第二个好处就是减少了应用服务器的负担,应用服务器专注于处理动态请求,这对系统的稳定运行是有很大的帮助的。
要实现动静分离,有两种方式,一种是在加载静态资源的HTML语言中,将地址指定到不同的IP/域名上,实现彻底的分离。这种方式需要在设计之初进行考虑,并不适合优化项目,因为这种修改会产生很大的工作量。第二种方式是通过分发器,拦截对静态资源的访问,将动态资源转发给后端的应用服务器,实现动静分离。这种方式的好处是不需要改动现有的代码,仅需要做部署方式故调整,增加web服务器进行静态资源的处理。示意图如下:
目前转发器比较多,既有老牌的Apache Web Server、有性能卓越的Zeus,也有目前如日中天的Nainx,不同的项目可以按照各自的需求进行选择。
2 使用缓存技术
缓存技术是巨型项目、超大型项目中最重要的技术,范围也比较广,从前端的页面、应用中的数据、数据库本身等均可以进行缓存,每个方面使用的技术也千差万别。使用缓存可以带来两个方面的好处,一是缓存的数据可以被高速加载,从内存中读取数据比通过数据库或磁盘读取具有更好的效率;二是最重要的,减少了数据库服务器的压力,有利于数据库的稳定,数据库可以使用更多的资源进行查询、统计等工作,有利于提高系统的整体运行速度。对于大中型应用而言,应用中的数据缓存和数据库端的缓存是应该被考虑的。数据库端的缓存在本文数据库章节中进行描述,本节描述应用中数据的缓存。
要使用缓存,首先需要明确缓存的'内容。一般优化项目不建议做全部数据缓存,或者使用内存数据库之类的技术,这种修改工作量巨大,由此带来的安全性、稳定性、数据的一致性都可能存在较大的隐患。所以,缓存的内容需要有所选择,一般的说,应该根据数据的数据量、被读取的次数、增加/更新频率进行选择。如果数据较少、增加/更新频率非常低,那么应该考虑直接缓存在应用服务器端,只有对于重要性较高、读取次数较多、增加/更新频率相对适中的数据,才适合使用独立缓存。 确定缓存的内容之后,就应该确定缓存的方式。对于缓存于应用服务器端的资源,一般选择KEY-ALUE(OBJECT)进行缓存。对于独立缓存,其内容也KEY-VALUE的格式进行存储(如果使用内存数据库实现缓存,那么存储的就是与数据库相同的信息),VALUE可以选择SON或者Java Object,其中JSON占用空间较少,读取的网络流量较少,读取之后需要进行转换为Java对象;JavaXCN占用空间较大,读取的网络流量会较多,读取之后无需进行转化(前提是要求该对象已经系列化),不同系统可以各自特点进行选择。
对于独立缓存,接下来的工作是选择缓存服务器,缓存服务器选择需要具有一定的原则:是否满足已经确定的缓存方式、对操作系统要求如何、稳定性如何、是否支持分布式、是否支持多节点热备、客户端(即JAVA调用接口)接口是否支持漂移(一个节点崩溃是否能转移到另外的节点)、客户端是否高效等等。从目前业界来看,memcached、redis都是应用比较广泛的缓存服务器。
选择完缓存服务器之后,就需要对系统的代码进行一定的改造。改造的内容就是将通过数据库读取的信息改为从缓存服务器获得,而对数据的保存、修改、删除操作,既要操作数据库上的数据,也需要对缓存服务器的信息进行更新,如下图所示:
由于是对系统的优化,那么系统中已经具有很多数据且并未进入缓存,因此还需要将缓存服务器中的数据进行初始化。有两种方式来进行,一种方式是直接将数据库中的数据一次性加载到缓存服务器,另外一种方式是在修改Load数据的方式,先从缓存服务器获取,如果没有,则从数据库获取,然后同步到缓存服务器上。对于优化项目,建议使用第二种方式。第二种方式一个额外的好处就是当缓存服务器全部不可用时,系统也能提供完整的服务。
3 使用异步日志记录
对于企业应用而言,对用户的操作的记录是很重要的,在系统出现某些问题的时候,可以通过日志进行数据恢复。一般系统要么没有进行记录,要么使用数据库进行同步记录。这部分数据会比较庞大,少则百万级,多则数亿,并且随着使用量的增加而逐渐增加。这些表属于使用率最高的表之一,在这些表上进行经常性数据插入,有可能会变成系统的噩梦。
为了解决这个问题,引入异步日志记录,是较为理想的选择。通过在web容器中增加过滤器,拦截用户的请求,然后将用户的请求和表单数据封装为JSON格式的数据,采用异步方式发送到NoSQL数据库,需要恢复的时候,通过对JSON数据进行还原。这种方式有如下好处:
1)不需要改动现有代码而进行了用户操作记录;
2)由于采用异步模式,几乎不会增加用户操作的时间;
3)采用NoSQL+JSON存储,不用为每一类操作特别设置特定的表结构,修改简单。
目前的NoSQL数据库也逐渐显露头角,根据DB Engines在今年10月发布的数据库排名中,MongoDB的NoSQL服务器已经跃居第七位,因此NoSQL服务器目前推荐使用MongoDB。
;通常将采用英特尔处理器的服务器称为IA(Intel Architec-ture)架构服务器,由于该架构服务器采用了开放式体系,并且实现了工业标准化技术和得到国内外大量软硬件供应商的支持,在大批量生产的基础上,以其极高的性能价格比而在全球范围内,尤其在我国得到广泛的应用。2000年国内IA架构服务器供应商前三位是惠普、IBM、浪潮。
10指令集
(1)CISC指令集
CISC指令集,也称为复杂指令集,英文名是CISC,(Complex Instruction Set Computer的缩写)。在CISC微处理器中,程序的各条指令是按顺序串行执行的,每条指令中的各个操作也是按顺序串行执行的。顺序执行的优点是控制简单,但计算机各部分的利用率不高,执行速度慢。其实它是英特尔生产的x86系列(也就是IA-32架构)CPU及其兼容CPU,如AMD、VIA的。即使是现在新起的X86-64(也被成AMD64)都是属于CISC的范畴。
要知道什么是指令集还要从当今的X86架构的CPU说起。X86指令集是Intel为其第一块16位CPU(i8086)专门开发的,IBM1981年推出的世界第一台PC机中的CPU—i8088(i8086简化版)使用的也是X86指令,同时电脑中为提高浮点数据处理能力而增加了X87芯片,以后就将X86指令集和X87指令集统称为X86指令集。
虽然随着CPU技术的不断发展,Intel陆续研制出更新型的i80386、i80486直到过去的PII至强、PIII至强、Pentium 3,最后到今天的Pentium 4系列、至强(不包括至强Nocona),但为了保证电脑能继续运行以往开发的各类应用程序以保护和继承丰富的软件资源,所以Intel公司所生产的所有CPU仍然继续使用X86指令集,所以它的CPU仍属于X86系列。由于Intel X86系列及其兼容CPU(如AMD Athlon MP、)都使用X86指令集,所以就形成了今天庞大的X86系列及兼容CPU阵容。x86CPU目前主要有intel的服务器CPU和AMD的服务器CPU两类。
(2)RISC指令集
RISC是英文“Reduced Instruction Set Computing ” 的缩写,中文意思是“精简指令集”。它是在CISC指令系统基础上发展起来的,有人对CISC机进行测试表明,各种指令的使用频度相当悬殊,最常使用的是一些比较简单的指令,它们仅占指令总数的20%,但在程序中出现的频度却占80%。复杂的指令系统必然增加微处理器的复杂性,使处理器的研制时间长,成本高。并且复杂指令需要复杂的操作,必然会降低计算机的速度。基于上述原因,20世纪80年代RISC型CPU诞生了,相对于CISC型CPU ,RISC型CPU不仅精简了指令系统,还采用了一种叫做“超标量和超流水线结构”,大大增加了并行处理能力。RISC指令集是高性能CPU的发展方向。它与传统的CISC(复杂指令集)相对。相比而言,RISC的指令格式统一,种类比较少,寻址方式也比复杂指令集少。当然处理速度就提高很多了。目前在中高档服务器中普遍采用这一指令系统的CPU,特别是高档服务器全都采用RISC指令系统的CPU。RISC指令系统更加适合高档服务器的操作系统UNIX,现在Linux也属于类似UNIX的操作系统。RISC型CPU与Intel和AMD的CPU在软件和硬件上都不兼容。
目前,在中高档服务器中采用RISC指令的CPU主要有以下几类:PowerPC处理器、SPARC处理器、PA-RISC处理器、MIPS处理器、Alpha处理器。
文件服务器、数据库服务器、邮件服务器。
文件服务器是指在计算机网络中,以文件数据的存储与共享为主要功能的服务器,负责中央存储和数据文件管理,处于同一网络环境。数据库服务器因为数据文件的重要性及数据的文件都较大,数据库服务器一般是指运行在网络中的一台或多台服务器和数据库管理系统软件,邮件服务器。
文件服务器(Fileserver),又称档案伺服器,是指在计算机网络环境中,所有用户都可访问的文件存储设备,是一种专供其他电脑检索文件和存储的特殊电脑。文件服务器通常比一般的个人电脑拥有更大的存储容量,并具有一些其他的功能,如磁盘镜像、多个网络接口。
常见的服务器架构有以下三种:
服务器集群架构:
服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器。集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行。
服务器负载均衡架构:
负载均衡
(Load
Balancing)
建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
分布式服务器架构:
所谓分布式资源共享服务器就是指数据和程序可以不位于一个服务器上,而是分散到多个服务器,以网络上分散分布的地理信息数据及受其影响的数据库操作为研究对象的一种理论计算模型服务器形式。分布式有利于任务在整个计算机系统上进行分配与优化,克服了传统集中式系统会导致中心主机资源紧张与响应瓶颈的缺陷,解决了网络GIS
中存在的数据异构、数据共享、运算复杂等问题,是地理信息系统技术的一大进步。
这个三种架构都是常见的服务器架构,集群的主要是IT公司在做,可以保障重要数据安全;负载均衡主要是为了分担访问量,避免临时的网络堵塞,主要用于电子商务类型的网站;分布式服务器主要是解决跨区域,多个单个节点达到高速访问的目前,一般是类似CDN的用途的话,会采用分布式服务器。
0条评论