【摘 要】本文主要讨论在负载均衡的前提下,探索html+ajax的结合的道路,寻求解决服务器负载均衡的方法。
【关键词】html ajax 负载均衡
在企业拥有两台或多台同等配置的服务器的情况已经司空见惯。
在负载均衡的思路下,多台服务器为对称方式,每台服务器都具有同等的地位,可以单独对外提供服务而无须其他服务器的辅助。通过负载分担技术,将外部发送来的请求按一定规则分配到对称结构中的某一台服务器上,而接收到请求的服务器都独立回应客户机的请求。
提供服务的一组服务器组成了一个应用服务器集群(cluster),并对外提供一个统一的地址。当一个服务请求被发至该集群时,根据一定规则选择一台服务器,并将服务转定向给该服务器承担,即将负载进行均衡分摊。
通过应用负载均衡技术,使应用服务超过了一台服务器只能为有限用户提供服务的限制,可以利用多台服务器同时为大量用户提供服务。当某台服务器出现故障时,负载均衡服务器会自动进行检测并停止将服务请求分发至该服务器,而由其他工作正常的服务器继续提供服务,从而保证了服务的可靠性。
上述的集群技术一般都用于web服务器、应用服务器等,而不是用于数据库服务器,即不是用于有共享的存储的服务。数据库服务器将涉及到加锁、回滚等一系列问题,要复杂的多。一般数据库服务器只是使用双机,其中一台工作,另一台备份。数据库的双机并行只用于大型数据库中。
常见的负载均衡实现的方法有以下几种:最简单的是通过dns,但只能实现简单的轮流分配,也不能处理故障。LocAlhoST如果是基于ms iis,windows 2003 server本身就带了负载均衡服务。但这一服务也只是轮流分配。 硬件方式,通过交换机的功能或专门的负载均衡设备可以实现。对于流量的分配可以有多种方式,但基本上都是应用无关的,与服务器的实际负载关系也不大。另外,设备的价格较贵(优点是能支持很多台服务器)。这种方式往往适合大流量、简单应用。 软件方式,通过一台负载均衡服务器进行,上面安装软件。这种方式比较灵活,成本相对也较低。另外一个很大的优点就是可以根据应用的情况和服务器的情况采取一些策略。这方面比较典型的软件产品,是富士通西门子公司的pcl sis负载均衡软件。
我们所要讨论的所谓负载均衡是除这几种以外的另一种方法,即用大家都比较熟悉的html技术和眼下炙手可热的ajax技术。
html,全称hypertext mark-up language——超文本标记语言。
普通的媒体记载信息的形式都是定义一个开头,然后以线性方式或时间的顺序进行到结尾。这种媒体包括电影、录音和录像带等,大多数的书本上的信息也是以这种形式组织的。
而在 www万维网,媒体的组织结构则完全不同,因为这里的信息的是以超媒体形式存在的,它的特点就是我们可以从中选择我们感兴趣的部分。一个很好的例子就是音乐激光唱盘,如果你想听第五首曲子就可以选择它并立即播放。这不同于录音带的使用,因为你必须先播放几次录音带你才能知道一首歌从哪里开始。
超媒体的概念应用于文本后,我们就有了超文本,现在你只要点击一个链接你就会看到新的内容或新的页面。如果你能获取世界上不同计算机上的文档的链接,那么你就可以体会到一个像蜘蛛网一样分布的信息世界,这里充满了交错的链接和网页,这就是我们知道的 www万维网,英文的原义是遍布世界的蜘蛛网。在万维网上,网页是存放在众多的 web服务器里的,这些服务器与国际互联网相连,我们通过浏览器就可以上网浏览这些网页。
万维网发展非常迅猛的原因之一就是所有的网页都是以同一格式编写的,这种格式或编写的语言就是html(hypertext markup language),即超文本标记语言。
ajax,全称asynchronous javascriptand xml——异步javascript和xml。
ajax不是一项技术。事实上它是几种各自发展的技术的有力集合。ajax包括:使用xhtml与css的标准表现(standards-based presentation); 使用dom(document object model)进行动态显示与交互; 使用xml and xslt 进行数据交换与操作; 使用xmlhttprequest进行异步数据传输; 使用javascript将所有这些绑在一起。
传统的web应用模型是这样工作的:界面中大部分的用户行为触发一次返回web服务器的http请求,服务器完成一些处理——接收数据,处理计算,再访问其它的数据库系统,最后返回一个html页面到客户端。这是一个老套的模式,自采用超文本作为web使用以来,一直都这样用,但看过《the elements of user experience》的读者一定知道,是什么限制了web界面没有桌面软件那么好用。
技术上,这种方法很有意义。但它并不有助于友好的用户体验。当服务器在做它的事情的时候,用户在做什么?不错,等待。而且是每进行一步操作,就要等待一次。
很明显,假如我们设计含有web表单的应用,我们不会让用户在那里空等(译注:用户提交表单之后,通常会返回一个含有相关信息的页面到客户端)。当加载一个界面时,为什么用户交互每次都要停下来,以等待服务器响应应用请求?为什么用户要经历应用与服务器之间的交互?
ajax有什么不同?
ajax应用通过在客户端与服务端之间引入一个中间层——ajax引擎(ajaxengine),改变了web交互“start-stop-start-stop”的规律。增加一个层看起来似乎降低了应用的响应性,但事实恰好相反。
浏览器通过加载一个ajax引擎,来取代加载一个web页。ajax引擎用javascript编写,通常
[1] [2] 下一页