Akka基于Actor模型,提供了一个用于构建可扩展的(Scalable)、弹性的(Resilient)、快速响应的(Responsive)应用程序的平台。
Actor是Akka中最核心的概念,Actor之间可以通过交换消息的方式进行通信,每个Actor都有自己的收件箱(Mailbox)。通过Actor能够简化线程管理,可以非常容易地开发出正确地并发程序和并行系统
3.1、Akka框架思路
3.2、利用Maven创建Scala项目
3.3、Akka编写Demo
一、组织配置文件 val configStr= s""" |akka.actor.provider = "akka.remote.RemoteActorRefProvider" |akka.remote.netty.tcp.hostname = "$host"
|akka.remote.netty.tcp.port = "$port" """.stripMargin val config: Config = ConfigFactory.parseString(configStr) 二、先创建ActorSystem,使用ActorSystem启动master,注意ActorSystem单例,actor总管 val actorSystem: ActorSystem = ActorSystem.create("actorSystem",config) 三、启动Actor val master: ActorRef = actorSystem.actorOf(Props(new Master()),"master") 四、给自己发送消息 //master!"start" 五、等待处理结果完成后,关闭通信 actorSystem.awaitTermination()
3.4、Akka实现简单的RPC
RPC(Remote Procedure Call)
解释:远程过程调用,简单理解就是实现RPC,就是实现进程之间或者服务器之间的通信
AKKa获取其他Actor语法
//AKKa中找到其他Actor语法,参数:user固定写法,master为actor主机名
selection= context.actorSelection("akka.tcp://[email protected]:8888/user/master")
3.5、简单SparkRPC实现
Scala周期任务语法
//检查超过时间的work并清除(参数:延迟、执行周期、发送给哪个WOrk、发送的消息)
import context.dispatcher
context.system.scheduler.schedule(0 millis, 10000 millis, self, CheckWork)
注意:命名规范,类首字母大写