软件技术学习笔记

个人博客,记录软件技术与程序员的点点滴滴。

NodeJS网络调用链优化

为了提升用户体验,前端首屏使用NodeJS SSR。为了容易观测多个环境NodeJS层的网络调用链与性能,我们加入了Jaeger链路追踪,这也是微服务开发中常用的手段。

通过Jaeger UI观察,我们很容易发现首屏SSR与API转发有以下问题:

  1. 多段接口依次执行,有先后次序依赖,没有发挥并发请求的优势。
  2. 未区分用户类型,有多余的网络请求。
  3. 转发的API请求,也请求多余的用户信息等。

如果使用以前打日志的方式,缺少可视化的分析手段,定位问题的周期比较长。处理以上的问题之后,首屏SSR与API转发的网络性能提升50%,给后端的请求数分别减少3/8与3/4。在并发量比较大的情况下,可以很大程度上减轻服务器的压力。

目前,用户量比较少,在云上后端接口返回在50ms时,首屏SSR可以在100ms内处理完成(不算用户到服务器的网络延时)。这也是我目前性能优化的极限了。

继续阅读→

新的方式传递链路追踪上下文(NodeJS)

最近一个多月都在忙于项目,没有时间记录新的知识。我们起了一个全新的前端项目,技术选型是React + SSR + Dva。要求的起点也比较高:用户导航首屏SSR,其它时候CSR;代码要求SSR与CSR复用;所有的请求经过Node层;页面显示、接口请求均要求小于1秒。

为了容易定位调用链路的性能点,我们加入了Jaeger Open Tracing,这就涉及到链路追踪上下文的传递。

继续阅读→