标签: event-driven

Node.js的事件驱动有什么不同?我们不能在ASP.Net的HttpAsyncHandler中这样做吗?

我在网络编程方面不是很有经验,我还没有在Node.js中编写任何东西,只是对事件驱动的方法感到好奇.看起来确实不错.

本文解释了当我们使用基于线程的方法处理请求时可能发生的一些不好的事情,并且应该选择事件驱动的方法.在基于线程的情况下,收银员/线程一直困扰着我们,直到我们的食物/资源准备就绪.在事件驱动下,收银员将我们送到请求队列之外的某个地方,这样我们就不会在等待食物时阻止其他请求.要扩展基于阻塞线程,需要增加线程数.对我而言,这似乎是一个不正确使用线程/线程池的错误借口.

难道不能使用IHttpAsyncHandler正确处理?ASP.Net接收请求,使用ThreadPool并运行处理程序(BeginProcessRequest),然后在其中我们使用回调加载文件/数据库.那个线程应该可以自由处理其他请求.文件读取完成后,再次调用ThreadPool并执行剩余的响应.对我来说没有那么不同,那为什么不那么可扩展呢?

我所知道的基于线程的缺点之一是,使用线程需要更多内存.但只有这些,您才能享受多核的好处.我怀疑Node.js根本没有使用任何线程/核心.

因此,基于事件驱动vs基于线程(不要带"因为它是Javascript和每个浏览器..."的论点),有人可以指出我使用Node.js而不是使用Node.js的实际好处是什么现有技术?

这是一个很长的问题.谢谢 :)

asp.net multithreading event-driven node.js

71
推荐指数
3
解决办法
3万
查看次数

编写可维护的事件驱动代码

我刚刚开始玩事件驱动的架构,来自一个非常标准的面向对象的思维模式.

我注意到的第一件事是,理解和跟踪程序的难度似乎随着程序的大小呈指数级增长.虽然小型宠物项目很容易遵循,但感觉就像代码会迅速转向意大利面.

我理解我是这种发展思维的新手,并不是所有我的面向对象的担忧都会延续下去.有没有关于编写可维护,可理解的事件驱动代码的资源?使用node.js或Twisted或Event Machine的人对此有何看法?

architecture documentation maintainability event-driven node.js

49
推荐指数
4
解决办法
7443
查看次数

onclick事件无法在JavaScript中运行

我在带有按钮的HTML页面中有一些JavaScript代码.我有一个名为'click()'的函数来处理按钮的onClick事件.该按钮的代码如下:

<input type="button" onClick="click()">button text</input>  
Run Code Online (Sandbox Code Playgroud)

问题是单击按钮时,不会调用该函数.我在这做错了什么?
谢谢

html javascript event-driven javascript-events

47
推荐指数
2
解决办法
26万
查看次数

事件驱动和异步之间有什么区别?在epoll和AIO之间?

事件驱动和异步通常用作同义词.这两者有什么不同吗?

另外,epoll和之间有什么区别aio?它们如何结合在一起?

最后,我多次读过Linux中的AIO被严重破坏.究竟是怎么破碎的?

谢谢.

linux asynchronous epoll aio event-driven

40
推荐指数
2
解决办法
1万
查看次数

反应式编程与事件驱动编程有何不同?

我正在学习JavaScript中的反应式编程和功能反应式编程.我很迷茫.

维基百科说,有各种方法来编写反应性代码,如命令式,OORP和功能性.我想知道事件驱动是否只是编写反应代码的另一种方式?

响应式编程如何与Promises相关?我认为承诺是事件驱动和回调地狱的替代品.

javascript event-driven frp reactive-programming bacon.js

36
推荐指数
3
解决办法
2万
查看次数

EventMachine vs Node.js

我将开发一个协作网站,其中一个功能将是实时更改的协作编辑.即,当两个或更多用户正在编辑同一个文档时,他们可以在发生时立即看到彼此的变化.我对Ruby on Rails有一些经验,所以我在考虑使用EventMachine,但是围绕Node.js的所有这些炒作,我知道考虑使用它.那么,使用Node.js而不是EventMachine的主要好处是什么?

tl; dr EventMachine和Node.js之间的主要区别是什么(除了语言)?

ruby-on-rails event-driven eventmachine commonjs node.js

30
推荐指数
3
解决办法
1万
查看次数

