最近进行了rust语言重构,但简化了许多,主要是面对场景不同。
rust版本主要是我自己用的,面对内存极为紧张的环境,比如小内存vps,
go版本,按照流行的装b说法,叫做边缘计算节点,包含了所有中央和边缘缓存节点的所有功能。
两个版本都可以编译运行于最低win7/win2008R2sp1版本的系统上,更低的没试过,估计也没人用了。
linux和freebsd自然也是支持的。
rust版本正常情况下,程序自身内存使用在5m以内,请求完成以后会及时释放内存。
go版本正常情况下,程序自身内存使用在25m以上,通过gc清理垃圾,根据估算,gc会导致延迟有1到5ms的抖动,一般来说感觉不出来。
多数功能都类似,架构也高度类似,都是处理链结构,加上全局的健康检查、负载均衡、日志等等。
但是rust版本目前路由功能只是一个应用层的acl功能,并没有与其他处理器进行深度集成与关联,因为我自己也用不上。并且rust版本没有压缩处理器,实际上这个版本支持各种常见算法的解压与压缩功能,但是并没有做一个单独的压缩处理器。也没有向后端请求时对头部信息进行处理的功能。
在多数情况下,两者性能应该没多大区别,都是全环节异步,在低配小内存vps上都支持单机10到15万以上并发,每秒钟响应请求数应该保持在几十万以上。并发和请求压力不大的时候,估计rust性能会略高一些,因为省去了连接池的维护等开销,当连接达到一定程度,比如一万以上,则go版本的性能应该略高,但不会差距太大,因为go版本的功能太多,每个处理器都会有开销。
但具体要根据实际情况去观察,因为前端和后端的网络传输速度,实际上对内存使用率的影响是很大的,每个连接的上下文、基础信息等都需要内存,传输快的话自然就很快释放,传输慢了那肯定会更长时间占用内存。