在上图中,我们有一个生产者和一个消费者。生产者大约需要 1 个单位的时间来生产某些东西,而消费者大约需要 9 个单位的时间(4 个单位用于读取和计算数据,5 个单位用于将其写回数据库)。从设计的角度来看,我可以采取哪些选择来确保消费者不会开始落后?我可以做什么(例如缓存,确保数据库中正确的索引)来改善这一点?
最佳答案
我不知道你的系统到底是什么样的隐藏细节,但我立即想到的最初建议是为消费者和生产者创建多个线程,并使用线程池来重用线程。您必须为消费者创建比生产者更多的线程,因为消费者速度很慢并且控制流是同步的。您应该尝试执行调整来确定消费者线程与生产者线程数量的比率,以便始终有一些消费者线程可用于立即消费由生产者线程创建的事件。
同样,我不知道确切的要求是什么。例如,使用多个线程会影响事件流的执行顺序,从而导致不一致。因此,如果您不需要事件按照事件发生的确切顺序进行处理和持久化,那么您当然可以通过并行化(使用线程池)来提高性能。
祝你好运!
关于优化技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50052763/