暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Scala实现Akka的并发与分布式

Nathan的笔记 2018-05-01
364

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类用来封装启动的配置信息。

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


文章转载自Nathan的笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论