akka學習教程(一)簡介
阿新 • • 發佈:2018-12-25
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高併發程式設計》