我读完杰米·艾伦(Jamie Allen)的《有效的Akka》一书。我对Akka还是很陌生,我真的无法理解为什么他在某个时候说:
但是,关于它的一些事情并不理想。首先,它使用期货来要求其他参与者响应,从而为幕后发送的每条消息创建一个新的PromiseActorRef。这是浪费资源。最好让我们的演员以“一劳永逸”的方式发送消息,并将结果异步收集到一个演员中。
通常,使用Ask而不是Tell似乎更昂贵。使用“拉”代替“推”要贵多少钱?而且,为什么Tell通常比Ask更可取?
我是有效Akka的作者。关于使用Ask的观点是您正在使用Future。如果将多个Ask汇总到一个响应中,则将为Ask后面的每个Future创建多个超时。在小剂量时,这并不是什么大不了的事,但是在大剂量时,这加起来会增加性能。
请注意,这本书是在2013年编写的,尽管大多数本书仍然有用,但Akka Streams和Reactive Streams的背压方法已经使围绕“推”和“拉”之间进行选择的某些讨论变成了否定。在生产者或消费者不堪重负的任何情况下,Akka Streams绝对是更好的方法。
感谢您阅读本书,希望对您有所帮助!