大厂都在做的前端稳定性到底是啥呢?

引言

在一次公司的前端无法访问的事故复盘后,我们调查了关于应用稳定性前端可以做些什么。对于前端稳定性其实在整个用户访问到页面到请求都需要全链路的监控与追踪,每一个环节都值得我们深入探究一下。本文就从应用服务器、静态资源、页面渲染、接口请求4大方面来各个击破,看看前端稳定性到底需要如何建设。

应用服务器

应用服务器在整个链路的最上游,从用户在地址栏输入域名访问后,流量通过网关(由于网关层的稳定性在大多数公司都不是由业务团队负责,本文暂略去这一部分,具体要做的和应用服务器相对也比较类似)进入到我们的应用服务器,如果我们应用服务器挂了,那么没有任何后续的稳定性可言了。

应用稳定性

应用稳定性指的是应用服务器运行的服务进程的稳定性。

对于普通的页面服务器来说,在应用稳定性层面上可以补充的是页面的访问日志(例如UA、IP等)。

而对于需要跑一个node服务的这种BFF的情形,应用稳定性可以做的事情就更多了,需要分等级的日志记录,异常抛出的监控,请求的响应速度的监控等,一般通过对应中间件进行处理与上报。

容器稳定性

目前云原生的环境下,应用服务器一般采用容器方式部署,部署平台一般会提供监控的基础设施,来监控容器的运行状态,如CPU、内存负载,内外网流量等。当这些数据出现异常值或者大幅波动时,就需要通过告警机制来通知到对应负责的同学,采取对应的措施,如重启、扩缩容等。

在部署应用时,一般我们可以跑多个容器来保证就算有一个容器挂了,用户还是可以访问到应用。如果将多个容器部署在不同的区域,可以规避例如断电、火灾等某个区域服务器集体宕机的风险,我们一般把这个措施叫做异地多活。

最后,我们的容器需要暴露端口从而让用户流量可以访问,那么我们就可以模拟用户的行为对服务器进行探活。如我们的容器就是作为一个页面服务器跑一个nginx,则定期轮询该nginx容器暴露的端口就可以探测我们的容器是否正在正常运行。

资源CDN加载

CDN容灾

美团在今年出了一套新的CDN容灾方案:Phoenix

在这套方案中,我们可以看到美团将CDN容灾分为5个部分:

  1. 等效CDN服务
  2. 端侧的重试和上报
  3. 服务端侧通过上报信息动态计算CDN的优先级
  4. 容灾监控平台
  5. 容灾配置平台

美团将CDN的重试切流放在了端侧,因为端侧才是CDN真正的使用者,拥有CDN状态的第一手信息,服务端侧相对则更多负责对于端侧上报的数据进行汇总与动态调整的工作。

我们将美团端侧SDK的流程图贴在了下方,可以为我们做CDN容灾提供很多参考。

对于中小型的初创企业来说,建设一整套这样的全链路CDN容灾方案可能成本较高,能够快速入手的就是在端侧根据加载结果进行重试,重试失败进行告警,以及尽量选择稳定靠谱的CDN服务商。

画面渲染

错误收集

在画面渲染阶段,首先要做的是对JS的错误进行收集。目前通用的方案是采用sentry在JS抛出错误的时候进行上报。如果页面采用类似ErrorBoundary的形式拦截了错误,或catch了异常的话,需要在ErrorBoundary或catch块中人工进行上报。

同时,出于安全的考虑,在生产环境往往不会将sourcemap暴露给用户,而在生成的代码中直接进行问题定位溯源往往比较困难。解决方案是在构建时仍然先打出sourcemap,上传到sentry平台上,之后再将sourcemap删除。

需要注意的是,一些工具删除sourcemap的时候会将生成的代码中添加的sourcemap的引用也删除,这会导致代码变更,如果还在html的script标签采用integrity属性保证JS代码未被篡改的话integrity需要在sourcemap删除后计算。

错误处理

在上一part中,我们也提到了有ErrorBoundary这种来做错误处理的方式,让在有逻辑异常发生时用户的页面不至于白屏或者没有反应。在应用中,我们也可以做404的自定义页面,在用户发生这种情况时提供更友好的说明与返回路径。

