我和Node.js人一起工作了一段时间,觉得自己在java方面很不错.但我刚刚发现了Akka,并立即对它的演员模式感兴趣(据我所知).

现在,假设我的JavaScript技能与我的Scala/java技术相媲美,我想关注这两个系统的实用性.尤其是在web服务方面.

据我所知,Node擅长处理许多并发操作.我认为,对于assets资源 管理系统来说,一个好的 node web服务将擅长处理多个用户同时提交更改(在一个大型、高流量的应用程序中).

但在读过《阿克卡》中的演员之后,它认为自己在同样的事情上也会表现出色.我喜欢把工作量减少到一点点的 idea .此外,几年前,我涉足二郎,爱上了它使用的消息传递系统.

我在许多处理复杂业务逻辑的应用程序上工作,我认为是时候更深入地研究其中一个了.尤其是升级遗留Struts和C#应用程序.

不管怎样,为了避免圣战,这两种体系有什么根本性的不同?似乎两者都朝着同一个目标努力.也许Akka的"自愈"架构具有优势.

EDIT

看来我的票数接近了.请不要把这个问题当作" node 还是阿克卡哪个更好?".我要寻找的是事件驱动库(如Node)和基于actor的库(如Akka)的根本区别.

推荐答案

不深入讨论细节(关于Node.js,我知道的太少了),主要区别在于Node.js只支持并发而不支持并行,而Akka支持两者.这两个系统都是完全事件驱动的,可以扩展到大的工作负载,但是缺乏并行性使得在 node 中很难实现.js(即,并行性是通过启动多个 node 并相应地调度请求来显式编码的;因此在运行时是不灵活的),而在Akka中,由于其可调的多线程执行器,它非常容易实现.给定较小的独立工作单元(参与者调用),Akka将自动为您并行执行.

另一个重要区别是,Akka包括一个系统,用于以 struct 化方式处理故障(通过让每个参与者由其父代监督,这是强制性的),而不是 node .js依赖于作者将错误条件从一个回调传递到另一个回调的约定.潜在的问题是,异步系统不能使用基于同步堆栈的系统所采用的标准异常方法,因为在回调错误发生时,"调用"代码将转移到不同的任务.将故障处理内置到系统中,使得构建在该系统上的应用程序更有可能是健壮的.

以上并非详尽无遗,我相信还有很多不同之处.

Node.js相关问答推荐

NPM:无法导入本码模块

一个函数中的两个依赖的NodeJS数据库操作.如果第二个失败了怎么办?

在 TypeScript 中正确键入 MongoDB find 方法

PEAN auth 应用程序:为什么 Angular 拦截器总是使用BehaviorSubject 返回 null(即初始值),而不是更新后的值?

bcrypt.compare 每次都返回 false

如何获取需要加载cheerio的网站部分数据?

为什么后端开发需要单独的服务器?

在快速路由中使用 axios 会在数据字段中返回特殊字符而不是 json

带有事件网格的 Azure 函数在没有 ngrok 的情况下在本地运行

2 x 匹配标准显示没有结果

如何更改NodeJS中的堆栈大小限制?

如何在 Mongoose 模式中设置数组大小限制

Node.js 服务器中没有缓存

在 Mongoose 中创建外键关系

无法获取 CSS 文件

通过 POST 请求将数据从 node.js 服务器发送到 node.js 服务器

nodejs - 如何读取和输出 jpg 图像?

如何从 findOneAndUpdate 方法中获取更新的文档?

- configuration.output.path:提供的值public不是绝对路径!使用 Webpack

如何阻止 babel 将this转换为undefined(并插入use strict)