相关疑难解决方法(0)

什么是Node.js?

我没有完全了解Node.js的全部内容.也许是因为我主要是一个基于Web的业务应用程序开发人员.它是什么以及它的用途是什么?

到目前为止,我的理解是:

  1. 编程模型是事件驱动的,尤其是它处理I/O的方式.
  2. 它使用JavaScript,解析器是V8.
  3. 它可以很容易地用于创建并发服务器应用程序.

我的理解是否正确?如果是,那么即使I/O有什么好处,它对于并发性的东西更多吗?另外,Node.js的方向是成为一个类似于基于JavaScript(V8的)编程模型的框架吗?

javascript v8 evented-io node.js

506
推荐指数
9
解决办法
47万
查看次数

如何使node.js应用程序永久运行?

在Debian服务器上,我安装了Node.js. 我了解如何使用此命令行从putty启动应用程序:

node /srv/www/MyUserAccount/server/server.js
Run Code Online (Sandbox Code Playgroud)

并在地址50.51.52.53:8080(IP和端口)上找到它.

但是一旦我关闭腻子,我就再也无法到达地址50.51.52.53:8080了.

如何使Node.js应用程序永久运行?

你可以猜到,我是Linux和Node.js的初学者.

node.js server

236
推荐指数
17
解决办法
24万
查看次数

如何在nodejs中创建线程

有没有办法创建一次运行多个方法的线程.如果任何方法失败,则应该杀死所有其他线程.
提前致谢

parallel-processing multithreading asynchronous node.js

87
推荐指数
6
解决办法
13万
查看次数

使用Node.js与PHP有什么好处

可能重复:
为什么以及何时使用节点js?

有人能告诉我为什么所有关于node.js的大惊小怪?与在一些php框架中编写的相比,用node.js编写的常规网站(比如博客)更快吗?我知道用node.js编写的web服务器会比apache更快但是一个真正的Web应用程序如何创建线程或类似的东西呢?

php node.js

75
推荐指数
1
解决办法
8万
查看次数

我可以扩展nodejs应用程序的最佳方法是什么?

基础

现在我的一些朋友和我正在尝试开发一个在nodejs中制作的浏览器游戏.这是一个多人自上而下的射击游戏,客户端和服务器端代码中的大多数都是用javascript编写的.我们有一个很好的总体方向,我们想进去,我们在开发游戏方面有很多乐趣.制作这款游戏​​时我们的目标之一就是让它尽可能地作弊.做到这一点,我们所有的游戏逻辑都在服务器端处理.客户端仅通过Web套接字将其输入发送到服务器,并且服务器使用游戏中发生的事情更新客户端(也是Web套接字).这是我们问题的开始.

所有的服务器端数学都变得非常沉重,我们发现我们需要以某种方式扩展以处理超过10个玩家(我们希望能够容纳更多).起初我们认为我们可以根据需要垂直扩展,但由于nodejs是单线程的,因此只能利用一个核心.这意味着获得更强大的服务器无助于解决这个问题.我们唯一的解决方案是横向扩展.

我们为什么要问这里

我们还没有找到任何关于如何扩展nodejs游戏的好例子.我们的用例非常特别,虽然我们已经尽力做到了这一点,但我们真的可以从外部意见和建议中受益

细节

我们已经对如何解决这个问题投入了大量的思考.我们已经研究了一个多星期了.这是我们到目前为止所做的事情:

四种类型的服务器

我们将任务分成4种不同的"类型"服务器.每个人都将完成一项特定的任务.

代理服务器

代理服务器将位于整个堆栈的前端,并且是可从Internet直接访问的唯一服务器(可能有更多这些服务器).它会有haproxy,它会将所有连接路由到Web服务器.我们之所以选择haproxy,是因为它具有丰富的功能集,可靠性和几乎无与伦比的速度.

Web服务器

Web服务器将接收Web请求,并为所有Web页面提供服务.他们还将处理游说创建/管理和游戏创建/管理.要做到这一点,他们会告诉游戏服务器它有什么游说,用户在那个大厅,以及他们将要玩的游戏的信息.然后,Web服务器将更新游戏服务器关于用户输入,并且游戏服务器将更新游戏中发生的事件的Web服务器(谁将更新客户端).Web服务器将使用TCP套接字与游戏服务器就任何类型的管理进行通信,并且在与游戏更新进行通信时将使用UDP套接字.这将全部用nodejs完成.

游戏服务器

游戏服务器将处理有关游戏的所有游戏数学和变量更新.游戏服务器还与数据库服务器通信,以记录游戏中玩家的酷炫统计数据.这将通过nodejs完成.

数据库服务器

db服务器将托管数据库.事实证明这部分是最简单的,因为我们找到了rethinkdb,这是有史以来最酷的数据库.这很容易扩展,奇怪的是,它是扩展我们的应用程序最简单的部分.

