Akka構建Reactive應用《one》

    看到這Akka的官網,描述使用java或者scala構建響應式,併發和分佈式應用更加簡單,聽着很高級的樣子,下面的小字寫着消息驅動,可是在quickstart裏面又寫容錯事件驅動,就是這麼鑽牛角尖。java

    Actors是的Akka的執行單位,Actor模型是一個抽象概念,它使得編寫併發的、並行的和分佈式的系統變得更加容易。官方給了一個 「helloworld」 示例,演示了基本知識,咱們能夠在以下的頁面建立一個項目,點開旁邊的 show all akka projects 能夠看到全部的示例(https://developer.lightbend.com/start/?group=akka)。windows

    做爲小白,就是這個最基礎的這個,而後下載過來是個 zip 包,解壓一下,執行如下命令:併發

$ chmod u+x ./sbt
 $ chmod u+x ./sbt-dist/bin/sbt

      而後在這個目錄中,咱們執行 ./sbt 或者 sbt.bat(windows 環境)來下載項目依賴的包,不過真的是夠慢的哈。異步

    而後執行 reStart 來構建項目和運行 Hello World,能夠看到如下的輸出,還能夠看到 Actor 和咱們打的招呼。分佈式

    在 akka 的 quickstart 裏面還給咱們畫了一張圖,看怎麼運行的ui

    main 類裏面建立一個 akka.actor.ActorSystem,構建 Actors 運行的容器,建立了三個Greeter Actor 和一個Printer Actor。scala

Messages

    該示例將消息發送到GreeterActor實例,這些實例在內部存儲這些消息。最後,給Greeter Actor的指令消息會觸發它們向PrinterActor發送消息,PrinterActor會將它們輸出到控制檯:code

    Akka使用Actor和異步消息傳遞帶來了一系列好處,Akka的如下特性容許您以直觀的方式解決困難的併發性和可伸縮性挑戰,舉幾個例子。對象

  • 事件驅動模型-Actors 執行響應消息的工做。Actors之間的通訊是異步的,容許Actors發送消息並繼續本身的工做,而不阻塞等待答覆。
  • 強隔離原則-與Scala中的常規對象不一樣,Actor在能夠調用的方法方面沒有公共API。相反,它的公共API是經過參與者處理的消息定義的。這能夠防止參與者之間共享狀態;觀察另外一個參與者狀態的惟一方法是向其發送請求它的消息。
  • 位置透明性-系統從工廠構造Actor並返回對實例的引用。因爲位置並不重要,Actor實例能夠啓動、中止、移動和從新啓動,以便向上和向下擴展,並從意外故障中恢復。
  • 輕量級-每一個實例只消耗幾百字節,這實際上容許數百萬併發Actor存在於一個應用程序中。

    好戲再續:看看在HelloWorld示例的上下文中使用Actor和Message的一些最佳實踐。blog

 

    有什麼討論的內容,能夠加我公衆號:

相關文章
相關標籤/搜索