约束理论的应用如何帮助我们优化代码

我的团队一直在努力改善API的性能,并确定了导致某些问题的数据库调用。

该团队提出了三种解决此问题的方法:

  • 扩大数据库直到可以满足我们的要求。
  • 在应用程序中引入一些轻量级缓存,以减少数据库负载。
  • 检查此数据库调用的查询计划,以了解是否可以优化查询。

我们应该首先尝试哪个? 对此进行了激烈的讨论,并提出了支持每种方法的论点。 我们需要一个简单的框架来制定有关如何改善系统的决策。

这就是约束理论(ToC)可以提供帮助的地方。 ToC最初是作为改进制造系统的范例进行阐述的,它在软件工程中非常有用,无论是在管理项目还是在改善我们创建的系统的性能时。

约束理论

应用ToC的第一步是确定系统目标。 对于此API,目标是向消费者提供准确的数据。

现在,我们了解了系统的目标,我们可以将系统的吞吐量定义为可以交付该目标单位的速率,在我们的示例中为API响应。 我们还可以定义系统的运营费用(服务器的成本)及其库存(请求等待响应的费用)。

下一步是确定系统的约束。 这是决定系统吞吐量的系统元素。 在物理系统中,有用的启发式方法是在此元素之前建立库存。 在我们的API中,我们的监控帮助我们确定了瓶颈。

接下来的三个步骤为我们提供了一系列解决约束的方法:

  • 首先,通过查找可以进行改进的本地更改来利用约束。
  • 其次,通过找到减轻系统压力的方法使系统的其余部分服从于Constraint,以使其性能更加平稳。
  • 第三,通过增加可用资源来提高约束条件,并在必要时投入额外的运营费用。

首先是开发,因为它是快速,廉价和本地化的。 要从属,您需要考虑对系统其余部分的影响,但不应涉及重大成本。 提升约束可能会花费相当多的费用,因此它排在最后。

一旦应用了这些步骤,您将发现约束已移至其他位置(您已经“破坏”了原始约束),或者它仍然存在。 无论哪种情况,您都应将这些步骤重复作为持续改进文化的一部分。 最终,您希望看到约束移出系统,并成为消费者需求的问题。

将ToC应用于我们的问题

如果我们查看团队的三个建议,我们可以看到每个建议都与以下技术之一相对应:

  • 提升数据库规模是Elevation:使用大型服务器会带来明显的财务成本。
  • 引入缓存是从属的:我们正在更改系统的其余部分以减轻对“约束”的压力,并且在进行此更改之前需要考虑诸如缓存无效之类的问题。
  • 优化查询的方法是Exploitation:我们正在对Constraint进行本地更改以提高其性能。

应用ToC会告诉我们首先要考虑哪种方法,即优化查询。 如果优化查询仍然不够,我们可以看一下缓存,并且扩展应该是最后的选择。

在我们的例子中,查询优化就足够了。 我们设法实现了性能目标,而没有给系统增加额外的复杂性或增加成本。

翻译自: https://www.javacodegeeks.com/2016/12/applying-theory-constraints-helped-us-optimise-code.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值