javascript
本身的特点NodeJS存在自己的优点和缺点。
安全性:NodeJS的安全性你是在指单线程的资源争用吗?NodeJS是单线程的,并且是原生的
异步编程
模型,对于资源当然不能做太多同步的处理,也就是说你不要用javascript来做同步的事情,如果做同步的工作就不要用javascript。当然有些时候资源同步是必要的,这时候可以在数据库层面着手,比如couchdb,就是多版本的数据库,即使出现资源争用也完全不用担心,数据库回处理多版本问题。所以NodeJS是一个安全的环境。
稳定性:NodeJS的特点是单线程,也就是说整个程序只有一个线程在跑,同时还是异步的,对于多个请求或多个 *** 作是同时进行的,那么假设在这么多的并行 *** 作(单线程和并行不矛盾)中如果有一个 *** 作crash了,结果回怎么样?因为是单线程,这个线程中出现的任何问题都回反映到线程上,某个 *** 作crash就回导致线程的crash,线程又控制着多个并行 *** 作,结果就是:一个 *** 作crash导致整个NodeJS崩溃。所以NodeJS的稳定性还不足。NodeJS还在快速发展中,在未来的某个版本中也许会提高稳定性,目前NodeJS还不适合用来做对稳定性要求很高的项目。
nodejs一般用于高并发后台程序,单线程事件驱动,V8引擎
都很牛X,你要是自己玩,起码用mysql
或者mysql,如果是大型项目
就是oracle了,我个人在本机上玩
用mysql,效果还可以
Node.js中单线程就相当于火车站售票厅只开一个售票窗口,那么所有的人都要通过这个窗口去买票,如果说这些人不排队都争抢这个窗口,可想而知,每一个人想买到票很难,还有一个就是我们经常做公交车,公交车师傅有时候只开前门,这时候很多人都抢着上车,你会发现挤上车特别难,现实生活中,只开一个门或只开一个售票窗口,在程序上看来都是单线程的,此时,就需要引入排队机制,不排队就会产生拥堵,随都做不了事情生活如此,程序也是如此,不引入排队机制,就会产生阻塞
再回到Node.js,既然它是单线程的,就不能是阻塞的,就像一个人 站在售票口那里,突然发现自己没带钱,然后他就打电话叫别人送点钱过来,而此时这个人依然站在售票口那里,坚决不让出位置让后面的人买票,可想而知,就产生阻塞
现实生活中,如果这个人发现自己没带钱,最好的办法应该是这样做
始终与后面买票人交换一下位置 ,很多黄牛之所以可以快速的帮别人买票就是这样做的,因为黄牛专门有人在售票口那里占位
所谓事件驱动就是,一旦你造成阻塞了,你就靠一边站,等到什么时候不再阻塞,你再通知我,我再把你加入排队当中,再次等待被处理
众所周知,IO都是阻塞的,而Node.js却说自己是非阻塞IO,那么只能说明一点,IO肯定不是由Node.js来处理, Node.js会把IO这项工作分配给别人来做,别人IO完了,再事件通知Node.js,将IO结果重新加入排队,等待被处理
类似的生活案例还有,医院专家门诊看病,做B超相当于IO,做完B超完回来,一般需要重新加入排队;或者在做B超前,医生叮嘱他,你做完B超后就可以拿着B超结果直接找我不必要再重新排队
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)