多进程->多线程->多路复用->非阻塞->协程?
共 4761字,需浏览 10分钟
·
2020-11-13 09:52
当在读这篇文章的时候,你有没有想过,服务器是怎么把这篇文章发送给你的呢?
说简单也简单,不就是一个用户请求吗?服务器根据请求从数据库中捞出这篇文章,然后通过网络发回去。
说复杂也复杂,服务器是如何并行处理成千上万个用户请求呢?这里面涉及到哪些技术呢?
这篇文章就来为你解答这个问题。
多进程
编程简单,非常容易理解 由于各个进程的地址空间是相互隔离的,因此一个进程崩溃后并不会影响其它进程 充分利用多核资源
各个进程地址空间相互隔离,这一优点也会变成缺点,那就是进程间要想通信就会变得比较困难,你需要借助进程间通信(IPC,interprocess communications)机制,想一想你现在知道哪些进程间通信机制,然后让你用代码实现呢?显然,进程间通信编程相对复杂,而且性能也是一大问题 我们知道创建进程开销是比线程要大的,频繁的创建销毁进程无疑会加重系统负担。
多线程
Event Loop:事件驱动
event 处理event的函数,这一函数通常被称为event handler
while(true) {
event = getEvent();
handler(event);
}
事件来源:IO多路复用
问题:阻塞式IO
非阻塞IO
基于事件编程的难点
更好的方法
总结
最后两天啦!,阿里云服务器又又又到了冰点价。新用户一年只需84.97元,我当年认证学生,以学生的身份购买都得10块钱一个月,现在一个月只要7块钱!
通过我的链接或者扫描二维码购买即可享受优惠:
https://www.aliyun.com/1111/pintuan-share?ptCode=MTk2NjQwOTYyMDkyNzI4MXx8MTE0fDE%3D&userCode=pfn5xpli
老实说我在学生时期就没折腾过虚拟机,直接上的云服务器,这给我在学习的时候省了不少的时间。现在一个月7块钱就可以拥有自己的一台服务器,如果还没买过的同学可以买起来~ 新人拥有自己的一台服务器可以先简单做些小事情(必经的一个过程):
学习Linux命令
部署Java环境(包括Elasticseach,Redis..等等),这些框架都是在Linux部署很方便,在Windows上安装就比较麻烦了。
把自己写的小东西挂在服务器
通过我的二维码买了服务器加我微信(woshisanwai)再私反10块红包,备注服务器,买不了吃亏买不了上当,一天服务器就到手了。
我写了非常详细的搭建教程,买了如果还不会用,联系我手把手教学!
如果不是新用户,可以用爸妈手机注册一个(我就是这样干的),享受阿里云的最低价!
【 阅读原文 】购买最便宜的服务器(购买的同学会在每天晚上统一私反,别着急)