Google Fonts 加速服务 架构调整

由于目前世界互联网的变化,很多老牌的公益服务都陆续停止了服务。(例如极客族加速全面替换为 CloudFlare CDN)

为确保服务的进一步稳定性和对于成本的有效控制,我们进行了架构调整。

同时,为了避免因 Node.js 回源节点容器冷启动速度缓慢导致的 TTFB 较高的问题,我们对回源中间件进行了全面的重构。

架构调整

Google Fonts 加速 一文中,我们制定了初步方案:

  • 使用 fonts.sourcegcdn.com 代理 fonts.googleapis.com
  • 使用 fonts-gstatic.sourcegcdn.com 代理 fonts.gstatic.com

这是非常标准的 Google Fonts 代理方法,诸如极客族加速、loli加速等都在使用。

但在之后的学习中,我们意识到,这是无意义的。

Google Fonts 加速的意义并不是为了在速度上赶超官方源,而是为了让中国大陆等地区可以正常访问被屏蔽的Google Fonts服务,同时让不被屏蔽的地区也能够高速使用。这也是我们最初否决 ustc、googleapis.cn 的主要原因。

但,Google 在中国大陆并没有彻底撤出,fonts.googleapis.cn 与 fonts.gstatic.cn 仍然提供服务。而字体加载是通过 CSS,这也就意味着我们无需再对 fonts.gstatics.com 上的静态字体文件进行代理(代理字体文件还会占用大量存储空间和带宽资源)。

为此,我们取消了 fonts-gstatic.sourcegcdn.com 的代理服务,同时使 fonts.sourcegcdn.com 根据来访者的IP判断位置,并随之自动分配 fonts.gstatic.com 或 fonts.gstatic.cn 的字体源。

例如:

  • 用户 A 位于中国大陆,他请求 fonts.sourcegcdn.com,解析 CSS 样式表后通过 fonts.gstatic.cn 获取静态文件。
  • 用户 B 位于美国,他请求 fonts.sourcegcdn.com,解析 CSS 样式表后通过 fonts.gstatic.com 获取静态文件。

回源中间件重构

由于基于 Express.js 的代理程序必须在 Docker image 包含 Node.js 的 Runtime,使得如此轻量化的应用还需要 200MB 以上的镜像。

如此巨大的镜像使得容器冷启动速度极慢。对于一些在三层缓存架构仍未命中的请求,就会出现 504、404 等不正常响应,严重影响用户体验。

为此,我们使用与 GitHub 回源中间件升级 相同的 Gin 技术栈,重写了链路上几乎所有影响 TTFB 的中间件,同时对多层中间件进行了合并。

速度

目前环境下,fonts.sourcegcdn.com 能够呈现较为良好的响应速度。

