以下库有什么区别?
<dependency org="axis" name="axis-wsdl4j" rev="1.5.1"/>
<dependency org="wsdl4j" name="wsdl4j" rev="1.5.1"/>
Run Code Online (Sandbox Code Playgroud)
我简要地比较了下载的类二进制文件,它们看起来一样.但为什么多个名字?
我希望能够从JVM中启动外部进程并完成它.
我可以使用ProcessBuilder创建一个Process,然后使用Process.waitFor()来等待它的完成.但是,这是一个阻塞调用,只是浪费线程资源.
通过事件处理程序和反应式编程来实现这一点会更有意义.有人会认为JVM可以通过操作系统注册某种监听器来监听进程完成事件,并将其转发回程序.
这样的机制/ API是否存在?实现这一目标的任何替代品或库?
我读到了Cassandra 2的轻量级交易.此类写入的一致性级别始终为QUORUM吗?这是否意味着即使我有一个拥有100个节点的多数据中心设置,那么整个集群的法定数量(所有数据中心的大部分行的副本)都会涉及到?这不是很慢,不会影响可用性吗?
我们可以做LOCAL_QUORUM或EACH_QUORUM一致吗?如果跨多个数据中心复制的数据的编写者总是仅来自特定数据中心,那么这将是首选.
基于演员的范式非常酷.它有效扩展的能力使其成为必须评估任何并发系统的范例.我已经做了一些关于它的阅读,并且对核心意图有了一个不错的想法:用消息和多个"参与者"驱动昂贵的操作,以最大限度地减少因请求/响应交互而导致的等待,从而提高系统的吞吐量.但是,我没有充分了解人们与演员使用的设计模式.我正在寻找基于演员的系统的设计模式.
演员设计模式的一个常见示例是一个系统,其中有一个主协调员角色和一群童工角色.他们掌握将昂贵的操作映射到较小的块,将较小的块作为消息发送给一堆工作者,等待来自它们的响应,然后将它们全部减少到结果.在这种模式的一些复杂的例子中,工作者通知主人他们已经准备好做更多的工作,并且主人的路线更多地按需工作.这确保了适当的工作平衡,并且在工作规模变化很大时非常有用.
我搜索了更多基于演员的模式的文献,除了上面的例子之外找不到任何其他例子.我还没有通过Akka Actors项目样本,但任何指针都非常有用.
我正在尝试使用reactive-kafka,akka-http和akka-stream将一个Kafka使用者写入websocket流.
val publisherActor = actorSystem.actorOf(CommandPublisher.props)
val publisher = ActorPublisher[String](publisherActor)
val commandSource = Source.fromPublisher(publisher) map toMessage
def toMessage(c: String): Message = TextMessage.Strict(c)
class CommandPublisher extends ActorPublisher[String] {
override def receive = {
case cmd: String =>
if (isActive && totalDemand > 0)
onNext(cmd)
}
}
object CommandPublisher {
def props: Props = Props(new CommandPublisher())
}
// This is the route
def mainFlow(): Route = {
path("ws" / "commands" ) {
handleWebSocketMessages(Flow.fromSinkAndSource(Sink.ignore, commandSource))
}
}
Run Code Online (Sandbox Code Playgroud)
从kafka使用者(这里省略),我做了一个publisherActor ! commandString动态添加内容到websocket.
但是,当我启动多个客户端到websocket时,我在后端遇到此异常:
[ERROR] …Run Code Online (Sandbox Code Playgroud) 我想在协作actor的系统中隐式地传播请求上下文.
为了简化和呈现这种情况,我的系统有多个actor,传递给这些actor的消息需要包含这个RequestContext对象.
ActorA接收MessageA类型的消息,ActorB接收MessageB类型的消息
当ActorA需要向ActorB发送消息时,作为MessageA处理的一部分,它执行业务逻辑,然后根据逻辑结果以及MessageA中可用的RequestContext构造MessageB,然后将其发送给ActorB
def handle(ma:MessageA) {
val intermediateResult = businessLogic(ma)
actorB ! MessageB(intermediateResult, ma.requestContext)
}
Run Code Online (Sandbox Code Playgroud)
我们有一大堆要处理的消息,并且明确地传递requestContext是很麻烦的.
我正在尝试使用Scala的implicits功能创建方法,以避免将传入消息中嵌入的RequestContext显式注入传出消息.
消息是案例类(它们需要).我已经阅读了有关implicits规则的内容,但是将对象的属性带入当前的隐式范围似乎很牵强.
我相信这应该是一个共同的要求.有什么建议 ?
谢谢.
CompletableFuture.exceptionally()方法采用lambda,但该方法没有采用自定义Executor的风格,甚至没有采用“ ... Async”风格的风格。
lambda可以在哪个执行器上运行?运行原始CompletableFuture引发异常的是同一执行者吗?或者(如果是这种情况,我会感到惊讶)是commonPool吗?
只想了解使用Cassandra 2在多数据中心设置中"nodetool修复"的性能.
我们计划在每个数据中心拥有2-4个副本的密钥空间.我们可能有几十个数据中心.根据情况,使用LOCAL_QUORUM/EACH_QUORUM一致性完成写入,并且读取通常使用LOCAL_QUORUM一致性完成.问题:
nodetool修复复杂性是否会随着所有数据中心的副本数量线性增长?
或者,nodetool修复复杂度是否与当前数据中心的副本数量和数据中心数量的组合线性增长?模糊地说,该模型可能与当前数据中心中的每个单独节点同步数据,但是在与其他数据中心中的副本相似的EACH_QUORUM操作中.
要扩展集群,最好是在现有数据中心中添加更多节点,还是添加一个新数据中心,假设整个副本数量恒定?我在nodetool修复性能的上下文中提出这个问题.
有没有人知道为什么哈希表的java jdk实现在删除时不重新表格?
如果空间使用率太低怎么办?这不是缩小尺寸和改造的理由吗?
就像加载因子0.75一样触发put上的rehash,我们可以在表的密度上有一个像0.25这样的下限(当然可以在这里用最好的值进行分析)并再次触发rehash,前提是表的大小大于initialCapacity.
java ×3
actor ×2
akka ×2
cassandra ×2
scala ×2
akka-http ×1
akka-stream ×1
asynchronous ×1
consistency ×1
hashtable ×1
implicit ×1
messaging ×1
nodetool ×1
nonblocking ×1
process ×1
repair ×1
resize ×1
transactions ×1
websocket ×1
wsdl4j ×1