今天想要介绍的主人公是node.js,在进行web服务端的开发中,我们常会使用到它,对于短视频系统开发者而言,node.js也绝不陌生,它常被用于短视频系统开发的即时聊天部分,用它开发即时聊天系统有什么好处呢?让我们一起分析一下吧。
短视频系统并发量巨大,node.js擅长任务调度,且节约内存,更能在一定程度上节约服务器的开销,原因是它有以下几点机制:
1、 它是单线程
单线程的缺点是,在高并发时,一次只能通过一个请求,后面的都要等着,由此形成阻塞,这一问题完美被node.js解决,我们后面慢慢说。
这里可能有人要问了,既然单线程有缺点,为什么我们不采用多线程呢?多线程可以提高对并发请求的接收和响应,但是它有个很严重的问题,就是非常吃内存,要支持层起多大的并发,就需要多开多少服务器。
普通情况下,每个连接服务器的连接都会被生产成一个新的OS线程,并为其分配一些内存,而一个短视频系统开发要承载的并发量固然是非常大的,多开服务器意味着更多的消耗,消耗量和并发之间的矛盾巨大,而node.js依靠异步和事件驱动解决了单一线程的并发问题,且无需像多线程那样吃内存,这是它的优势之一。
2、事件驱动
事件驱动是一种编程范式,它通过事件或状态的变化来进行应用程序的流程控制,它包含一个事件循环,当请求发生时使用回调机制来触发相应的处理。
3、 异步I/O机制
通常情况下,在程序执行任务时,任务执行的顺序和任务排列的顺序是相同的,而在异步机制下,程序的执行顺序与任务的排列顺序不一致。
node.js在同一时间只能执行一个事件的回调函数,但在这一过程中,可以去处理其他事情,然后返回继续执行原事件的回调函数。异步I/O机制可以大大提高短视频系统开发的执行效率,因为短视频系统会承载非常大的数据访问量,而在异步I/O和事件驱动机制下,每个调用之间无需等待前一个调用结束,就可以执行其后面的代码,把上一个访问数据库的返回结果的处理代码放在回调函数中即可。
node.js之所以适合制作实时数据交互应用,事件驱动与异步I/O机制功不可没,使用它进行短视频系统开发即时通讯部分,有以下几点优势:
- 节约服务器内存,预计四万用户的连接仅需8g内存就够用。
- 作为单线程,无需在意状态的同步问题
- 提高单线程程序的反应速度。
虽然Java和PHP也有办法实现高并发子线程请求,但NodeJS的表现会更好,也更符合短视频系统开发的需要。
声明:转载请注明原文链接,部分内容翻译自官网或来自互联网上的解释