餐馆的柜台小姐只有一件事要做:记下你要什么,收你的钱,给你一张小票。她不烤肉,不洗碗,更不会因为你要了一桌酒席,就挽起袖子亲自去后厨烤一头全牛。
网站的服务进程也该这样。它的活儿是收单:接住一个请求,看明白要干什么,然后尽快回话。这个「尽快」通常是几十到几百毫秒。
可偏偏有程序员让柜台小姐去烤全牛。用户点一下「生成全年报表」,服务进程就真的埋头算八个小时——连接一直挂着,内存一直占着。更要命的是,柜台小姐就那么几个。三个在烤牛,第四个客人进门,连碗牛肉面都点不了。再过一会儿,用户等不及按了刷新,牛还在烤,单子又下了一遍。
大白话:服务进程是柜台,不是后厨。它的天职是快点回话,不是把活儿干完。活儿干得慢不丢人,让后面所有人跟着排队才丢人。
那几小时的活儿谁来干?答案是:搬出前台,交给后厨。怎么交,是下一章的事。