




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
异步处理1 介绍异步处理就是按照不同步的程序处理问题。异步处理与同步处理是对立的,而产生他们的是多线程或者多进程。异步处理的好处就是提高设备使用率,从而在宏观上提升程序运行效率,但是弊端就是容易出现冲突操作和数据脏读。同步则刚好相反,同步是一种降低设备使用率,在宏观上降低了程序的运行效率,而且很多系统或者是运行环境在处理同步的时候为了维持同步的有效性也会付出许多格外的系统资源开支,对性能影响相当大。但是同步保证了程序运行的正确性与数据的完整性。1.1 多线程和异步处理的异同多线程和异步处理两者都可以达到避免调用线程阻塞的目的,从而提高软件的可响应性。甚至有些时候我们就认为多线程和异步操作是等同的概念。但是,多线程和异步操作还是有一些区别的。而这些区别造成了使用多线程和异步操作的时机的区别。1.1.1 异步处理的本质所有的程序最终都会由计算机硬件来执行,所以为了更好的理解异步处理的本质,我们有必要了解一下它的硬件基础。 熟悉电脑硬件的朋友肯定对DMA这个词不陌生,硬盘、光驱的技术规格中都有明确DMA的模式指标,其实网卡、声卡、显卡也是有DMA功能的。DMA就是直 接内存访问的意思,也就是说,拥有DMA功能的硬件在和内存进行数据交换的时候可以不消耗CPU资源。只要CPU在发起数据传输时发送一个指令,硬件就开 始自己和内存交换数据,在传输完成之后硬件会触发一个中断来通知操作完成。这些无须消耗CPU时间的I/O操作正是异步操作的硬件基础。所以即使在DOS 这样的单进程(而且无线程概念)系统中也同样可以发起异步的DMA操作。1.1.2 线程的本质线程不是一个计算机硬件的功能,而是操作系统提供的一种逻辑功能,线程本质上是进程中一段并发运行的代码,所以线程需要操作系统投入CPU资源来运行和调度。1.1.3 异步处理的优缺点优点:1,前端进程(通常是Web页)响应更快,客户会认为这是一个运行速度较快的系统。2,提供了用来提出负载平衡请求的简单方式。3,提供了容错能力4,异步处理无须额外的线程负担,并且使用回调的方式进行处理,在设计良好的情况下,处理函数可以不必使用共享变量(即使无法完全不用,最起码可以减少 共享变量的数量),减少了死锁的可能。缺点:当然异步处理也并非完美无暇。编写异步处理的复杂程度较高,程序主要使用回调方式进行处理,与普通人的思维方式有些 初入,而且难以调试。 支持断续连接的系统 其中的每个优点都是通过异步模式对应用程序中不同部分进行去耦处理的结果。要让某个进程具有异步特点,就必须建立某种形式的队列来保存挂起的请求,该进程中的每一个步骤都只能与这些中间队列进行通信,而不能直接与其上一步或下一步进行通信。图 1。 利用队列实现去耦操作 更快的响应时间第一个优点,即更快的响应时间,是由于客户(可能是正在访问Web 站点的某个人,也可能是另一个公司的计算机系统)不需等待任何定单处理过程开始进行的结果。在同步系统中,用户在整个操作(例如提交定单)结束之后才得到响应。图 2。 同步操作的累积滞后时间在异步系统中,提交定单之后,客户的延迟时间仅仅是将该定单传递给进程中的下一步所花费的时间。在某种程度上,这样的更快响应时间只是一种假象,因为客户收到响应时该进程并未真正完成,但客户不需要再等待了,这是重要的优点。图 3。 在异步模式中滞后时间缩短 负载平衡在接收高流量通信的系统中,人们常常希望将负载分布到多台服务器上,并且还希望根据需要调整这种分布以适应计算机数量的变化。有多种不同的方法处理系统的负载平衡问题,但异步处理所要求的基础体系结构能够在不增加额外软件的情况下轻松地提供灵活的负载平衡能力。如上所述,在异步系统中,需要某种形式的中间存储或队列来存储步骤之间的请求。当一份定单完成了某步骤中的进程工作时,它就被放到队列中等待进行下一步进程。当下一个步骤准备好处理另一份定单时,它就从这种挂起请求列表中抓取一份定单。要完成这样的系统中负载平衡的实施,只需要增加计算机的数量,由它们处理挂起列表中对步骤 B 的请求。 图 4。 在处理步骤 B 的节点群集之间实现负载平衡采用中间队列之后,在负载平衡和可伸缩性方面都获得了很大的灵活性。在该系统的前端或后端都可以放置任意数量的计算机,而且这种灵活性适应于任何一个进程步骤。可以在每一个步骤中使用适当数量的硬件对系统的性能进行微调,也可以在一台计算机上将多个步骤结合在一起进行处理。 容错能力异步体系结构可以让系统具有容错能力,这样,即使在进程中出现中断,整个系统也不会崩溃。对灵活的负载平衡提供支持的功能同时也就是对容错能力提供支持的功能。如果某个软件或硬件故障删除了某个进程步骤,请求执行该步骤的那些挂起请求就在队列中等候直至该服务被恢复。这对进程中先前的步骤并不产生什么实际的影响,尽管总体进程时间可能由于故障而延长。如果遵循了上一节关于负载平衡所讨论的技术,很可能仅仅减缓某一步骤的进程,但并不会停止。同样的功能也可以通过使用群集方式来提供;群集可以在不进行任何负载平衡工作的情况下提供故障转移能力。图 5。 异步系统能够容忍一个或多个节点出现故障在负载平衡的系统中,处理同一步骤的其他服务器可以继续从队列中截获请求;如果各服务器都已经以接近峰值的状态运行,整个系统的性能将下降。注意 尽管采用请求队列可以提供容错能力,但队列本身可能成为关键的故障点。用于确保这些队列可靠性的方法依赖于实施队列时所采用的特定技术,但一般都涉及故障转移群集以及将信息写入某个永久性的存储设备中,例如写入数据库中。 断续连接的系统这种使异步系统具有容错能力的行为也同样能够让异步系统在无需始终连接所有工作流组成部分的情况下正常运行。在异步系统中,工作流中的某个阶段可能由业务合作伙伴来进行处理。而系统与合作伙伴的系统之间的连接有可能是间断的,或者仅在需要时才连接。因此,异步功能可以将不可靠通信链接的影响降至最低程度,而且还可以实现更经济的系统操作,因为它将通信资源的占用减至最少。在断续连接的系统中,某个合作伙伴可以连接工作流过程并将一个或多个请求置入工作流过程中排队,也可以接收某一具体步骤的处理结果并随后在自己的系统中进行处理。异步处理方式让系统之间相互独立;如果系统 A 与系统 B 能够在同一时刻相互连接,那很好;但如果不能在同一时刻连接,它们以后也能够进行通信而不会有任何麻烦,因为信息会被存储起来,直至与接收者接通。1.1.4 多线程的优缺点优点:多线程的优点很明显,线程中的处理程序依然是顺序执行,符合普通人的思维习惯,所以编程简单。缺点:但是多线程的缺点也同样明显,线程的使用(滥用)会给系统带来上下文切换的额外负担。并且线程间的共享变量可能造成死锁的出现。1.1.5 适用范围在了解了线程与异步操作各自的优缺点之后,我们可以来探讨一下线程和异步的合理用途。我认为:当需要执行I/O操作时,使用异步处理比使用线程+同步 I/O操作更合适。I/O操作不仅包括了直接的文件、网络的读写,还包括数据库操作、Web Service、HttpRequest以及。net Remoting等跨进程的调用。而线程的适用范围则是那种需要长时间CPU运算的场合,例如耗时较长的图形处理和算法执行。但是往往由于使用线程编程的简单和符合习惯,所以很多朋友往往会使用线程来执行耗时较长的I/O操作。这样在只有少数几个并发操作的时候还无伤大雅,如果需要处理大量的并发操作时就不合适了。图 6。 使用中间队列能够支持断续连接的系统而不需要任何专门编程断续连接的系统引入它们自己的一套体系结构决策,包括连接的频率、在连接时期之间对请求进行批处理、处理失败的连接尝试,等等。需要这种系统的常见场合是,必须与某个外部合作伙伴打交道以处理付款或处理定单实现;对于需要采用拨号连接而并不采用网络链接的所有情况,也需要这种系统。由于支持了断续连接,在资源总可以获得但连接数量受到限制的情况下,系统可以将对资源的占用减少到最低程度;限制连接数量的原因可能是许可证、配置或系统容量方面的限制例如数据库、FTP 服务器以及带有服务广告协议 (SAP) 等其他后端系统的会话。1.2 同步和异步的区别同步:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。异步:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。对于软件上,同步是指一个进程/线程执行一个操作后,等待另一个进程/线程的动作后在继续,如同两个进程按一定规则,你等等我我等等你一起走;异步是说一个进程作了一个操作后,不用等待另一进程的结果就继续向下进行,两个进程的事件上没有同部的关系。2 AJAX在 Web中的异步交互随着 Internet应用的快速发展 ,用户对 Web应用具有实时动态处理交互信息的能力提出了更高要求。 传统的 Web应用 ,在服务器端技术方面投入了太多的时间 ,而在 Web用户界面对用户快速响应方面却投入不足。当服务器在处理数据的时候 ,用户则处于等待的状态 ,每一步操作都需要等待 ,等待服务器响应、 等待屏幕刷新、 等待请求返回和生成新的页面。这种方式导致用户界面的响应速度很慢 ,会使用户越来越没有耐心。而AJAX可以构建更为动态和响应更灵敏的Web应用程序。该方法的关键在于对浏览器端的 JavaScript、DHTML和与服务器异步通信的组合 ,它直接从浏览器与后端服务进行通信。通过 AJAX,可以使得客户端得到丰富的应用体验及交换操作 ,而用户不会感觉到有网页提交或刷新的过程 ,页面也不需要被重新加载 ,应用的数据交换都被隐藏 ,使应用程序更加自然和响应灵敏 ,从而提升用户的浏览体验。2.1 基于 AJAX的 Web应用模型与传统Web应用模型的比较AJAX是 Asynchr onous JavaScri p t and XML的缩写 ,即异步 JavaScript和 XML。 它并不是一项单独的技术 ,而是由XHT ML和 CSS、DOM、XML和 XST L、XMLHtt pRequest、JavaScri p t等若干项技术按照一定的方式组合在一起 ,在相互协作中发挥出更加强大的作用。图1是 AJAXWeb应用模型与传统模型的比较。传统的 Web应用允许用户填写表单 ( For m) ,当提交表单时就向Web服务器发送一个 HTTP请求。服务器在接收到请求之后进行一些业务逻辑处理 ,如保存数据等 ,然后向客户端返回一个新的 HTM页面。每次应用的交互都需要向服务器发送请求 ,服务器在处理数据时 ,用户处于等待状态 ,这样 ,应用的响应时间就依赖于服务器的响应时间 ,这导致了用户界面的响应比本地应用慢得多 ,而请求和返回的两个页面中大部分的 HT ML代码往往是相同的 ,因此 ,这个做法还浪费了许多带宽。与此不同 ,AJAX应用可以仅向服务器发送并取回必需的数据 ,它使用 S OAP或其它一些基于 XML的 Web Service接口 ,并在客户端采用 JavaScri p t处理来自服务器的响应。因为在服务器和浏览器之间交换的数据大量减少 ,结果就能体会到响应更快的应用 ,同时很多的处理工作可以在发出请求的客户端机器上完成 ,所以 Web服务器的处理时间也减少了。AJAX应用模型通过在用户和服务器之间引入一个AJAX引擎 ,这个引擎负责绘制用户界面以及与服务器端通讯。 AJAX引擎允许用异步的方式实现用户与程序的交互 ,不用等待服务器的通讯 ,所以用户再不用打开一个空白窗口 ,看到等待光标不断地转 ,等待服务器完成后再响应。传统的 Web应用通常要产生一个 HTTP请求的用户动作 ,现在通过 JavaScri p t调用 AJAX引擎来代替 ,任何用户动作的响应不再要求直接传到服务器。例如简单的数据校验、 内存中的数据编辑 ,甚至一些页面导航等 ,引擎自
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 出口业务课件
- 出入量课件教学课件
- 术后抗凝策略研究-洞察及研究
- 党员考试试题回答题目及答案
- 2025物流仓储合同(示范文本)
- 冲压机安全培训课件
- 2025物流配送服务合同
- 2025股权质押合同范本
- 情感智能教育工具-洞察及研究
- 冰箱安全知识培训总结课件
- 河北省围场满族蒙古族自治县2025年上半年事业单位公开遴选试题含答案分析
- 超星尔雅学习通《形势与政策(2025春)》章节测试及答案(全国)
- 2025年事业单位招聘考试时事政治考试题库附有答案
- 统编版(2024)八年级上册历史全册教材问题参考答案
- 2025年中级消控笔试题目及答案
- 2024年中国防锈油行业调查报告
- 办公软件培训课件
- 中职高教版(2023)语文职业模块-第一单元1.1七律二首-送瘟神【课件】
- 中医药膳学全套课件
- 带式运输机传动装置设计
- 小学音乐四年级下册《忆江南》教学设计
评论
0/150
提交评论