浅谈nodejs与php设计构思层面上的差异

nodejs最近火的一塌糊涂,那为什么它可以成为千百程序员的新宠呢?

难道只是因为把js搬到了服务端?如果仅仅是这样是迁移了一个运行环境和增加几个模块的话我想完全不可能会得到喜新厌旧的程序员的青睐

nodejs和php的差异主要是两个方面:分工和运行机制

分工:nodejs直接跳过了服务器这个阶段,把创建服务器作为node的一个模块,监听请求这些应该是服务器做的工作现在变成了node做,这样就简化的开发环境,而且更加容易控制监听请求以及响应.也就是说node没有一个web容器,没有根目录的概念。

运行机制:

php在处理并发的时候是通过多线程处理,这样会导致硬件成本的增加,特别是一些频繁I/0的项目,很多的线程被阻塞,cpu得不到充分的利用。

node:node的核心理念是单线程,通过事件和回调实现并发。既然是单线程,那硬件成本自然比较低。

那单线程怎么实现并发呢?我认为正是这种实现的方法让大家耳目一新,所以才会让node如此的火,

并发实现原理:比如一百个请求要做一百件事,当第一个请求执行到i/o的时候立马挂起,不等待i/o成功,直接执行下一个事件,直到i/o完毕,这是触发回调事件,回调事件的优先级会比普通事件的优先级高,就是这样通过异步来实现单线程的并发处理。保证了线程永远有事做,不会等待

缺点:这样是提高了cup的利用率,但是无疑是把所有鸡蛋放在一个篮子里面,如果有个事件导致线程蹦了,直接的后果就是导致线程上的所有任务事件都蹦了,还有如果是运算的阻塞是没法并发的,所以这就局限了它只是适合做大量i/o的应用场景,不适合做大量计算的项目,例如股票这类型的。

node还有一个很大的特点就是路由功能,需要自己去配置,应为没有服务器软件,所以服务器软件的所有功能都需要自己去写,但是常用的功能在开源社区基本都已经有人写好了,对于我这样的喳喳来说简直就是福音啊。

以上笔记单纯代表个人观点,有不同意见的欢迎打搅。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它可以在服务器端运行 JavaScript 代码。Node.js 的高效性和非阻塞 I/O 机制使其成为一个很好的爬虫系统开发工具。 以下是基于 Node.js 的爬虫系统设计与应用的步骤: 1. 确定需求:确定需要爬取的数据类型和来源网站。 2. 分析网站结构:分析目标网站的页面结构,确定需要爬取的内容位置和标签。 3. 编写爬虫代码:使用 Node.js 编写爬虫代码,利用 HTTP 请求模块获取网站数据,并使用 DOM 解析模块解析数据。 4. 存储数据:将爬取到的数据存储到数据库或文件中,以备后续使用。 5. 处理异常:对于无法获取的网站或异常数据进行处理,避免程序崩溃。 6. 自动化部署:将爬虫系统部署到服务器上,并设置定时任务自动运行。 Node.js 的优势在于它的异步编程模型和事件驱动机制,这使得它可以高效地处理大量并发请求。同时,Node.js 的生态系统非常丰富,有大量的第三方模块可供使用,如请求模块 request、DOM 解析模块 cheerio 等。 在应用方面,Node.js 的爬虫系统可以应用于各种数据采集场景,如新闻、商品、论坛等,同时也可以用于数据分析和挖掘。例如,可以使用 Node.js 爬虫系统获取某一领域的论文信息,并进行关键词提取和分类分析,以帮助研究人员更好地掌握该领域的发展动态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值