Aay*_*uri 14 concurrency performance web-applications
因此,最近几乎所有平台提供商都非常重视提供新工具/语言结构以实现更好的并发性.这也是为什么函数式编程语言的许多想法被集成到C#,Java等主流语言中的原因之一.
尽管今天特别是在引入多核CPU的情况下这些很有意义,但我想知道如何在Web应用程序领域中特别使用它们.在Web应用程序中,很多并发性由Web服务器本身管理,我很少看到在Web页面中实现的多线程.AJAX还启用了像"范例"这样的范例来进一步帮助.
Web应用程序通常包括快速获取结果,直到现在我们已经使用了许多策略,如缓存,冗余等来实现这一目标.如果存在计算密集型的东西,则必须脱机(并且客户端可以稍后查询结果或者可以实现回调).
并发类已经在很多库/框架中实现,这些库/框架通常用在像数据库这样的web应用程序中,在memcached等框架中多次获取.
我找不到很多示例场景,其中最近的并发平台和库可以在Web应用程序的上下文中使用.所以我想知道他们在网络领域是否有很多意义.
由于Web应用程序默认是并发的,因此您不太可能在Web应用程序中使用新的并发机制(例如TPL或PLINQ for .NET).在高负载的Web服务器上通常不会获得任何结果(通过减慢另一个请求,可以加快一个请求).但是,如果您的专用Web服务器不能满足其大多数CPU周期(同时具有多个内核),那么这些技术可能会很有用.
[更新:]刚刚阅读有关.NET博客并行编程的新文章.这是两个有趣的引用:
在大多数情况下,特别是对于使用频繁的Web应用程序,可能没有必要引入额外的并行性,因为添加更多工作项只会导致CPU时间的竞争并最终降低请求吞吐量.
和:
如果单个请求的延迟比整体请求吞吐量更重要,那么需要执行昂贵计算的Web应用程序仍然可以从并行性中受益.
我认为这回答了你的问题.
严格认为一切都是同步和一致的,但扩展性不够好。于是就有了一种倾向,让更多的东西异步并接受最终的一致性。这也反映在语言和框架的设计方式上。
\n\n很多灵感都是从功能区域中汲取的,因为它非常适合这种计算模式。函数式编程有助于推理要执行什么,而不是如何执行和何时执行。
\n\n这实际上补充了处理并发的传统机制。
\n\n\n\n\n我无法\xe2\x80\x99 找到很多示例\n 场景,其中最新的\n 并发平台和库\n 可以在Web 应用程序的上下文中使用。所以我想知道它们在网络领域是否有意义。
\n
这取决于你的意思。您\xe2\x80\x99t 不需要使用低级构造,例如java.util.concurrent. 但框架堆栈对异步的支持越来越好。例如,Servlet 3.0 引入了异步 Web 请求来简化AJAX应用程序的开发。因此,EJB 3.1 具有异步方法调用来与异步 Web 层集成。在底部,我们有函数(或委托、闭包)的低级抽象,它抽象了计算本身以及计算所需的信息(其上下文)。我想 .NET 也是如此。
与传统的 Web 应用程序无关,而是与作为 \xe2\x80\x9c 云的 Web 相关,\xe2\x80\x9d 函数式编程有助于跨 CPU 和节点的分布式计算。一个众所周知的例子是map/reduce等,其目的是处理大量数据。
\n\n所有这些结合在一起,我们看到一个 Web 应用程序保持响应,同时异步处理大量数据。
\n\n但不,您不需要传统网络应用程序的所有这些!
\n| 归档时间: |
|
| 查看次数: |
10285 次 |
| 最近记录: |