其他一些细节

如果你无法解决整个问题,那么看看这个,这是我们认为我们将如何扩展的半准确图表.

如果你只是好奇,或者认为看看我们的游戏可能会有所帮助,那么它目前在这里处于未扩展状态.

我们不想要的一些事情

  • 我们不想使用nodejs的集群模块.它不稳定(这里说),它不能扩展到其他服务器,只能扩展到其他处理器.我们想要实现横向扩展.

我们的问题,总结一下

我们希望我们朝着正确的方向前进,我们已完成了我们的功课,但我们不确定.我们当然可以采取一些技巧,以正确的方式做到这一点.

谢谢

我意识到这是一个很长的问题,做出深思熟虑的答案并不容易,但我真的很感激.

谢谢!!

javascript sockets scalability node.js autoscaling

24
推荐指数
1
解决办法
7166
查看次数

Amazon EC2上Node.js的CPU利用率

看看节点是如何单线程的,如果我在具有4个EC2计算单元的亚马逊EC2实例上运行节点服务器,它将比我有2个EC2计算单元更快/处理更多负载吗?

亚马逊的CPU利用率是否需要多线程程序才能完全使用所有资源?

amazon-ec2 node.js

20
推荐指数
3
解决办法
8219
查看次数

Node.js - 针对cpu核心

如何启动节点进程,针对特定的CPU核心?

我见过节点集群,但我有兴趣在不同的核心上启动两个不同的进程.

我假设从命令行启动节点时有一种方法可以做到这一点,即:

节点myapp.js

如果存在差异,我有兴趣知道如何在Windows和Linux中执行此操作.

node.js

14
推荐指数
2
解决办法
6133
查看次数

为什么OCaml的线程被认为是"不够"?

似乎很多人都说OCaml没有很好的并发能力,对Web服务器应用程序来说也不好.

我目前正在学习 ocaml的手册.似乎OCaml现在提供并发性.

我能知道为什么OCaml的并发/线程被认为是坏的吗?

我可以在OCaml中开发服务器应用程序吗?我可以遇到什么问题?

ocaml functional-programming

14
推荐指数
2
解决办法
6686
查看次数

Azure 应用服务和 .NET Core 3.1 中长时间运行计算的合适解决方案?

在不需要数据库且无需对此应用程序之外的任何内容进行 IO 的应用程序中,在 Azure 应用服务和 .NET Core 3.1 中长时间运行计算的合适解决方案是什么?这是一个计算任务。

具体来说,以下是不可靠的,需要一个解决方案。

[Route("service")]
[HttpPost]
public Outbound Post(Inbound inbound)
{
    Debug.Assert(inbound.Message.Equals("Hello server."));
    Outbound outbound = new Outbound();
    long Billion = 1000000000;
    for (long i = 0; i < 33 * Billion; i++) // 230 seconds
        ;
    outbound.Message = String.Format("The server processed inbound object.");
    return outbound;
}
Run Code Online (Sandbox Code Playgroud)

这有时会返回一个空对象HttpClient(未显示)。较小的工作量总是会成功。例如,30 亿次迭代总是成功的。一个更大的数字会很好,特别是 2400 亿是一个要求。

我认为在 2020 年,带有 .NET Core 的 Azure 应用服务的一个合理目标可能是在 8 个子线程的帮助下将父线程数提高到 2400 亿,因此每个子线程数达到 300 亿,父线程划分 8 M 字节入站对象转换为入站到每个子项的较小对象。每个子进程收到一个 1 M …

azure long-running-processes asp.net-core azure-appservice

12
推荐指数
2
解决办法
2052
查看次数

如何在端口80上为网站制作Node.js多租户?

我的最终目标是使每个服务器实例的node.js更具成本效益.

我不是在运营游戏或聊天室,而是为客户提供简单的网站.我想在一台服务器上容纳多个客户端,但是有多个网站使用主机头映射运行端口80.我想仍然使用快递,因为我正在做,但它更像是从端口80到其他节点应用程序的路由事件,如果这是可能的.如果它以这种方式完成节点可以更便宜,但目前它对我的目的而言更昂贵,因为如果在端口80上运行,每个客户都需要自己的盒子.此外,我的动机是关注节点开发但是必须有理由这样做所以在成本方面.

我在Windows中为ASP.NET做了很多这样的事情,因为IIS支持这种开箱即用的功能,我知道这对Apache来说也是正常的.

如果这不是正确的问题或者给予建设性的批评而不是随机的downvote,请随意将其移至堆栈交换中的另一个论坛.谢谢.

更新

我采用的方法是使用静态托管(通过gatspy和s3),然后使用API​​,通过来自客户端的邮件和来自服务器的API密钥注册域名,并在站点更改时定期生成静态站点,但感谢所有建议!

node.js

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