NodeJS 单线程 如何保证其安全,稳定性?

NodeJS 单线程 如何保证其安全,稳定性?,第1张

NodeJS是新兴的编程方式,基于

javascript

本身的特点NodeJS存在自己的优点和缺点。

安全性:NodeJS的安全性你是在指线程的资源争用吗?NodeJS是单线程的,并且是原生的

异步编程

模型,对于资源当然不能做太多同步的处理,也就是说你不要用javascript来做同步的事情,如果做同步的工作就不要用javascript。当然有些时候资源同步是必要的,这时候可以在数据库层面着手,比如couchdb,就是多版本的数据库,即使出现资源争用也完全不用担心,数据库回处理多版本问题。所以NodeJS是一个安全的环境。

稳定性:NodeJS的特点是单线程,也就是说整个程序只有一个线程在跑,同时还是异步的,对于多个请求或多个 *** 作是同时进行的,那么假设在这么多的并行 *** 作(单线程和并行不矛盾)中如果有一个 *** 作crash了,结果回怎么样?因为是单线程,这个线程中出现的任何问题都回反映到线程上,某个 *** 作crash就回导致线程的crash,线程又控制着多个并行 *** 作,结果就是:一个 *** 作crash导致整个NodeJS崩溃。所以NodeJS的稳定性还不足。NodeJS还在快速发展中,在未来的某个版本中也许会提高稳定性,目前NodeJS还不适合用来做对稳定性要求很高的项目。

Redis采用的是基于内存的采用的是单进程单线程模型的KV数据库,由C语言编写。官方提供的数据是可以达到100000+的qps。这个数据不比采用单进程多线程的同样基于内存的KV数据库Memcached差。

Redis并没有直接使用Libevent,而是自己完成了一个非常轻量级的对select、epoll、evport、kqueue这些通用的接口的实现。在不同的系统调用选用适合的接口,linux下默认是epoll。

因为Libevent比较重更通用代码量也就很庞大,拥有很多Redis用不上的功能,Redis为了追求“轻巧”并且去除依赖,就选择自己去封装了一套。

单线程优点:

同步应用程序的开发比较容易,但由于需要在上一个任务完成后才能开始新的任务,所以其效率通常比多线程应用程序低。如果完成同步任务所用的时间比预计时间长,应用程序可能会不响应。多线程处理可以同时运行多个过程。例如,文字处理器应用程序在您处理文档的同时,可以检查拼写(作为单独的任务)。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9605395.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存