接口

前端对于接口是消费方,如果只在后端进行接口问题日志的记录的话,会有幸存者偏差的可能。但是一般的超时或者500是不会触发sentry的上报机制的,所以我们可以在框架层面单独进行这些问题的告警,接口的报警的指定方可以设为后端同学。

而前端在请求不到后端的一些情况时来进行重试,是能提高用户体验的,类似超时或者服务器繁忙时,但是这需要前后端有良好的接口定义规范:

  1. 遵循restful,post不是幂等,而get、put、delete等都为幂等,只对幂等请求进行重试
  2. 错误码定义规范,规定什么类型的错误码可以重试,什么类型的不可以

报警

上述所有的监控措施最后能够被开发获知的途径就是通过报警。从一个角度来说,报警是本文中最容易的环节,对于研发侧来说只需要在报警平台上进行配置,用合适的方式将合适的错误通知到合适的开发/运维人员。然而,这一步其实又是最复杂的环节,需要各个应用根据自己的成熟度进行分析,对这三个“最合适”需要自己的度量。如果报警过于疏松,就可能会漏掉关键的错误导致线上问题未被发现;而如果报警过于密集,有许多误报,又会导致负责人看到报警变得松懈,达不到报警的目的。

以上就是我们总结的前端稳定性建设需要关注的各个方面以及对应需要采取的手段。前端稳定性是一个需要长期建设的环节,愿大家的应用都能够线上无bug,安稳每一天。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 国内互联网大厂在跟上ChatGPT这样的大型语言模型方面采取了多种策略,包括自主研发、合作研究以及收购等。 自主研发方面,一些国内互联网大厂,如百度、阿里巴巴等公司,也在积极推进大型语言模型的研发。这些公司都拥有自己的研究院所,可以聚集一批顶尖的科学家、研究人员,加强研究和技术储备,以提高语言模型的质量和性能。 合作研究方面,一些公司也与高校、研究机构、开源社区等进行合作,共同研究和开发大型语言模型。这种方式可以将各方的资源和技术优势结合起来,提高研究效率和成果质量。 另外,一些公司也通过收购的方式快速获取相关技术和人才。例如,字节跳动在2018年收购了美国的人工智能公司Reelationships,从而获得了其语言模型方面的技术和人才。 总的来说,国内互联网大厂在跟上ChatGPT等大型语言模型方面,采取了多种策略,通过不断加强研发、合作研究和收购等方式,不断提升自身的技术能力和竞争力。 ### 回答2: 国内互联网大厂如何跟上ChatGPT的技术进展? 随着人工智能技术的迅猛发展,国内互联网大厂也在尽力跟上ChatGPT等自然语言处理领域的最新进展。他们通过以下途径来实现这一目标: 1. 增加研发投入:国内互联网大厂意识到自然语言处理技术的重要性,纷纷增加研发投入以提升该领域的研究和应用。 2. 培养优秀人才:为了拥有更好的技术实力,这些大厂积极吸引、培养和留住优秀的人工智能专家和研究人员,并建立起了自己的研究团队和实验室。 3. 科研合作与学术交流:国内互联网大厂与国内外高等院校和研究机构进行紧密的科研合作和学术交流,以获取最新的技术发展和前沿研究成果。 4. 技术引进与合作:他们也积极与国外顶尖科技公司合作,引进最新的自然语言处理技术和人工智能算法,并获得相关的技术授权。 5. 数据积累与模型训练:国内互联网大厂拥有庞大的用户数据和物联网设备数据资源,通过收集和整合这些数据来训练模型,加速自然语言处理技术的研发与应用。 6. 研发和应用结合:国内互联网大厂注重将研发成果与实际应用相结合,将自然语言处理技术广泛应用于产品和服务中,不断提升用户体验。 总之,国内互联网大厂通过加大研发投入、优化人才队伍、与高校合作、引进合作等方式不断跟上ChatGPT的技术进展,以保持在自然语言处理领域的领先地位,并将这些研究成果融入到实际应用中,为用户提供更好的产品和服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值