`
javamonkey
  • 浏览: 171273 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

软件性能设计:异步神话?

 
阅读更多

   常听到有人说,把我们系统改造一下,支持异步协议,这样性能会提高。事情真的会是这样么?真相是是什么呢?

   把你的系统比作一个桶,无论你用何种方法往你倒水,桶能装的水的容量是不变的。系统也类似,无论你用同步还是异步,吞吐量不会有本质变化。唯一的好处,同 步变成异步,可能会使客户端,服务端双方去掉不必要的同步等待。使得双方都能继续做其他的事情,也可以继续接收请求,也可以处理业务,然而系统容量就这么 多,不可能通过这方式转化来提供吞吐量。相反,如果异步设计不好,还可能导致性能(延迟,吞吐量)都有所降低,因为有时候异步实现也是有代价的。

那异步有什么好处呢?在假设服务器处理能力绰绰有余 的情况下,使用异步协议能使得客户端能最大发挥它能能力,这是因为减少了等待响应 时间。但客户端便成相对来说麻烦。在服务器端,异步使得SLA得以实现,可以很好提供的服务质量

   异步是个神话,但不必要迷恋这个神话。妄图通过异步使得系统响应时间从180秒到90秒,是不可能的,得到的可能也许是系统响应变成200秒

分享到:
评论
4 楼 javamonkey 2011-02-15  
风险就在这,客户不再提供升级硬件的钱,说把同步改成异步就可以增加吞吐量。你如何回答
3 楼 SINCE1978 2011-02-15  
永远不要去质疑CPU “有没有能力”,只要知道可以有就行了
只要知道饭店可以有蛋炒饭我们就可以直接点
而不是因为害怕没有干脆不点菜是不是?
如果你要吃油炸雪糕,那才要认真考虑没有怎么办的问题。
2 楼 javamonkey 2011-02-14  
在CPU“有能力”同时” 异步执行这10个任务的时候,你算的对的。
1 楼 SINCE1978 2011-02-12  
10个任务同步执行、每个任务平均耗时1秒一共需10秒。
异步执行、如果最耗时任务花3秒则一共需3秒。

相关推荐

    人月神话电子版

    《人月神话》是软件工程领域的一本经典著作,由弗雷德里克·布鲁克斯(Frederick P. Brooks Jr.)所著,首次出版于1975年。这本书在IT行业内被誉为必读的经典,它揭示了软件开发过程中的一些核心原则和问题,为后来...

    人月神话 http 深入理解操作系统

    《人月神话》是软件工程领域的一本经典著作,由弗雷德里克·布鲁克斯撰写,书中提出了“没有银弹”(No Silver Bullet)的概念,即不存在解决所有软件开发问题的单一方法。而在深入理解操作系统的过程中,HTTP协议是...

    java8集合源码-usefullinks:有用的编程链接

    性能案例研究 垃圾收集器工作描述(公爵,倒垃圾) 用于在 JVM 上启动和开发 Java 应用程序、编译、执行的工具 线程转储分析 您应该始终在生产中使用的 Java VM 选项 文章讨论了协方差、反方差、不变性、双方差。 ...

    神话尝试2

    在“神话尝试2”这个项目中,开发者可能利用C#的这些特性来实现某种特定功能或应用,例如创建一个基于神话主题的游戏、构建一个神话故事的数据库应用,或者是设计一个有关神话的图形用户界面程序。通过阅读和理解...

    how-to-be-a-programmer-cn.pdf

    - 采用异步IO模型减少等待时间。 - 批量处理读写操作减少调用次数。 - 使用压缩技术减少传输数据量。 - **如何管理内存:** - 理解内存分配机制。 - 避免内存泄漏。 - 适时释放不再使用的资源。 - **如何处理...

    TravelBackIn神话

    C#的Task Parallel Library (TPL) 提供了并行处理和异步编程的支持,可以提高程序性能。 6. **异常处理**:为了确保程序的健壮性,开发者需要使用try-catch语句来捕获和处理可能出现的错误,避免程序因未预期的状况...

    开源中国客户端

    通过学习这个开源项目,开发者可以了解实际项目中的最佳实践,例如如何组织代码结构、如何使用MVP或MVVM模式进行架构设计、如何处理异步任务(如使用RxJava或Coroutines)、如何实现依赖注入(如Dagger或Hilt)、...

    bifrost:Bifrost后端,用于管理前端组件

    2. **Promise和async/await**:异步编程是JavaScript的重要组成部分,Bifrost利用Promise和async/await处理异步操作,使代码更易读和理解。 3. **Class和Object**:Bifrost通过ES6的Class定义组件和管理器,简化...

    athena项目整合ace四

    这个项目旨在为开发者提供一个综合的学习平台,结合了Athena的智能处理能力和ACE的组件化开发优势,以提升软件开发和自我学习的效率。 Athena通常指的是希腊神话中的智慧女神,但在技术领域,它可能是指一个用于...

    CronusClient

    CronusClient是一款可能用于游戏或系统管理的客户端软件,其名称"Cronus"通常与时间、周期或者希腊神话中的克洛诺斯有关,暗示着该软件可能涉及到定时任务、调度或者持续运行的服务。由于提供的信息有限,我们将从...

    Morrigan重写

    "Morrigan重写"是一个可能涉及Python编程语言的项目,从描述中的“封存”一词,我们可以推测这可能是对某个旧代码库或项目的更新版本,或者是一个已停止开发但仍然可供参考的软件。"Morrigan"通常在西方文化中指的是...

    hermes

    6. **性能优化**:由于其潜在的高性能需求,Hermes可能采用了内存池、零拷贝技术或者异步I/O来提升处理速度。 7. **错误处理和日志记录**:为了确保稳定性和可诊断性,Hermes会包含完善的错误处理机制,以及使用如...

    天琴座

    Lyra在天文学中代表了希腊神话中的天琴,这里可能是项目名称,暗示着项目具有优雅和精确的特性,这与编程领域的追求不谋而合。"lyra-master"这个文件名可能指的是项目的主分支或者源码仓库的主目录,通常在Git版本...

    破坏性重建

    【破坏性重建】在IT行业中通常指的是在软件开发或系统管理过程中,为了更新、优化或者修复问题而采取的一种激进的方法。这种方法可能涉及到完全删除现有结构,然后重新构建,以确保系统的新版本更加稳定、高效或者...

    Ouroborus3

    在现代网络应用中,异步编程能够优化性能,避免阻塞主线程,提高用户体验。理解异步I/O和任务并行库(TPL)的工作原理,将有助于我们编写出高效的并发代码。 Ouroborus3项目的源代码文件“Ouroborus3-master”很...

    flutter-nxtra

    Flutter是Google推出的一种开源UI工具包,用于构建高性能、高保真、可在多平台上运行的原生应用,包括Android和iOS。它基于Dart语言,Dart是一种现代的、面向对象的、垃圾回收的编程语言,设计简洁且高效,特别适合...

Global site tag (gtag.js) - Google Analytics