Actor模型開發庫 Akka 1.2 發布

fmms 13年前發布 | 7K 次閱讀 Scala

Akka 1.2 發布了,高版本包含很多改進,主要是為了將要發布的 2.0 開辟道路,詳細改進條目請看這里

Akka 是一個用 Scala 編寫的庫,用于簡化編寫容錯的、高可伸縮性的 Java 和 Scala 的 Actor 模型應用。

Actor模型并非什么新鮮事物,它由Carl Hewitt于上世紀70年代早期提出,目的是為了解決分布式編程中一系列的編程問題。其特點如下:

  • 系統中的所有事物都可以扮演一個Actor
  • Actor之間完全獨立
  • 在收到消息時Actor所采取的所有動作都是并行的,在一個方法中的動作沒有明確的順序
  • Actor由標識和當前行為描述
  • Actor可能被分成原始(primitive)和非原始(non primitive)類別
  • 非原始Actor有
    • 由一個郵件地址表示的標識
    • 當前行為由一組知識(acquaintances)(實例變量或本地狀態)和定義Actor在收到消息時將采取的動作組成
  • 消息傳遞是非阻塞和異步的,其機制是郵件隊列(mail-queue)
  • 所有消息發送都是并行的

Java代碼:

// server code
class HelloWorldActor extends UntypedActor {
  public void onReceive(Object msg) {
    getContext().reply(msg + " World");
  }
}
remote().start("localhost", 9999).register(
  "hello-service", 
   actorOf(HelloWorldActor.class));

// client code
ActorRef actor = remote().actorFor(
  "hello-service", "localhost", 9999);
Object res = actor.sendRequestReply("Hello");
Scala 代碼:
// server code
class HelloWorldActor extends Actor {
  def receive = { 
    case msg => self reply (msg + " World")
  }
}
remote.start("localhost", 9999).register(
  "hello-service", actorOf[HelloWorldActor])

// client code
val actor = remote.actorFor(
  "hello-service", "localhost", 9999)
val result = actor !! "Hello"
項目地址: http://akka.io/

 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!