我正在挖掘Akka,只是看着他们的fault tolerance example,我正在努力理解它。
Worker
,Listener
,CounterService
等)。 Akka在这里开箱即用的基础设施是什么?Storage
代表什么?一个RDBMS?一个监控RDBMS的Java应用程序? JDBC驱动程序?Storage
是一个Java应用程序并且可以将StorageException
反馈给请求者,那就太棒了,但如果Storage
和CounterService
之间的网络被切断或有传输怎么办?级别的问题?整个图表是否仍然有效(如果是,如何?!?)或者Akka是否只提供“应用层”容错?在后一种情况下,Java / Akka如何处理硬件或网络级故障?答案 0 :(得分:0)
Akka基于演员的设计模式,您可以自己实现这种模式,就像使用MVC一样。我想说akka为你做的最好的事情就是所有被动的东西,它们会减少演员所需的资源量。
您可以将存储视为状态或持有应用程序的某些状态。
我认为人们在谈论容错时所提到的主要内容是,因为你可以很容易地拥有分配的演员,并使用类似可靠的代理模式http://doc.akka.io/docs/akka/snapshot/contrib/reliable-proxy.html之类的东西,你以某种方式使你的应用程序它将保持正常运行,直到最后一个节点死亡,如果你总是实现该模式,你不会丢失任何消息。所以它指的是消息丢失。一切都是在akka中的消息方面,你通常不会有一个非常好的想法,因为它是阻塞的,而是你需要时使用Futures。如果您的硬件停止运行,您将无法在指定的时间内检索未来的值,并且您可以自己处理故障。