Scala _10Actor Model
- 概念理解
Actor Model是用來(lái)編寫(xiě)并行計(jì)算或分布式系統(tǒng)的高層次抽象(類似java中的Thread)讓程序員不必為多線程模式下共享鎖而煩惱,被用在Erlang 語(yǔ)言上, 高可用性99.9999999 % 一年只有31ms 宕機(jī)Actors將狀態(tài)和行為封裝在一個(gè)輕量的進(jìn)程/線程中,但是不和其他Actors分享狀態(tài),每個(gè)Actors有自己的世界觀,當(dāng)需要和其他Actors交互時(shí),通過(guò)發(fā)送事件和消息,發(fā)送是異步的,非堵塞的(fire-andforget),發(fā)送消息后不必等另外Actors回復(fù),也不必暫停,每個(gè)Actors有自己的消息隊(duì)列,進(jìn)來(lái)的消息按先來(lái)后到排列,這就有很好的并發(fā)策略和可伸縮性,可以建立性能很好的事件驅(qū)動(dòng)系統(tǒng)。
- Actor的特征:
? ? ?? 什么是Akka
Akka 是一個(gè)用 Scala 編寫(xiě)的庫(kù),用于簡(jiǎn)化編寫(xiě)容錯(cuò)的、高可伸縮性的 Java 和Scala 的 Actor 模型應(yīng)用,底層實(shí)現(xiàn)就是Actor,Akka是一個(gè)開(kāi)發(fā)庫(kù)和運(yùn)行環(huán)境,可以用于構(gòu)建高并發(fā)、分布式、可容錯(cuò)、事件驅(qū)動(dòng)的基于JVM的應(yīng)用。使構(gòu)建高并發(fā)的分布式應(yīng)用更加容易。
spark1.6版本之前,spark分布式節(jié)點(diǎn)之間的消息傳遞使用的就是Akka,底層也就是actor實(shí)現(xiàn)的。1.6之后使用的netty傳輸。
package com.henu.scala13Actorimport scala.actors.Actorclass myActor extends Actor{def act(): Unit ={while (true){receive {case x: String => println("get String = " + x)case x: Int => println("get Int = " + x)case _=> println("get default")}}} } object ActorDemo {def main(args: Array[String]): Unit = {//創(chuàng)建actor的消息接收和傳遞val actor = new myActor//啟動(dòng)actor.start()//發(fā)送消息寫(xiě)法actor ! "george love kk"} }- 例:Actor與Actor之間通信
?
總結(jié)
以上是生活随笔為你收集整理的Scala _10Actor Model的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 日跑几十万作业,唯品会HDFS是如何优化
- 下一篇: Scala _01介绍安装使用