数据结构压缩
这个故事是关于我们最近在Plumbr进行的容量优化任务。 一切始于将无害的要求添加到现有组合中。
您可能知道,Plumbr监视解决方案作为连接到服务器的Java代理分发。 只需少量添加即可跟踪一段时间内所有已连接的代理,以便可以实时回答以下问题:
- 我们有多久没有收到这个特定JVM的消息了?
- 另一个JVM的最后一次已知停机时间是什么?
当每个代理每秒发送一次心跳时,我们在服务器端需要做的就是跟踪所有心跳。 由于每个心跳都附加有唯一的时间戳,因此幼稚的解决方案就像将所有心跳扔到Set或Map中一样容易。 那么-简单,完成,接下来,请?
但是,一些快速的数学运算表明,最初的想法可能行不通。 考虑