三人跟着王宇恒穿过走廊,拐进尽头那间小一号的培训室。窗边那排暖气片嗡嗡地响着,声音不大,却也没能把屋里的潮气压下去多少。空调开着,温温的风吹出来,像隔夜的白开水,聊胜于无。
王宇恒已经站在投影仪旁边,手里捏着一根翻页笔,看见三人进来,笑着朝里面努了努嘴:
“随便坐,没那么多规矩,坐哪儿都行。”
傅麦挑了个靠前的位置坐下。听课嘛,得给老师面子。她刚把笔记本摊开,就听见身后椅子轻轻响了一声——是温临澈,果然又挑了个靠窗的角落,坐下前还把那把椅子往墙边挪了挪,动作很轻,像怕打扰到谁。
郑凯坐在她左手边,坐姿端正,镜片后的目光已经开始打量那块空白的幕布了。
逸城慢悠悠地晃到最后一排,一屁股陷进椅子里,拧开保温杯喝了一口,活像买票进场听相声的观众。
王宇恒按了一下翻页笔,幕布亮起来。一张层层叠叠的架构图铺满整面墙,线条密密麻麻,像一团被猫玩过的毛线。
傅麦的笔尖顿住了。
“这就是咱们系统的全家福。”
他说话带着笑,用翻页笔在图上划拉:“网上那些架构图画得跟电路板似的,看着吓人。其实你们可以把它想成一栋楼——每层住着不同的人,各干各的活。”
傅麦眨眨眼,笔已经动起来了。
“最底下一层是地基,基础设施,数据库、缓存、消息队列都在这儿。中间这些是业务服务,是这栋楼里真正干活的人。最顶上,是跟用户打交道的那一层。”
他把“地基”那两个点敲了敲,话锋一转:“数据库这块规矩最多。主从分离,读多写少……文档里都写了,我今天不展开,你们回去翻仓库就知道。”他说着又补了一句,“别看规矩多,都是前人用线上事故换回来的。你们记住一点就行——数据库不背锅,背锅的是没规矩的人。”
王宇恒又翻了一页,讲了讲内部封装的公共组件,最后落在报错日志那套排查体系上:“日志不是用来背锅的,是拿来破案的。线上出了事,第一件事不是猜,是看日志。你们以后排障,一半的时间都会花在看日志上。”
傅麦埋头狂记,笔尖在纸面上刮出沙沙的声响。她觉得自己像一块干海绵掉进了水里,哪哪儿都想吸,又怕吸错了地方。她记一会儿抬头看一眼幕布,又飞快低下头补上两笔。
温临澈坐在角落,姿态端端正正,笔记本摊开,但写得很慢。他每记一句,都要抬眼在幕布上找到对应位置,像在给一张地图做标注。学到这套框架要花多少功夫——这个念头在他脑子里转了一圈,没说出来,只是那支笔在某个节点上停了停,又接着往下写。
郑凯的笔迹工整得像印刷体,一条一条列得清楚。他记到一半,忽然在“内部封装框架”几个字底下画了一条横线,又用另一支颜色的笔在边上补了一行小字。傅麦偷偷瞟了一眼,没看清写的什么,但凭直觉猜,八成跟这套东西出去以后好不好使有关系。
王宇恒讲到服务调用链路,忽然偏过头抛了个问题:“你们说,A服务要调B服务,中间网络抖了一下,这个锅谁来背?”
三个人齐刷刷抬头。
傅麦下意识开口:“谁调的……”
“对,谁调谁负责。所以重试、超时、降级这些兜底,都得调的人自己处理。别指望网络自己恢复,它不欠你。”
后排传来一声闷笑。逸城放下保温杯,慢悠悠开口,声音里带着点懒洋洋的笑意:“我补充个问题啊。你们想想,要是B服务这会儿特别忙,A又非要调它,怎么办?”
温临澈想了想,说:“排队。”
“排队,谁排?”
温临澈顿了一下。
“你先想想。这个想明白了,消息队列你就吃透了。”
他说完就靠回椅背,又拧开保温杯喝了一口,一副今日任务已完成的模样。傅麦看着他,忽然觉得这位大师哪像个什么技术大牛,分明是只晒太阳的大熊猫——看着懒洋洋的,可随口一句话,就把她脑子里那团乱麻的线头给挑出来了。
技术培训临近尾声,王宇恒打开电脑,把一串链接、权限、账号一个个给三个人开了:
“技术文档、Demo工程、代码仓库,权限我都开好了。回去自己翻着看,照着敲。有不明白的,随时找我,或者找大师。”