Scala---Akka Actor(三)Actor的持久化

之前的几部分Fault Tolerance,Dispatch,Mailbox是针对一些特定的应用场景,会需要用到不同的配置,这里先省略一下。至于Routing这一部分,应该是最接近分布式的一部分,放到之后在细细研究。FSM这一部分,需要一定的系统架构方面的知识,我就是看了个热闹。


(一)持久化需要什么?

说到持久化,一定会想到数据库,日志文件(journal),快照(snapshot)之类的。而Actor的持久化同样需要这些东西,在本文中,我们使用的是journal和snapshot来进行Actor的持久化操作。


我们使用Akka提供的持久化工具,需要添加依赖:

"com.typesafe.akka" %% "akka-persistence" % "2.5.6"

我们使用LevelDB来进行journal的保存,添加依赖:

"org.iq80.leveldb"            % "leveldb"          % "0.9"
"org.fusesource.leveldbjni"   % "leveldbjni-all"   % "1.8"

添加依赖之后,需要在application.conf文件中队其进行配置:

akka.persistence.journal.plugin = "akka.persistence.journal.leveldb"
akka.persistence.snapshot-store.plugin = "akka.persistence.snapshot-store.local"
akka.persistence.journal.leveldb.dir = "log/journal"
akka.persistence.snapshot-store.local.dir = "log/snapshots"
# DO NOT USE THIS IN PRODUCTION !!!
# See also https://github.com/typesafehub/activator/issues/287
akka.persistence.journal.leveldb.native = false  //因为我们本地并没有安装leveldb,所以这个属性置为false,但是生产环境并不推荐使用

(二)持久化的原理

在Akka中,支持持久化的Actor是PersistentActor。需要实现三个方法来完成持久化的操作。

override def persistenceId

这个方法是用来给当前的Actor设定指定的id,通过这个id,Actor将事件保存到指定的journal中,或者保存当前的snapshot。

override def receive
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值