返回第二十三章 论道  美利坚:我的模拟器不对劲!首页

关灯 护眼     字体:

上一页 目录 下一章

最新网址:m.92yanqing.net

“下一个。”

接下来几个人轮流发言,思路都大同小异——资料库、哈希、缓存、分片。有人提到了用nosql,有人提到了用消息队列做异步统计,有人提到了用cdn加速。

陈哲一直不语。

本的视线最后落在他身上。

“陈,你呢?”

所有人的目光都转过来。

陈哲沉默了两秒。

“我想到的跟大家不太一样。”他说。

本的眉毛挑了一下。

“你可以说来听听。”

陈哲往前走了一步,站在白板旁边。

“大家说的都是存储和查询的逻辑,我换个角度——成本。”

他顿了顿。

“短连结服务最烧钱的是什么?不是伺服器,不是资料库,是流量。每次访问都要302重定向,每次重定向都是一次http请求。如果服务做大了,每天几亿次访问,光是流量钱就能烧破產。”

人群安静下来。

“所以我会在重定向之前加一层cdn。”陈哲继续说,“短码的访问路径先走cdn,如果cdn有缓存,直接返回重定向响应,不回源。缓存时间可以设长一点,比如24小时。这样99%的流量都被cdn扛住了,源站只需要处理缓存未命中的请求。”

本的眉头微皱。

陈哲继续。

“然后是短码生成。大家说的哈希和自增id都有问题——哈希有衝突,自增id太规律。我会用预生成的方式:启动一个服务,提前生成一批短码放在队列里。用户来的时候,直接从队列里取一个分配出去。”

“这样生成短码和分配短码解耦了。生成服务可以用雪花算法保证全局唯一,分配服务只需要从队列里pop。就算分配服务掛了,队列里的短码还能顶一阵……”

“然后是资料库。短码和长url的映射关係可以存mysql,但高频访问的短码要放redis。如果要做大,可以按短码前缀分片,比如0开头的放一组,1开头的放另一组。”

“最后是监控。每个短码的访问量要统计,但不能影响主流程。可以用消息队列,异步写日誌,然后离线分析。”

他说完了。

人群安静了几秒。

本盯著他,表情有点奇怪。

麦克站在人群后面,手里的咖啡杯停在半空中,眼睛瞪得比刚才大了一圈。

“你……”麦克张了张嘴,像是想说什么,但又咽了回去。

汤姆第一个开口。

“cdn那层,”他皱著眉,“重定向响应能缓存吗?”

“能。”陈哲说,“302重定向也是http响应,只要设置cache-control头,cdn就会缓存。用户访问短码的时候,cdn直接返回302,连源站都不碰。”

汤姆沉默了两秒,然后点了点头。

莱拉在旁边喃喃自语:“预生成队列……这个思路倒是第一次听说。”

本的眉头舒展开来。

他盯著陈哲看了几秒,然后笑了。

“有意思。”

他把白板放下,拿起保温杯喝了一口。

“你在哪家公司实习过?”

“没实习过。”陈哲说。

本愣了一下。

“那你在哪干过?”

“无可奉告。”

本的表情有点微妙。他把保温杯放下,目光在陈哲身上转了一圈,最后落在那台老旧的thinkpad上。

沉默了两秒。

“行。”本说,“我记住了。”

他没再多说什么,转身朝人群挥了挥手:“走吧,喝咖啡去。楼下那家店不错,我请。”

人群开始往出口移动。有人还在小声討论刚才那个设计,有人已经开始聊別的话题。

陈哲站在原地,没动。

麦克走过来,在他旁边站定。

“小子,你……”麦克的声音压得很低,“你从哪学的这些?”

陈哲看了他一眼。

“网上。”

麦克盯著他看了几秒,然后摇了摇头。

“我拉你进群的时候还以为你是个萌新,”他低声说,“结果你他妈是个扮猪吃老虎的。”

陈哲没说话。

麦克拍了拍他的肩膀。

“走吧,喝咖啡去。”

……

pier 57楼下有一家叫“blue bottle”的咖啡店,蓝白相间的招牌,门口排著七八个人。本带著一群人走过去,直接推门进了店里——他显然是熟客,店员看见他,点了点头,指了指角落里的几张空桌子。

十几个人分散坐下。本去柜檯点单,回来的时候手里拿著一沓小票,一张一张分给在座的人。

“自己点的自己拿。”他说。

陈哲拿到的是美式,黑咖啡,不加糖不加奶。他端起来喝了一口,苦的,但能接受。

莱拉坐在他旁边,手里拿的是一杯拿铁,奶泡上面画著一颗心。她盯著那颗心看了两秒,然后用勺背把它搅散了。

“hello?陈哲。你那个设计,”她忽然开口,“预生成队列那个思路,是从哪学的?”

陈哲转头看她,思索了一会儿:“学校竞赛。”

莱拉沉默了两秒,然后点点头,没再追问。

对面坐著书虫。

那个华人男子从刚才开始就一直没说话,只是坐在角落里,面前放著一杯冷萃,冰块已经化了一半,他没动。他的眼镜片上又起了雾,不知道是咖啡的热气还是別的什么。

陈哲的目光落在他身上。

书虫似乎感觉到了什么,抬起头。

两个人的目光在空中碰了一下。

书虫没说话,低下头,继续盯著那杯冷萃。

陈哲收回目光。

本端著一杯拿铁走过来,在陈哲旁边坐下。

“你那个设计,”他说,语气比刚才轻鬆了一点,“说实话,有点出乎我意料。”

陈哲没说话。

“cdn那层,”本继续说,“一般新人想不到。预生成队列那个,更不是新手能想到的。”

他顿了顿,喝了一口咖啡。

“你真没实习过?”

“没。”

本盯著他看了几秒,然后笑了。

“行,我不问了。”

他站起来,朝其他人挥了挥手。

“一点钟我还得去剪视频,先走了。你们聊。”

他走了。

人群渐渐散开。有人起身去柜檯续杯,有人走到门外抽菸,有人凑在一起聊技术。陈哲坐在原位,盯著杯子里黑乎乎的液体,脑子里不知道在想什么。

麦克走过来,在他旁边坐下。

“感觉怎么样?”

陈哲想了想。

“还行。”

麦克笑了笑。

“本那人对新人一般不怎么上心,”他说,“但他刚才多看了你几眼。这是好事。”

陈哲点点头,没说话。

窗外,阳光照在哈德逊河上,波光粼粼。一艘卡其色观光船慢悠悠地驶过,船上的人很小,看不清在干什么。

“下午有什么安排?”麦克问。

“回去。”陈哲说,“写代码。”

麦克点点头,站起来。

“行,那我也不留你了。群里聊。”

他拍了拍陈哲的肩膀,转身走了。

陈哲抿了一口咖啡,这咖啡是蓝瓶咖啡的一类,以精品单一產地咖啡豆和新鲜烘焙著称。

陈哲实际上回去是不可能写代码的。

毕竟他其实根本不是程式设计师。

他倒也没有在这里留多久,二手thinkpad放在背包里没拿出来过,回头换乘了几次纽约地铁,就回了布鲁克林区。

『加入书签,方便阅读』

上一页 目录 下一章