标签: akka

斯卡拉演员 - 最糟糕的做法?

我觉得在Scala中使用actor有点不安全.我已经阅读了有关如何做东西的文档,但我想我还需要一些DO NOT规则才能随意使用它们.我想我会害怕以错误的方式使用它们,我甚至都不会注意到它.

你能想到一些东西,如果应用的话,会导致Scala演员带来的好处,甚至是错误的结果吗?

scala actor akka

49
推荐指数
2
解决办法
6113
查看次数

与Scala/Akka演员相比,Java线程如何沉重?

我只是比较了scala actor和java线程的性能.

我惊讶地看到了差异,我观察到,通过我的系统,我能够产生最多~2000个线程(一次只能生存)但是使用相同的系统我能够产生~50万个scala的演员.

两个程序都使用了大约81MB的JVM堆内存.

你能解释一下java线程如何比scala/akka演员更重吗?使scala-actor重量轻的关键因素是什么?

如果我想实现最佳的可扩展性,我应该选择基于actor的Web服务器而不是基于Java的传统Web/app服务器,如JBoss或Tomcat?

谢谢.

java performance multithreading scala akka

48
推荐指数
2
解决办法
1万
查看次数

Akka和Vert.x的消息传递模型的差异

我是Scala程序员,从开发人员的角度理解Akka.我没有查看过Akka库的代码.已经阅读了Akka模型中的两种类型的演员 - 基于线程和基于事件 - 但没有大规模运行Akka我没有配置Akka用于生产的经验.我是Vert.x的新手.所以,从选择的角度来构建一个我想知道的反应式应用程序堆栈 -

  1. Akka和Vert.x的消息传递模型是否有很大不同?怎么样?
  2. Akka的演员和Vert.x的Verticle背后的数据结构是否缓冲消息非常不同?

scala akka vert.x

47
推荐指数
2
解决办法
2万
查看次数

案例类和案例对象之间的区别?

我正在学习Scala和Akka,在我最近查找解决方案时,我发现了类似的东西

 case class TotalTaxResult(taxAmount:Double)
 case object TaxCalculationTimeout
Run Code Online (Sandbox Code Playgroud)

两者有什么区别?

我什么时候应该使用另一个?

scala akka

45
推荐指数
2
解决办法
2万
查看次数

Akka Logging外面的演员

我有一个打电话的Akka演员MyObject.foo().MyObject不是演员.如何设置登录?使用Actor很简单,因为我可以混合使用ActorLogging.在MyObject中,我无权访问context.system.我是否akka.event.Logging使用AkkaSystem()创建一个,然后隐含LogSource的内容?

logging scala akka

44
推荐指数
4
解决办法
1万
查看次数

发现集群中的Akka演员

我最近一直试图围绕Akka和基于演员的系统的概念.虽然我对Akka基本原理有很好的理解,但现在我仍然在集群和远程演员方面遇到一些问题.

我将尝试使用Play Framework 2.0附带WebSocket聊天示例来说明问题:有一个持有WebSockets并保留当前连接用户列表的actor.演员基本上在技术上和逻辑上代表聊天室.只要在单个服务器上运行单个聊天室,这就完美无缺.

现在,我正在尝试理解当我们讨论在服务器群集上运行的许多动态聊天室(可以随时打开/关闭的新房间)时添加或删除单个节点时如何扩展此示例根据目前的需求).在这种情况下,用户A可以连接到服务器1,而用户B连接到服务器2.两者可能在同一个聊天室中进行通话.在每个服务器上仍然会有一个actor(对于每个聊天室?),它保存WebSocket实例以接收和发布事件(消息)给正确的用户.但从逻辑上讲,服务器1或服务器2上只应有一个聊天室角色,其中包含当前连接用户(或类似任务)的列表.

您将如何实现这一目标,最好是在"纯akka"中,而不添加ZeroMQ或RabbitMQ等额外的消息传递系统?

