Actor模型開發庫,Akka 2.0 發布

openkk 12年前發布 | 8K 次閱讀 Java

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"


Akka 2.0 剛剛發布了,下載 Akka 2.0:here.

Akka 2.0 包含眾多的改進,詳細內容請看發行說明

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