优化技巧

时间:2018-04-26 22:32:39

标签: optimization system-design

enter image description here

在上图中,我们有一个生产者和一个消费者。生产者花费大约1个单位的时间来生产东西,消费者花费大约9个单位的时间(4个用于读取和计算数据,5个用于将其写回数据库)。从设计的角度来看,确保消费者不会开始落后的选择可能是什么?我能做些什么(比如缓存,确保在DB中正确编制索引)以使其更好?

1 个答案:

答案 0 :(得分:1)

我不知道你的系统究竟是什么样的隐藏细节,但是我想到的最初建议是为消费者和生产者创建多个线程,并使用线程池来重用线程。您必须为使用者创建比生产者更多的线程,因为消费者很慢并且控制流是同步的。您应该尝试执行调整以确定消费者线程数与生产者线程数之比应该是什么,这样总会有一些消费者线程可以立即使用生产者线程创建的事件。

同样,我不知道具体要求是什么。例如,使用多个线程将影响事件流的执行顺序,从而导致不一致。因此,如果您不需要按照确切的顺序处理和保存事件,那么您可以通过并行化(使用线程池)来提高性能。

祝你好运!