Akka 是同步的还是异步的?
is Akka synchronous or asynchronous?
我相信反应式系统应该是异步的,但我多次听到 Akka 有同步 actor?
那么这是否意味着 Akka 是同步的?或参与者以同步方式工作,但由于多个参与者,系统是异步的?
Scala 有同步角色。 Akka actors 从一开始就是异步的。
反应式程序可以以任何一种方式实现,同步和异步。对反应式程序唯一有意义的要求是支持背压。在同步编程中,背压是通过阻塞参与线程以自然方式提供的。当线程阻塞被禁止时,异步提供背压是很棘手的。为此,reactive-streams protocol was designed. Akka actors do not support this protocol and so cannot be considered reactive, but Akka Streams 做。
Reactive-streams protocol 也可以轻松实现与线程、信号量和阻塞队列的同步,也就是说,反应式程序不被认为是异步的。通常,同步编程更容易,与异步编程相比,它的唯一缺点是线程堆栈的内存消耗。
总之,响应式与否,异步与非异步,都是独立的特性,它们可以出现在所有组合中。
我相信反应式系统应该是异步的,但我多次听到 Akka 有同步 actor?
那么这是否意味着 Akka 是同步的?或参与者以同步方式工作,但由于多个参与者,系统是异步的?
Scala 有同步角色。 Akka actors 从一开始就是异步的。 反应式程序可以以任何一种方式实现,同步和异步。对反应式程序唯一有意义的要求是支持背压。在同步编程中,背压是通过阻塞参与线程以自然方式提供的。当线程阻塞被禁止时,异步提供背压是很棘手的。为此,reactive-streams protocol was designed. Akka actors do not support this protocol and so cannot be considered reactive, but Akka Streams 做。
Reactive-streams protocol 也可以轻松实现与线程、信号量和阻塞队列的同步,也就是说,反应式程序不被认为是异步的。通常,同步编程更容易,与异步编程相比,它的唯一缺点是线程堆栈的内存消耗。
总之,响应式与否,异步与非异步,都是独立的特性,它们可以出现在所有组合中。