检测点解析IP解析IP所在地状态总时间解析时间连接时间下载时间下载大小下载速度
北京联通180.119.234.204江苏扬州电信2000.122s0.031s0.025s0.122s0.14KB1.148Kb/s
德阳电信116.55.252.186云南昆明电信2000.086s0.006s0.017s0.086s0.14KB1.628Kb/s
内蒙电信180.119.234.157江苏扬州电信2000.156s0.035s0.033s0.156s0.14KB0.897Kb/s
眉山联通114.112.221.148江苏无锡联通2000.148s0.006s0.041s0.148s0.41KB2.77Kb/s
成都移动180.119.234.157江苏扬州电信2000.167s0.028s0.042s0.167s0.14KB0.838Kb/s
河南联通180.119.234.204江苏扬州电信2000.105s0.025s0.018s0.105s0.14KB1.333Kb/s
上海联通180.119.234.177江苏扬州电信2000.059s0.007s0.011s0.059s0.14KB2.373Kb/s
湖北电信180.119.234.147江苏扬州电信2000.102s0.022s0.02s0.102s0.14KB1.373Kb/s
上海联通180.119.234.148江苏扬州电信2000.063s0.006s0.012s0.063s0.14KB2.222Kb/s
广州市电信180.119.234.177江苏扬州电信2000.116s0.027s0.025s0.116s0.14KB1.207Kb/s
南京市联通180.119.234.246江苏扬州电信2000.043s0.006s0.008s0.043s0.14KB3.256Kb/s
成都市移动36.147.37.229云南昆明移动2000.072s0.004s0.016s0.072s0.14KB1.944Kb/s
泉州市电信180.119.234.246江苏扬州电信2000.107s0.02s0.022s0.107s0.14KB1.308Kb/s
湖北电信180.119.234.138江苏扬州电信2000.114s0.022s0.021s0.114s0.14KB1.228Kb/s
南通市电信180.119.234.177江苏扬州电信2000.054s0.01s0.006s0.054s0.14KB2.593Kb/s
安徽联通221.204.209.124山西太原联通2001.212s0.025s1.023s1.212s0.41KB0.338Kb/s
洛阳电信150.138.231.206山东济南电信2000.166s0.002s0.022s0.166s0.41KB2.47Kb/s
四川电信116.55.252.186云南昆明电信2000.289s0.052s0.031s0.289s0.14KB0.484Kb/s
新乡市联通61.54.91.234河南洛阳联通2000.088s0.011s0.004s0.088s0.41KB4.659Kb/s
乌兰察布市联通221.204.209.124山西太原联通2002.383s0.061s0.018s2.383s0.41KB0.172Kb/s
张家口市电信150.138.231.206山东济南电信2000.202s0.015s0.03s0.202s0.41KB2.03Kb/s
安徽电信58.223.176.236江苏连云港电信2000.179s0.022s0.015s0.179s0.14KB0.782Kb/s
北京移动183.204.69.218河南郑州移动2000.11s0.01s0.015s0.11s0.41KB3.727Kb/s
北京电信150.138.231.206山东济南电信2000.121s0.005s0.012s0.121s0.41KB3.388Kb/s
重庆电信116.55.252.136云南昆明电信2000.168s0.009s0.019s0.168s0.14KB0.833Kb/s
重庆移动183.230.71.195重庆移动2000.387s0.301s0.009s0.387s0.41KB1.059Kb/s
重庆联通114.112.221.148江苏无锡联通2000.274s0.051s0.027s0.274s0.41KB1.496Kb/s
福建电信113.105.165.82广东东莞电信2000.126s0.009s0.02s0.126s0.14KB1.111Kb/s
福建移动120.233.180.23广东广州移动2000.261s0.085s0.033s0.261s0.14KB0.536Kb/s
福建联通36.248.43.183福建福州联通2000.202s0.079s0.006s0.202s0.14KB0.693Kb/s
广东电信113.105.165.82广东东莞电信2000.133s0.027s0.011s0.133s0.14KB1.053Kb/s
广东移动120.233.180.23广东广州移动2000.121s0.032s0.012s0.121s0.14KB1.157Kb/s
广东联通114.112.221.148江苏无锡联通2000.268s0.017s0.034s0.268s0.41KB1.53Kb/s
贵州电信116.55.252.186云南昆明电信2000.177s0.037s0.022s0.177s0.14KB0.791Kb/s
贵州联通114.112.221.148江苏无锡联通2000.338s0.076s0.038s0.338s0.41KB1.213Kb/s
广西电信222.218.187.212广西南宁电信2000.177s0.01s0.006s0.177s0.14KB0.791Kb/s
广西移动112.47.20.86福建泉州移动2000.334s0.031s0.062s0.334s0.14KB0.419Kb/s
甘肃电信118.183.8.97甘肃兰州电信2000.318s0.058s0.012s0.318s0.41KB1.289Kb/s
黑龙江联通42.4.53.189辽宁抚顺联通2000.146s0.003s0.021s0.146s0.41KB2.808Kb/s
湖北移动223.109.136.188江苏宿迁移动2000.445s0.039s0.034s0.445s0.14KB0.315Kb/s
河南电信42.81.85.234天津电信2000.15s0.002s0.019s0.15s0.41KB2.733Kb/s
湖北联通124.14.1.167上海鹏博士2000.233s0.096s0.019s0.233s0.14KB0.601Kb/s
湖南电信113.105.165.168广东东莞电信2000.436s0.284s0.014s0.436s0.14KB0.321Kb/s
湖南移动117.169.113.226江西南昌移动2000.272s0.05s0.018s0.272s0.14KB0.515Kb/s
湖南联通114.112.221.148江苏无锡联通2000.207s0.072s0.021s0.207s0.41KB1.981Kb/s
海南电信113.105.154.53广东东莞电信2000.133s0.005s0.016s0.133s0.14KB1.053Kb/s
河北电信150.138.231.206山东济南电信2000.307s0.187s0.011s0.307s0.41KB1.336Kb/s
海南移动120.233.180.23广东广州移动2000.4s0.029s0.017s0.4s0.14KB0.35Kb/s
山东电信150.138.231.206山东济南电信2000.287s0.186s0.015s0.287s0.41KB1.429Kb/s
河北联通61.54.91.234河南洛阳联通2000.172s0.045s0.015s0.172s0.41KB2.384Kb/s
河北移动183.204.69.218河南郑州移动2000.228s0.018s0.025s0.228s0.41KB1.798Kb/s
河南移动183.204.69.218河南郑州移动2000.197s0.042s0.008s0.197s0.41KB2.081Kb/s
深圳市电信113.105.165.222广东东莞电信2000.174s0.028s0.006s0.174s0.14KB0.805Kb/s
沈阳市电信42.81.85.234天津电信2000.184s0.024s0.025s0.184s0.41KB2.228Kb/s
北京电信42.81.85.234天津电信2000.42s0.314s0.008s0.42s0.41KB0.976Kb/s
江西联通117.169.113.106江西南昌移动2000.324s0.168s0.012s0.324s0.14KB0.432Kb/s
江苏电信180.119.234.204江苏扬州电信2000.193s0.054s0.008s0.193s0.14KB0.725Kb/s
吉林电信42.81.85.234天津电信2000.276s0.01s0.02s0.276s0.41KB1.486Kb/s
吉林移动111.41.56.190黑龙江哈尔滨移动2000.142s0.012s0.014s0.142s0.41KB2.887Kb/s
吉林联通42.4.53.183辽宁抚顺联通2000.486s0.309s0.031s0.486s0.41KB0.844Kb/s
江西电信180.119.234.246江苏扬州电信2000.207s0.016s0.013s0.207s0.14KB0.676Kb/s
江西移动117.169.113.226江西南昌移动2000.255s0.012s0.03s0.255s0.14KB0.549Kb/s
江苏联通114.112.221.249江苏无锡联通2000.159s0.016s0.01s0.159s0.41KB2.579Kb/s
江苏移动117.169.113.106江西南昌移动2000.432s0.304s0.018s0.432s0.14KB0.324Kb/s
呼和浩特市电信150.138.231.206山东济南电信2000.189s0.042s0.023s0.189s0.41KB2.169Kb/s
辽宁电信150.138.231.206山东济南电信2000.301s0.016s0.039s0.301s0.41KB1.362Kb/s
辽宁联通42.4.53.213辽宁抚顺联通2000.275s0.124s0.01s0.275s0.41KB1.491Kb/s
辽宁移动117.161.38.205内蒙古呼和浩特移动2000.318s0.07s0.035s0.318s0.41KB1.289Kb/s
内蒙移动117.161.38.205内蒙古呼和浩特移动2000.387s0.247s0.021s0.387s0.41KB1.059Kb/s
内蒙联通61.54.91.253河南洛阳联通2000.253s0.037s0.04s0.253s0.41KB1.621Kb/s
宁夏电信180.119.234.138江苏扬州电信2000.273s0.048s0.042s0.273s0.14KB0.513Kb/s
宁夏移动112.46.34.251陕西西安移动2000.25s0.1s0.019s0.25s0.41KB1.64Kb/s
青海联通61.54.91.234河南洛阳联通2000.348s0.051s0.026s0.348s0.41KB1.178Kb/s
青海移动117.169.113.106江西南昌移动2000.35s0.047s0.055s0.35s0.14KB0.4Kb/s
青海电信118.183.8.108甘肃兰州电信2000.193s0.084s0.009s0.193s0.41KB2.124Kb/s
四川移动183.230.71.195重庆移动2000.363s0.016s0.037s0.363s0.41KB1.129Kb/s
陕西电信118.183.8.119甘肃兰州电信2000.177s0.009s0.021s0.177s0.41KB2.316Kb/s
成都市联通114.112.221.148江苏无锡联通2000.267s0.014s0.049s0.267s0.41KB1.536Kb/s
陕西移动112.46.34.251陕西西安移动2000.32s0.066s0.006s0.32s0.41KB1.281Kb/s
陕西联通116.177.225.203青海西宁联通2000.22s0.008s0.022s0.22s0.41KB1.864Kb/s
上海电信180.119.234.138江苏扬州电信2000.286s0.012s0.009s0.286s0.14KB0.49Kb/s
上海移动223.109.136.188江苏宿迁移动2000.185s0.009s0.026s0.185s0.14KB0.757Kb/s
山西电信150.138.231.206山东济南电信2000.241s0.002s0.016s0.241s0.41KB1.701Kb/s
山西移动183.201.223.85山西太原移动2000.362s0.015s0.014s0.362s0.41KB1.133Kb/s
山西联通61.54.91.197河南洛阳联通2000.2s0.059s0.016s0.2s0.41KB2.05Kb/s
山东移动183.204.69.218河南郑州移动2000.391s0.032s0.027s0.391s0.41KB1.049Kb/s
山东联通61.54.91.204河南洛阳联通2000.319s0.086s0.015s0.319s0.41KB1.285Kb/s
四川电信116.55.252.136云南昆明电信2000.242s0.051s0.022s0.242s0.14KB0.579Kb/s
四川联通121.51.68.173上海腾讯云2000.351s0.088s0.043s0.351s0.14KB0.399Kb/s
天津电信42.81.85.234天津电信2000.163s0.016s0.005s0.163s0.41KB2.515Kb/s
天津移动117.131.201.103天津移动2000.097s0.011s0.007s0.097s0.41KB4.227Kb/s
天津联通221.204.209.124山西太原联通2000.215s0.015s0.016s0.215s0.41KB1.907Kb/s
新疆电信118.183.8.119甘肃兰州电信2000.52s0.195s0.036s0.52s0.41KB0.788Kb/s
新疆移动112.46.34.251陕西西安移动2000.461s0.175s0.058s0.461s0.41KB0.889Kb/s
新疆联通116.177.225.203青海西宁联通2000.337s0.173s0.032s0.337s0.41KB1.217Kb/s
黑龙江电信150.138.231.206山东济南电信2000.217s0.012s0.041s0.217s0.41KB1.889Kb/s
黑龙江移动117.131.201.103天津移动2000.221s0.012s0.028s0.221s0.41KB1.855Kb/s
西藏电信118.183.8.108甘肃兰州电信2000.278s0.081s0.034s0.278s0.41KB1.475Kb/s
云南电信116.55.252.186云南昆明电信2000.23s0.009s0.008s0.23s0.14KB0.609Kb/s
云南移动36.147.37.229云南昆明移动2000.207s0.082s0.01s0.207s0.14KB0.676Kb/s
浙江移动117.169.113.226江西南昌移动2000.265s0.079s0.02s0.265s0.14KB0.528Kb/s
浙江联通121.51.68.173上海腾讯云2000.214s0.116s0.01s0.214s0.14KB0.654Kb/s
浙江电信122.228.87.186浙江温州电信2000.276s0.081s0.013s0.276s0.14KB0.507Kb/s
数据来自 https://boce.com
Share
Tweet
Share
Pin it
Share
Share
发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Previous Post

就 AlphaPic 稳定性问题的统一答复