我需要在AWS Lambda中执行的不同隔离Java进程之间共享Drools(7.8)的RuntimeEnvironment对象。流口水环境的创建需要大量时间,因为它具有大量规则。这反过来会增加Lambda执行时间。然后,主要目标是通过每次执行lambda时避免重新创建环境对象来优化此性能。
我尝试使Lambda保持温暖,但是当负载很大时,它会失败,并且冷启动会引起并发执行。在我的情况下,总是有100个并发执行的机会,因此让过多的Lambda实例保持温暖,可能会导致AWS产生高利用率。所以我想避免这种方法。
我还尝试使用Amazon Elasticache插件将KieBase存储在Redis缓存中(通过Redisson),以便可以一次创建对象并在所有Lambda执行实例之间共享该对象。这种方法也没有被证明是有效的,因为序列化KieBase对象会导致堆栈溢出错误。
是否有一种方法可以对KieBase对象进行序列化/反序列化,而不会引起StackOverflows或其他性能问题,也可以通过任何其他方式在不同的Lambda实例之间共享该对象。