v1.0 | 2024-05-05
Akka Actor模型开发库是一个应用程序工具包,它是为了java和scala构建的高并发、分布式以及弹性消息驱动所产生的应用。它能够让用户更加轻松的构建强大的反应式、并发式以及分布式应用。
1、系统的所有内容都可以是演员。
2、学习是完全独立的。
3、actor采取的所有措施在收到消息时并行进行,方法上没有明确的顺序。
4、识别和电流动作是actor中描述的相应参数的值。
5、学习可以分为原类别和非原类别。
6、非原始学习如下:
(1)表示电子邮件地址的标准。
(2)当前动作包括知识库(实例变量或本地状态),在接收消息时定义Actor即可执行动作。
7、消息传递未被阻止,异步,邮件队列(邮件队列)。
8、所有消息传递都是平行的。
1、简单的并发和分布式系统。
(1)Actors和Streams允许您使用多台服务器将系统构建为扩展。
(2)更有效地使用服务器的资源,从而使用多台服务器。
2、灵活的设计。
(1)根据“响应声明”原则,使用AKKA可以创建在失败时能够自行恢复并保持响应的系统。
3、高效率。
(1)一台机器最多能达到5000万Msg/s。
(2)小记忆被占领了每GB约250万个角色。
4、灵活性和分散性。
(1)分布式系统没有单点故障。节点之间的负载平衡和自适应路由。
(2)使用群集共享的事件源和CQRS。
(3)使用CRDT可以获得最终一致的分布式数据。
5、反应流数据。
(1)异步无阻塞流处理和背压完全异步和流式HTTP服务器和客户端为构建微服务提供了良好的平台。
(2)与Alpakka流程集成。
public class Greeting implements Serializable {
public final String who;
public Greeting(String who) { this.who = who; }
}
public class GreetingActor extends UntypedActor {
LoggingAdapter log = Logging.getLogger(getContext().system(), this);
public void onReceive(Object message) throws Exception {
if (message instanceof Greeting)
log.info("Hello " + ((Greeting) message).who);
}
}
ActorSystem system = ActorSystem.create("MySystem");
ActorRef greeter = system.actorOf(Props.create(GreetingActor.class), "greeter");
greeter.tell(new Greeting("Charlie Parker"), ActorRef.noSender());
case class Greeting(who: String)
class GreetingActor extends Actor with ActorLogging {
def receive = {
case Greeting(who) ⇒ log.info("Hello " + who)
}
}
val system = ActorSystem("MySystem")
val greeter = system.actorOf(Props[GreetingActor], name = "greeter")
greeter ! Greeting("Charlie Parker")