> 出处:[编程派](http://codingpy.com/article/the-little-printf-chapter02/)
> 原文:[http://ferd.ca/the-little-printf.html](http://ferd.ca/the-little-printf.html)
![](https://box.kancloud.cn/2016-01-05_568b3f741de14.jpg)
> 《小Printf的编程故事》第二章:故事中的我终于和小Printf相遇了。他们之间,会发生些什么呢? - [上一章](http://codingpy.com/article/the-little-printf-chapter01/)
## 第二章
就这样,我开始满世界地演讲,教别人怎么去做一些有时候我自己都没有做过的事情,不过大家似乎都相信了我是一名真正的程序员,而理由正是我做的那些与编程没有太大关系的事。
有一天,我参加完一个会议准备回家,但却被困在了机场。我愤怒地在终端上打字,突然听见有一个奇怪、柔和的声音问我:
“你能不能,为我设计一个系统?!”
“什么?!”
“为我设计一个系统!”
这样的请求让我吃惊,抬起头想看看是谁提的。我看了看四周,发现有一个小孩站在不远处。他说自己渴望成为一名开发者,还让我叫他“Printf”。我觉得这个名字有点愚蠢、花哨。他的样子大概是这样的:
![](https://box.kancloud.cn/2016-01-05_568b3f742de5e.png)
“我还不太懂计算机,但是你看上去是个行家。我想编写程序,通过博客让大家都知道,用上我写的程序。求求你,为我设计一个系统!”
这真的是一个令人惊讶的请求,当时我已经有20个小时没有睡觉了,有点不确定自己听清楚了他的话。我跟他说,开发系统很困难。我不清楚他希望系统实现哪些功能,如何处理异常,应该支持多少个读者,在哪里部署,所以在这种情况下,我没办法给他设计一个良好的系统。
“那个没关系。只要给我设计一个系统就行。”
没办法,我给他画了下面这个架构图:
![](https://box.kancloud.cn/2016-01-05_568b3f743e4d1.png)
他看了看图,摇头说道:“这个系统还不够好。再设计一个吧”。我照做了:
![](https://box.kancloud.cn/2016-01-05_568b3f74578ed.png)
并给他逐一介绍了背后的原理。
我这个新朋友礼貌地笑了笑。“这并不是我想要的,它太复杂了,很多功能都不是我需要的。”
我有点不高兴,我可是考虑了冗余、监控、备份、缓存、负载、外部支付、故障切换备份、快速部署等诸多因素。光是这份系统设计,我就能收一笔不小的咨询费!终于没了耐心,我就随便给他画了张图:
![](https://box.kancloud.cn/2016-01-05_568b3f7470324.png)
然后补充道,“这就是你要的设计,你所要的系统就在那个黑盒子里”,希望这个乱七八糟的答案会让他离我远点。但是他的回答再次让我感到惊讶:
“这就是我想要的设计!”
就这样,我认识了小Printf。