优化技术

标签 optimization system-design

enter image description here

在上图中,我们有一个生产者和一个消费者。生产者大约需要 1 个单位的时间来生产某些东西,而消费者大约需要 9 个单位的时间(4 个单位用于读取和计算数据,5 个单位用于将其写回数据库)。从设计的角度来看,我可以采取哪些选择来确保消费者不会开始落后?我可以做什么(例如缓存,确保数据库中正确的索引)来改善这一点?

最佳答案

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

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

祝你好运!

关于优化技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50052763/

相关文章:

java - 如何使用 Spring 框架将 Java 控制台应用程序转换为全栈 Web 应用程序?

C++ 类函数返回值 VS 对本地数据进行操作?

java - 用于银行帐户/钱包余额更新用例的 Kafka 或 Java Locks,选择哪一个以获得更好的性能?

mysql - 在控制台上运行相同的查询需要两次时间?

java - 优化 arrayRotateLeft 方法

MySQL 查询优化左连接索引存在

mysql - 以第三范式创建规范化数据库架构

java - 企业java应用程序架构。动态域模型

c++ - 如何使用 SSE 或 GLSL 优化 "u[0]*v[0] + u[2]*v[2]"代码行

optimization - 如何识别WEKA中的相关特征?