Upload
masahitojp
View
511
Download
1
Embed Size (px)
DESCRIPTION
akka
Citation preview
Akkaの運用の話(仮)Akka meetup 2014 sep
2014.09.28(sun)
お前誰よ• @Masahito
• P2P File Transfer Engineer at Skeed Co. Ltd.
• I work with (Scala + Java) & JVM
• PyConJP2014 Speaker
Akkaつかってる?
https://twitter.com/DesignUXUI/status/490179377099845632
今日話すこと• 運用を見据えた話
• Akka Actorの話しかしませんよ• とりあえず使った方がいい機能• どんな構成考える?
今日話さないこと• 実際の運用について• チューニング(用途に依存するため)
Akka個人的にうれしい点• メッセージ(Message)が順番制御できる
• Actor内だとリソースのlockいらず• メリットであり、デメリット
• SuperVisonTree
• Mement Mori
• JVM版のOTP的なきのー
とりあえず使った方がいい機能• ActorLogging
• akka-slf4j
• config
• Akka FSM
Loggingclass MyActor extends Actor with akka.actor.ActorLogging { override def preStart() = { log.debug("Starting") }}
↓フツーはapplication.confをclasspathが通ってるとこにおく val config = ConfigFactory.parseString( """ akka { loggers = ["akka.event.slf4j.Slf4jLogger"] loglevel = "DEBUG" logging-filter = "akka.event.slf4j.Slf4jLoggingFilter" } """)
val as = ActorSystem("test", config)
参考• http://doc.akka.io/docs/akka/2.3.6/java/logging.html
• http://doc.akka.io/docs/akka/2.3.6/general/configuration.html
• http://doc.akka.io/docs/akka/2.3.6/scala/fsm.html
よく使うbuild.sbtname := "testProject"
version := "0.1"
scalaVersion := "2.10.4"
libraryDependencies ++= Seq( "com.typesafe.akka" %% "akka-actor" % akkaVersion, "com.typesafe.akka" %% "akka-slf4j" % akkaVersion, "ch.qos.logback" % "logback-classic" % "1.1.2")
構成について• コードだけだとよくわからなくなりがち
• 絵を残すの大事• 人のコードは読めなくなりがち• シーケンス図もあるとベター• とくにActor間のつながりなど• どのタイミングでどんなメッセージ投げるとか忘れがち
コード例https://gist.github.com/masahitojp/422be22884c2e575b338
突っ込み願います
書籍• Akka 公式ドキュメント
• Activatiorにあがってるソースを読むのがオススメ• Akka in Action(オススメ!)
• すごいErlangゆかいに学ぼう!
まとめ• 基本的な機能を使うだけでもうれしいものが書ける
• Akka is DSL
• Akka使ってるとJavaを意識すること多いよね• LoggerとかLoggerとか• ThreadPoolとかとか(Futureでもそーだけど
Akkaの運用(仮)から(仮)がとれましたか?
Thanks!