Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web services 阿克卡港解绑_Web Services_Http_Akka_Apache Zookeeper_Haproxy - Fatal编程技术网

Web services 阿克卡港解绑

Web services 阿克卡港解绑,web-services,http,akka,apache-zookeeper,haproxy,Web Services,Http,Akka,Apache Zookeeper,Haproxy,各位,我目前正在使用一个API服务,该服务正在使用Akka和HA代理进行负载平衡。安装程序有两个并行运行的服务,HA代理执行负载平衡。akka服务(后端与Lucene一起工作)必须每天将新数据(索引)加载到内存中一次,因为这两个服务在刷新过程中都不可用。我在后端按顺序重新加载(使用Curator进行Zookeeper锁定),但Akka端口仍处于运行状态,因为HA代理仍将传入请求发送到此时正在刷新的服务。如果您对如何向HA代理传递此服务目前不可用的信息有任何意见,我们将不胜感激 -当您收到服务器绑

各位,我目前正在使用一个API服务,该服务正在使用Akka和HA代理进行负载平衡。安装程序有两个并行运行的服务,HA代理执行负载平衡。akka服务(后端与Lucene一起工作)必须每天将新数据(索引)加载到内存中一次,因为这两个服务在刷新过程中都不可用。我在后端按顺序重新加载(使用Curator进行Zookeeper锁定),但Akka端口仍处于运行状态,因为HA代理仍将传入请求发送到此时正在刷新的服务。如果您对如何向HA代理传递此服务目前不可用的信息有任何意见,我们将不胜感激

-当您收到
服务器绑定时,谢谢您:

val bindServer : () => Future[ServerBinding] = () => Http().bindAndHandle(...)
您可以使用此绑定进行解除绑定,但这并不能解决将来发生解除绑定的时间问题

在模式之后

Akka有一个。它提供了一个
未来的
,在一段时间后完成。在这里,我们将在60分钟后获得一个
未来

import akka.pattern.after
import akka.Done
import akka.actor.Scheduler
import scala.concurrent.Future.successful

val scheduler : Scheduler = ???

val bindLifespan : FiniteDuration = 60 minutes

val timerToUnbind : () => Future[Done] = 
  () => after(bindLifespan, scheduler)(successful(Done.getInstance())
您可以使用此计时器触发解除绑定:

val unbindFuture : Future[Done] = 
  for {
    serverBinding <- bindServer()
    _             <- timerToUnbind()
    unbindDone    <- serverBinding.unbind()
  } yield {
    unbindDone
  }
val refreshCache : () => Future[Done] = ???

val rebindFuture : Future[ServerBinding] = 
  for {
    unbindDone     <- unbindFuture
    cacheRefreshed <- refreshCache()
    serverBinding  <- bindServer()
  } yield serverBinding