Scala实现Akka的并发与分布式

Posted Nathon的学习笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala实现Akka的并发与分布式相关的知识,希望对你有一定的参考价值。

Akka的功能是分布式环境下的高并发与高可用,spark底层的设计与实现也是基于Akka的方式。首先看看Akka的基本架构,画个图,如下图所示:

ActorSystem负责创建并监听下面的Actor,就好比一个公司里面,ActorSystem作为老板管理下面的各个部门(Actor),而各个部分Actor再负责具体任务的下发。

然而,再整个集群中,一个ActorSystem还需要跟其他的ActorSystem进行通信。那么,通过scala来实现模拟这个过程,如下:

  1. master节点启动后便启动一个定时器,定时检测集群中超时的worker,并将超时的worker从集群中移除;

  2. worker节点启动后向master节点进行注册(包括运行所需的内存,cpu资源等);

  3. master收到worker注册的消息后将其持久化保存起来;

  4. master向worker发送注册成功的消息

  5. worker接收到注册成功消息后,启动定时器,定时向master汇总自己的心跳,确保自己的存活;

  6. master接收到worker的汇报心跳信息后,更新worker最近一次的汇报时间。

在idea中建立scala项目来实现上面的流程,这里建立了一个master类,一个worker类,remotemessage类作为消息通信的序列化,workinfo类用来封装启动的配置信息。

Scala实现Akka的并发与分布式

当启动master节点后,会一直监听是否有存活的worker节点,这时我再启动一个worker节点,可以看到master可以监听到有一个存活的worker节点。


以上是关于Scala实现Akka的并发与分布式的主要内容,如果未能解决你的问题,请参考以下文章

Scala笔记整理:Actor和AKKA

Scala笔记整理:Actor和AKKA

Scala-Unit7-Scala并发编程模型AKKA

Scala 学习 并发编程模型Akka

scala学习笔记-Actor(19)

一 Akka学习 - actor