【发布时间】:2013-12-09 18:01:22
【问题描述】:
我正在研究Akka,只是查看他们的fault tolerance example,并试图理解它。
- 为什么我不能在“纯 Java”(没有 Akka)中实现所有这些相同的类型(
Worker、Listener、CounterService等)。 Akka 开箱即用地添加了哪些基础设施? - 在该图中,
Storage代表什么?关系数据库管理系统?监控 RDBMS 的 Java 应用程序? JDBC 驱动程序? - 如果
Storage是一个Java 应用程序并且可以将StorageException返回给请求者,那就太好了,但是如果Storage和CounterService之间的网络被切断或存在传输级问题怎么办?整个图表是否仍然有效(如果是,如何?!?)还是 Akka 仅提供“应用层”容错?在后一种情况下,Java/Akka 如何处理硬件或网络级别的故障?
【问题讨论】:
-
您当然可以用普通的旧 Java 实现 Akka 的大部分功能。您获得的是简洁的表达方式和构建块的大量可重用性。对于问题 3,网络编程技术将捕获断开的连接,通常通过看门狗计时器。
-
感谢@BobDalgleish (+1) - 2 次跟进:(a) 你能衡量一下
Storage在该图中代表什么吗?了解它是 Java 应用程序/类/服务器还是本机 RDBMS 将有助于我理解 Akka 的容错性。 (b) 当你说“看门狗定时器”是this 你在说什么?再次感谢! -
在示例中,它被实现为一个Java类,该类持久化存储在其中的项目;坚持到程序结束。只要适配器代码实现了模型所期望的接口,它就没有理由不能成为重量级的 RDBMS。 b) 是的,这是看门狗定时器的一个例子。这是一种常见的设计模式。
-
Re #3 - 见doc.akka.io/docs/akka/2.2.3/java/…
标签: java akka fault-tolerance