狂风中文网

第二十三章 论道(第5页)

天才一秒记住【狂风中文网】地址:https://www.kfzw.net

本还是点了点头。

“下一个。”

接下来几个人轮流发言,思路都大同小异——资料库、哈希、缓存、分片。

有人提到了用nosql,有人提到了用消息队列做异步统计,有人提到了用cdn加速。

陈哲一直不语。

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

“陈,你呢?”

所有人的目光都转过来。

陈哲沉默了两秒。

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

他说。

本的眉毛挑了一下。

“你可以说来听听。”

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

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

他顿了顿。

“短连结服务最烧钱的是什么?不是伺服器,不是资料库,是流量。

每次访问都要302重定向,每次重定向都是一次http请求。

如果服务做大了,每天几亿次访问,光是流量钱就能烧破產。”

人群安静下来。

“所以我会在重定向之前加一层cdn。”

陈哲继续说,“短码的访问路径先走cdn,如果cdn有缓存,直接返回重定向响应,不回源。

缓存时间可以设长一点,比如24小时。

这样99%的流量都被cdn扛住了,源站只需要处理缓存未命中的请求。”

本的眉头微皱。

陈哲继续。

“然后是短码生成。

大家说的哈希和自增id都有问题——哈希有衝突,自增id太规律。

我会用预生成的方式:启动一个服务,提前生成一批短码放在队列里。

用户来的时候,直接从队列里取一个分配出去。”

“这样生成短码和分配短码解耦了。

生成服务可以用雪花算法保证全局唯一,分配服务只需要从队列里pop。

就算分配服务掛了,队列里的短码还能顶一阵……”

“然后是资料库。

短码和长url的映射关係可以存mysql,但高频访问的短码要放redis。

如果要做大,可以按短码前缀分片,比如0开头的放一组,1开头的放另一组。”

“最后是监控。

每个短码的访问量要统计,但不能影响主流程。

可以用消息队列,异步写日誌,然后离线分析。”

本章未完,请点击下一章继续阅读!若浏览器显示没有新章节了,请尝试点击右上角↗️或右下角↘️的菜单,退出阅读模式即可,谢谢!

如遇章节错误,请点击报错(无需登陆)

新书推荐

团宠格格是食修非典型求生欲[快穿]洪荒:我人族圣师,开局创建武道在半岛开休闲咖大唐之超级军火商顽烈穿越修仙界我靠卖惨走上人生巅峰人在斗罗,没有魂环绝地求生之天下无敌网游异界之万物领主法术即真理在星际成为传说锦鲤少女逃荒种田神奇宝贝之医武名侦探柯南之溷吃等死新婚夜,轮椅霸总站起来了系统:我在诸天万界做大侠小说家多开几个马甲怎么了海兰萨领主联盟:我真不是绝活哥八零外贸女厂长不死的我只好假扮血族签到天师宫,下山已无敌农家小福女:大佬她被迫算命营业重生90:辣妻要翻天