1.概述单发,并发,同步,异步,阻塞,非阻塞
2.问题你的左手边有N个茶壶,你的任务是将这N个茶壶里的水加热到100度,并且将他们到扔到右边。问,如何优雅地解决这个问题?
3.思路阻塞:煮完一壶等下一壶非阻塞:同时煮几壶,隔一段时间掀开茶壶看哪个熟了,就扔那个。单发:你一个人搞并发:你叫上小伙伴们一起搞同步:看着茶壶来确定那个熟了异步:将茶壶切换成响气壶,让茶壶告诉你那个熟了很明显,高效而且高雅的办法就是并发+非阻塞+异步
4.问题2你是一个CPU,你的任务是处理N个请求,这几个请求都是,到磁盘找出A文件,然后发给他。问:如何优雅地派发文件到网络上的请求。
5.思路2
5.1.apache
apache架构图,并发+阻塞 ## 5.2.nginx nginx架构图,并发+非阻塞 ## 5.3.nodejs
var http = require('http');var rf=require("fs"); http.createServer(function (req, res) { rf.readFile("mm.php",'utf-8',function(err,data){ if(err){ console.log("error"); } res.writeHead(200, {'Content-Type': 'text/plain'}); res.end(data); });}).listen(1337, '127.0.0.1');console.log('Server running at http://127.0.0.1:1337/');
nodejs架构图,单发+异步 #
6.问题3那么,我们现在的架构是什么?怎么优化,怎么提高? #
7.更多异步造成的回调地狱怎么避免(维护复杂性)?非阻塞怎么避免(代码可读性)?
- 本文作者: fishedee
- 版权声明: 本博客所有文章均采用 CC BY-NC-SA 3.0 CN 许可协议,转载必须注明出处!