首页 > 解决方案 > 在 AWS Lambda 之间共享流口水 RuntimeEnvironment

问题描述

我需要在 AWS Lambda 中执行的不同隔离 Java 进程之间共享Drools (7.8) 的 RuntimeEnvironment 对象。drools 环境的创建需要太多时间,因为它有大量的规则。这反过来会增加 Lambda 执行时间。然后主要目标是通过避免每次执行 lambda 时重新创建环境对象来优化此性能。

我尝试让 Lambda 保持温暖,但是当负载很大时它会失败,并且并发执行会遇到冷启动。在我的情况下,总是有 100 次并发执行的机会,因此保持过多的 Lambda 实例温暖,可能会导致 AWS 的高利用率账单。所以我想避免这种方法。

我还尝试使用Redisson插件将 KieBase 存储在 Redis 缓存中(通过Amazon Elasticache),以便可以创建一次对象并在所有 Lambda 执行实例之间共享。这种方法也没有证明是有效的,因为序列化 KieBase 对象会导致堆栈溢出错误。

有没有办法序列化/反序列化 KieBase 对象,而不会导致 StackOverflows 或其他性能问题,或者可以在不同 Lambda 实例之间共享对象的任何其他方式。

标签: javaamazon-web-servicesaws-lambdadrools

解决方案


推荐阅读