高并发高性能服务器是如何实现的
k8s技术圈
共 4549字,需浏览 10分钟
·
2020-12-24 01:20
当在读这篇文章的时候,你有没有想过,服务器是怎么把这篇文章发送给你的呢?
说简单也简单,不就是一个用户请求吗?服务器根据请求从数据库中捞出这篇文章,然后通过网络发回去。
说复杂也复杂,服务器是如何并行处理成千上万个用户请求呢?这里面涉及到哪些技术呢?
这篇文章就来为你解答这个问题。
多进程
编程简单,非常容易理解 由于各个进程的地址空间是相互隔离的,因此一个进程崩溃后并不会影响其它进程 充分利用多核资源
各个进程地址空间相互隔离,这一优点也会变成缺点,那就是进程间要想通信就会变得比较困难,你需要借助进程间通信(IPC,interprocess communications)机制,想一想你现在知道哪些进程间通信机制,然后让你用代码实现呢?显然,进程间通信编程相对复杂,而且性能也是一大问题 我们知道创建进程开销是比线程要大的,频繁的创建销毁进程无疑会加重系统负担。
多线程
Event Loop:事件驱动
event 处理event的函数,这一函数通常被称为event handler
while(true) {
event = getEvent();
handler(event);
}
事件来源:IO多路复用
问题:阻塞式IO
非阻塞IO
基于事件编程的难点
更好的方法
总结
评论