前端性能监控(RUM)接入层服务高并发优化实践(二)——并发模型原理

前言

往期我们介绍了 前端性能监控 (RUM) 接入层服务高并发优化实践 ,我们针对缓存模型进行重新设计与优化,相信不少用户也感受到了 RUM 前所未有的流畅。

腾讯云前端性能监控(RUM) 系统中,接入层服务时刻承受着平均上百万 QPS 的上报请求,所以对于服务端的性能要求是极其高。接着往期 前端性能监控 (RUM) 接入层服务高并发优化实践 说的缓存模型,本次我们将带为您潜入 GO 内部了解其原理和思路,并介绍接入层使用 GO 到底有哪些优势?

RUM 的 Go 接入层正在逐步灰度中,目前国际地区资源接入已使用 Go 接入层进行数据接收与清洗。目前压测结果来说,Go 接入层在完全没有优化的情况下,QPS 表现已经是 Node 的 3 倍。在优化后经压力测试,8 核 16G 的机器面对大小为15K 数据的请求,QPS 能达到11w 次。

看到这里,不少人会疑惑不解,为什么 Go 会比 Node 的 QPS 表现好那么多呢?Go 的性能如此惊人?小编也是充满好奇,接下来小编带您进入 GO 并发原理的探索之旅。

Node 模型

Node 的并发是建立在单进程上的,涉及到网络 I/O 或者其他接口的事情,一般都是通过异步事件驱动的。但是单进程内只有一个主执行栈,因为如果有密集的 CPU 运算,会影响服务的性能。

那 Go 是怎么做的呢?

说到 Go 的并发原理,从操作系统的演进开始讲起,会更好地理解并吸收我们的优化思路。最重要的并非原理本身哦!

操作系统的演进

最开始的操作系统是单进程的,任务只能串行地一个一个执行,这样执行效率会不大理想,因为很可能前一个任务会直接阻塞掉 CPU 继续执行,造成 CPU 的浪费。

你可能感兴趣的:(前端)