什么是SEDA(分阶段事件驱动架构)?

SEDA:用于良好可扩展的互联网服务的架构

"SEDA为的缩写阶段式服务器模型,并分解一个复杂的,事件驱动的应用程序为一组的阶段由连接队列 ".

我知道这是一个架构,并且SEDA有很多实现(参见维基百科文章).什么是"舞台"?有人可以提供有关分阶段事件驱动架构的全面高级摘要,以及它与传统(未分级?)事件驱动架构的区别吗?

architecture stage event-driven eda

28
推荐指数
3
解决办法
2万
查看次数

Java中的非阻塞(异步)DNS解析

是否有一种干净的方法以非阻塞的方式异步解析Java中的DNS查询(通过主机名获取IP)(即状态机,而不是1个查询= 1个线程 - 我想同时运行数万个查询,但是没有运行成千上万的线程)?

到目前为止我发现了什么:

  • 标准InetAddress.getByName()实现是阻塞的,看起来标准Java库缺少任何非阻塞实现.
  • 在批量问题中解决DNS讨论了类似的问题,但找到的唯一解决方案是多线程方法(即一个线程在每个给定时刻只处理1个查询),这不是真正可扩展的.
  • dnsjava库也只是阻塞.
  • dnsjava有一些古老的非阻塞扩展,可以追溯到2006年,因此缺乏任何现代的Java并发性东西,例如Future范式使用,以及非常有限的仅限队列的实现.
  • dnsjnio项目也是dnsjava的扩展,但它也适用于线程模型(即1个查询= 1个线程).
  • asyncorg似乎是我迄今为止针对此问题找到的最佳解决方案,但是:
    • 它也是从2007年开始,看起来已经废弃了
    • 几乎没有任何文档/ javadoc
    • 使用许多非标准技术,如Fun

我错过了任何其他想法/实施?

澄清.我有一个相当大(每天几TB)的日志量.每个日志行都有一个主机名,可以来自互联网上的任何地方,我需要一个IP地址作为我的进一步统计计算的主机名.行的顺序并不重要,所以,基本上,我的想法是开始2个线程:首先迭代线:

  • 读一行,解析它,获取主机名
  • 发送查询到DNS服务器以解析给定的主机名,不要阻止回答
  • 将行和DNS查询套接字句柄存储在内存中的某个缓冲区中
  • 转到下一行

第二个线程将:

  • 等待DNS服务器回答任何查询(使用epoll/ kqueuelike技术)
  • 阅读答案,找到缓冲区中的哪一行
  • 将已解析IP的行写入输出
  • 继续等待下一个答案

Perl中的一个简单的模型实现AnyEvent向我展示了我的想法通常是正确的,我可以通过这种方式轻松实现每秒15-20K查询的速度(天真的阻塞实现每秒2-3次查询 - 只是为了比较 - 所以这就像4个数量级的差异).现在我需要在Java中实现相同的 - 我想跳过我自己的DNS实现;)

java dns asynchronous event-driven nonblocking

28
推荐指数
2
解决办法
8876
查看次数

了解事件驱动架构的良好资源

寻找书籍,博客,网站或视频.

目前,我从Udi Dahan和Greg Young的博客中获得了很多价值,但我想知道是否还有其他专家值得一试?

architecture messaging soa event-driven eda

27
推荐指数
1
解决办法
5094
查看次数

事件驱动和基于线程的服务器系统有什么区别?

  • Node.js是一个事件驱动的I/O,它是一个单线程服务器,它作用于回调,从不在主线程上阻塞.

    1. 但它如何设法实现非阻塞I/O?
    2. 如果它易于管理,为什么基于线程的系统不管理呢?
    3. 其他线程(在单个事件驱动的线程后面)不像基于线程那样工作吗?
    4. 如果其他线程意味着工作人员(在事件驱动线程后面)忙,那么它如何仍能处理作业而不会阻塞?
  • 基于线程的模型将任务分配给线程,如果没有空闲线程,则阻止新任务.

    1. 如果一个线程可以处理多个任务,比如作为事件驱动的单个线程来处理每个I/O而不会阻塞,那么为什么基于线程的系统不会在繁忙的线程上使用这个策略来阻止I/O.

我想知道事件驱动和基于线程的服务器系统之间有什么区别(优点/缺点).

multithreading event-driven threadpool node.js

25
推荐指数
1
解决办法
2万
查看次数