16. type Receive = PartialFunction[Any, Unit]
trait Actor {
def receive: Receive = ???
...
}
17. class TimeActor extends Actor {
def receive = {
case "Который час?" =>
sender ! System.currentTimeMillis()
}
}
18. object SomeApp extends App {
val system = ActorSystem("someSystem")
val path = "akka.tcp://sys@host:2552/user/time"
val timeActor = system.actorSelection(path)
timeActor ? "Который час?" onSuccess {
case time => println(time)
}
}
23. Требования к системе
1. Динамическое добавление рабочих узлов
2. Динамическое добавление клиентов
3. Отсутствие дополнительных настроек
4. Возможность использовать тысячи узлов
5. При падении сети, мастера, рабочего
узла данные не должны теряться
61. Функции этапа
1. Построение матрицы лемм и документов
2. Сингулярное разложение (Singular Vector
Decomposition)
3. Проекция документов на пространство
62.
63.
64.
65. object SVDClient {
case class SVDTask(chunkIdx: Int,
databaseConfig: DBConfig) extends Task
case class SVDResult(chunkIdx: Int,
// chunk U * S array
data: Array[Byte])
}
66.
67. object ProjectClient {
case class ProjectTask(chunkIdx: Int,
databaseConfig: DBConfig) extends Task
case object ProjectResult
}