1. 程式人生 > >akka學習教程(一)簡介

akka學習教程(一)簡介

akka系列文章目錄

為什麼要用akka

Akka提供可擴充套件的實時事務處理。

Akka是一個執行時與程式設計模型一致的系統,為以下目標設計:

  • 垂直擴充套件(併發)
  • 水平擴充套件(遠端呼叫)
  • 高容錯

在Akka的世界裡,只有一個內容需要學習和管理,具有高內聚和高一致的語義。

Akka是一種高度可擴充套件的軟體,這不僅僅表現在效能方面,也表現在它所適用的應用的大小。Akka的核心,Akka-actor是非常小的,可以非常方便地放進你的應用中,提供你需要的非同步無鎖並行功能,不會有任何困擾。

你可以任意選擇Akka的某些部分整合到你的應用中,也可以使用完整的包——Akka 微核心,它是一個獨立的容器,可以直接部署你的Akka應用。隨著CPU核數越來越多,即使你只使用一臺電腦,Akka也可作為一種提供卓越效能的選擇。 Akka還同時提供多種併發範型,允許使用者選擇正確的工具來完成工作。

使用akka帶來的好處

  • AKKA提供一種Actor併發模型,其粒度比執行緒小很多,這意味著你可以在專案中使用大量的Actor。
  • Akka提供了一套容錯機制,允許在Actor出錯時進行一些恢復或者重置操作
  • AKKA不僅可以在單擊上構建高併發程式,也可以在網路中構建分散式程式,並提供位置透明的Actor定位服務

Actor

actor是akka執行的基本單元,比執行緒更輕量級,使用akka可以忘掉執行緒了。事實上,執行緒排程已經被akka封裝。

訊息投遞

  • 這個akka應用是有訊息驅動的,訊息是除了actor之外最重要的核心元件。在actor之前投遞訊息應該滿足不可變性
    ,也就是不便模式
  • 訊息投遞有3種策略:之多一次投遞,至少一次投遞,精確的訊息投遞。BUT ,沒必要在akka層面保證訊息的可靠性,一般在業務層在保證
  • akka可以在一定程度上保證順序性,但不具備傳遞性,見《java高併發程式設計 P295》

模組

Akka的模組化做得非常好,它為不同的功能提供了不同的Jar包。

  • akka-actor-2.0.jar – 標準Actor, 有型別Actor,等等
  • akka-remote-2.0.jar – 遠端Actor
  • akka-slf4j-2.0.jar – SLF4J事件處理監聽器
  • akka-testkit-2.0.jar – 用於測試Actor的工具包
  • akka-kernel-2.0.jar – Akka微核心,可執行一個基本的最小應用伺服器
  • akka--mailbox-2.0.jar – Akka可容錯郵箱

要檢視每個Akka模組的jar包依賴見 依賴 章節. 雖然不重要不過akka-actor 沒有外部依賴 (除了scala-library.jar JAR包).

我該如何使用和部署 Akka?

Akka 可以有幾種使用方式:

  • 作為一個庫: 以普通jar包的形式放在classpath上,或放到web應用中的 WEB-INF/lib位置
  • 作為一個獨立的應用程式,使用 Microkernel(微核心),自己有一個main類來初始化Actor系統

參考資料

  • 書籍《java高併發程式設計》