这是我到目前为止所提出的,请告诉我这是否有意义:

  1. 用户A连接到服务器1,并且分配了一个保存其WebSocket的actor.
  2. 演员检查(使用Router?EventBus?还有其他什么?)是否在任何连接的集群节点上存在活动聊天室的"聊天室演员".因为它不会以某种方式请求创建新的聊天室演员,并且将向该演员发送和接收未来的聊天消息.
  3. 用户B在服务器2上连接,并且也为他的WebSocket分配了一个actor.
  4. 它还检查所请求的聊天室的actor是否存在于某处并在服务器1上找到它.
  5. 服务器1上的聊天室演员现在充当给定聊天室的集线器,向所有"连接的"聊天成员演员发送消息并分发传入的聊天室.

如果服务器2出现故障,则必须以某种方式在服务器2上重新创建/移动聊天室角色,尽管这不是我现在主要关注的问题.我最想知道演员如何在各种基本上独立的机器上进行动态发现,可以使用Akka的工具集来完成.

我一直在看Akka的文档很长一段时间了,所以也许我错过了这里显而易见的.如果是的话,请赐教:-)

akka playframework playframework-2.0 akka-cluster

43
推荐指数
3
解决办法
7032
查看次数

我如何每5分钟执行一次Akka演员?

我想知道Akka中是否有任何可以定期执行演员的机制?

akka

41
推荐指数
2
解决办法
3万
查看次数

在Spring中使用什么样的"EventBus"?内置,Reactor,Akka?

我们将在几周内开始新的Spring 4应用程序.我们想使用一些事件驱动的架构.今年我在这里和那里读到关于"Reactor"的信息,在网上搜索时,我偶然发现了"Akka".

所以现在我们有3个选择:

我无法找到真正的比较.


现在我们只需要:

  • X 注册听 Event E
  • Y 注册听 Event E
  • Z 发送一个 Event E

然后X,Y将接收并处理该事件.

我们很可能会以异步方式使用它,但肯定会有一些同步方案.我们很可能总是将一个类作为事件发送.(Reactor样本主要使用字符串和字符串模式,但它也支持对象).


据我所知,ApplicationEvent默认情况下同步Reactor工作并以异步方式工作.并且Reactor还允许使用该await()方法使其有点同步.Akka提供或多或少相同Reactor,但也支持Remoting.

关于Reactor的await()方法:它可以等待多个线程完成吗?或者甚至可能是这些线程的一部分?如果我们从上面举例:

  • X 注册听 Event E
  • Y 注册听 Event E
  • Z 发送一个 Event E

可以通过说:等待X Y完成来使其同步.它是否有可能让它等待X,但不是为了Y


也许还有一些替代品?例如JMS呢?

很多问题,但希望你能提供一些答案!

谢谢!


编辑:示例用例 …

spring multithreading event-driven-design akka project-reactor

40
推荐指数
2
解决办法
2万
查看次数

如何将actor消息限制为特定类型?

Akka中,除了使用使用RPC样式编程模型的"Typed Actor"API之外,有没有办法将actor限制为特定的静态类型?

我可以在Akka中使用消息传递样式而不会在actor边界处丢弃静态类型安全吗?

例如,我想使用这样的代码:

sealed abstract class FooMessage
case object Foo extends FooMessage
case object Bar extends FooMessage

class FooActor extends Actor[FooMessage] {
  def receive = {
    case Foo => () // OK

    // Would raise a compiler error:
    // case s: String => error("Can't happen, String is not a subtype of FooMessage") 

  }
}

val fooActor = actorOf[FooActor]
fooActor ! Foo // OK

// Won't compile:
fooActor ! "Hello"
Run Code Online (Sandbox Code Playgroud)

也许人们必须扩展一些基本特征或者具有Either允许系统级消息(Exit等等)的构造.

scala actor akka

38
推荐指数
2
解决办法
5006
查看次数

Spray,Akka-http和Play,这是新的HTTP/REST项目的最佳选择

我将使用Scala和Akka Actors开发新的HTTP/REST服务.

我有使用Play的经验,但我并不需要一个完整的Web框架.从我读到的,我认为Spray是一个合适的选择.在新到达的AKKA-HTTP之后,我的问题来自Spray的未来.

Spray项目是否会独立于Akka-HTTP项目而增长,还是两个项目将合并为一个Akka-HTTTP?

如果我开始用Spray开发,这有什么影响?另外我读到Play将集成AKKA-HTTP.所以我终于想知道是不是应该选择Play?

谢谢你的帮助.

scala akka playframework spray akka-http

38
推荐指数
1
解决办法
2万
查看次数