说明
本周将使用APIFunc完成一个微型应用的开发,目的是完成一个更大的原型验证。
内容
1 性能估计
TPS: 一个表达系统处理能力的性能指标,每秒处理的消息数(Transaction Per Second)
- 1 缓存层 Redis
用户的数据到来时,会先碰到一个很快的API服务或者处理程序,将其送往Redis Stream, 按照官方的估计,99%的响应是在2ms以内。所以我们可以粗略的估计到,这个吞吐在TPS 500左右
- 2 数据库层 Mongo
Mongo在批量处理数据时,大约是1万/秒,所以就不去考虑TPS了,要给个估计的话 TPS 5000(考虑到其他的折损)
- 3 数据处理层 APIFunc
这个是变化很大的,我们基本上可以认为10秒到1分钟处理完一个Batch,通常是1万条。我们按标准的一分钟来估计,那么每天可以处理1400万条左右数据。这时TPS大约为150左右。所以这里很可能是一个瓶颈。当然,由于先天设计就是分布式的,所以这个处理瓶颈很容易通过局域网的其他主机运行APIFunc(Worker)来解决。
- 4 单机处理能力
以一个4C8G的主机来估计,那么Redis、Mongo和APIFunc会分别占掉一个核,然后剩下一个核来做动态的分配。其中APIFunc占用的核是几乎不太会释放的,属于CPU密集型。而Redis和Mongo的属于IO密集,反而很容易释放出来。
整个处理过程始终处于FIF