白话nginx之事件驱动
最近去体检,发现一个很有意思的场景。大家都排队领表,排队退表,这两个是唯一需要所有人去同时排队的地方。其他的各个科室就看自己和选择和门口小护士的的安排了。 这个非常像nginx里面的事件驱动
先想想之前的体检是怎么做的呢。
最一开始的体检,大家排队一个人做完所有的另一个人再进去。即使科室有空闲其他人也不让进去。
后来发展到不行,做了一次改进,就是一个人排另一个后面也就是后来的流水线。
到了最新的体检模式,排队进入。进来之后就各自找空闲的科室去体检。是不是有个小护士在门口,看见自己科室空了就喊一声进一个。
nginx的事件驱动
看看nginx把一次请求做了哪些拆分,nginx的一次请求可以看成是一次体检的过程。然后把各个请求内部的事情拆分成各个科室的。也就是事件的拆分。
建立连接(领表)->事件(各种检查)-> 关闭连接(退表)
nginx把一次网络请求,细化成了各种事件,读、写、连接、关闭等。自己去处理自己的。不在相互阻塞。
优缺点
优点:肯定是变快了,性能变快;缺点是复杂了,想想是不是体检时候多了很多护士嗷嗷喊。
最后