Scala实现Akka的并发与分布式
Posted Nathon的学习笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala实现Akka的并发与分布式相关的知识,希望对你有一定的参考价值。
Akka的功能是分布式环境下的高并发与高可用,spark底层的设计与实现也是基于Akka的方式。首先看看Akka的基本架构,画个图,如下图所示:
ActorSystem负责创建并监听下面的Actor,就好比一个公司里面,ActorSystem作为老板管理下面的各个部门(Actor),而各个部分Actor再负责具体任务的下发。
然而,再整个集群中,一个ActorSystem还需要跟其他的ActorSystem进行通信。那么,通过scala来实现模拟这个过程,如下:
master节点启动后便启动一个定时器,定时检测集群中超时的worker,并将超时的worker从集群中移除;
worker节点启动后向master节点进行注册(包括运行所需的内存,cpu资源等);
master收到worker注册的消息后将其持久化保存起来;
master向worker发送注册成功的消息
worker接收到注册成功消息后,启动定时器,定时向master汇总自己的心跳,确保自己的存活;
master接收到worker的汇报心跳信息后,更新worker最近一次的汇报时间。
在idea中建立scala项目来实现上面的流程,这里建立了一个master类,一个worker类,remotemessage类作为消息通信的序列化,workinfo类用来封装启动的配置信息。
当启动master节点后,会一直监听是否有存活的worker节点,这时我再启动一个worker节点,可以看到master可以监听到有一个存活的worker节点。
以上是关于Scala实现Akka的并发与分布式的主要内容,如果未能解决你的问题,请参考以下文章