当前位置: 首页 > news >正文

阿里云服务器如何做两个网站做网站jw100

阿里云服务器如何做两个网站,做网站jw100,做解密类网站可行,咖啡网络营销策划书failureRateInterval时间内如果addEx(错误)达到 maxFailuresPerInterval 次数,则fused方法返回true,表示触发熔断,进入冷却期coolingInterval,冷却期内fused方法返回true,冷却期过后进入下一个错误统计周期。 scala语言完成 imp…

failureRateInterval时间内如果addEx(错误)达到 maxFailuresPerInterval 次数,则fused方法返回true,表示触发熔断,进入冷却期coolingInterval,冷却期内fused方法返回true,冷却期过后进入下一个错误统计周期。

scala语言完成

import scala.collection.mutable
case class Excp(ts: Long, throwable: Throwable)trait ExceptionStrategy {
}case class FailureRateExit(maxFailuresPerInterval: Int, failureRateInterval: Int, coolingInterval: Int) extends ExceptionStrategy {val LOG: Logger = org.slf4j.LoggerFactory.getLogger(this.getClass)private val exceptionQueue: mutable.Queue[Excp] = mutable.Queue.empty// exceptionQueue += Excp(0L, new RuntimeException())private var lastFuseTs: Long = 0Ldef fused(): Boolean = {val curr = System.currentTimeMillis()if ((curr - lastFuseTs) / 1000 <= coolingInterval) {LOG.info(s"fusing cooling, fist error ts:${exceptionQueue.head.ts}, last error ts:${exceptionQueue.last.ts}")exceptionQueue.clear()return true}cleanup(curr)val trigger = exceptionQueue.size >= maxFailuresPerInterval && exceptionQueue.head.ts - exceptionQueue.last.ts <= failureRateIntervalif (trigger) {lastFuseTs = currLOG.info(s"fusing triggered, fist error ts:${exceptionQueue.head.ts}, last error ts:${exceptionQueue.last.ts}, total errors:${exceptionQueue.size}")}trigger}def addEx(ex: Exception): Unit = {val curr = System.currentTimeMillis()exceptionQueue += Excp(curr, ex)cleanup(curr)}private def cleanup(curr: Long = System.currentTimeMillis()): Unit = {exceptionQueue.dequeueAll(e => (curr - e.ts) / 1000 >= failureRateInterval)exceptionQueue.dequeueAll(e => exceptionQueue.size > maxFailuresPerInterval * 2 && e != exceptionQueue.last && e != exceptionQueue.head)}
}

测试代码:

import org.scalatest.funsuite.AnyFunSuite
import scala.util.Randomclass StrategyTest extends AnyFunSuite {test("fail-rate") {val f = FailureRateExit(3, 10, 15)while (true) {f.addEx(new RuntimeException())println(f.fused())Thread.sleep(Random.nextInt(8 * 1000))}}
}

测试结果:

false
false
false
false
13:52:03.519 [ScalaTest-run-running-StrategyTest] [INFO ] FailureRateExit:30 --- fusing triggered, fist error ts:1734414718275, last error ts:1734414723512, total errors:3
true
13:52:10.202 [ScalaTest-run-running-StrategyTest] [INFO ] FailureRateExit:22 --- fusing cooling, fist error ts:1734414722743, last error ts:1734414730202
true
13:52:18.120 [ScalaTest-run-running-StrategyTest] [INFO ] FailureRateExit:22 --- fusing cooling, fist error ts:1734414738120, last error ts:1734414738120
true
false
false
false
false
false
false
13:52:55.780 [ScalaTest-run-running-StrategyTest] [INFO ] FailureRateExit:30 --- fusing triggered, fist error ts:1734414768116, last error ts:1734414775780, total errors:3
true
13:53:00.976 [ScalaTest-run-running-StrategyTest] [INFO ] FailureRateExit:22 --- fusing cooling, fist error ts:1734414775249, last error ts:1734414780976
true
13:53:03.931 [ScalaTest-run-running-StrategyTest] [INFO ] FailureRateExit:22 --- fusing cooling, fist error ts:1734414783931, last error ts:1734414783931
true
13:53:07.628 [ScalaTest-run-running-StrategyTest] [INFO ] FailureRateExit:22 --- fusing cooling, fist error ts:1734414787628, last error ts:1734414787628
true
false
false
false
13:53:28.360 [ScalaTest-run-running-StrategyTest] [INFO ] FailureRateExit:30 --- fusing triggered, fist error ts:1734414800129, last error ts:1734414808359, total errors:3
true
13:53:35.734 [ScalaTest-run-running-StrategyTest] [INFO ] FailureRateExit:22 --- fusing cooling, fist error ts:1734414808359, last error ts:1734414815734
true
13:53:42.517 [ScalaTest-run-running-StrategyTest] [INFO ] FailureRateExit:22 --- fusing cooling, fist error ts:1734414822514, last error ts:1734414822514
true
false
false
13:53:49.223 [ScalaTest-run-running-StrategyTest] [INFO ] FailureRateExit:30 --- fusing triggered, fist error ts:1734414824804, last error ts:1734414829223, total errors:3
true
13:53:50.351 [ScalaTest-run-running-StrategyTest] [INFO ] FailureRateExit:22 --- fusing cooling, fist error ts:1734414824804, last error ts:1734414830351
true
13:53:57.470 [ScalaTest-run-running-StrategyTest] [INFO ] FailureRateExit:22 --- fusing cooling, fist error ts:1734414837470, last error ts:1734414837470
true
13:54:04.618 [ScalaTest-run-running-StrategyTest] [INFO ] FailureRateExit:22 --- fusing cooling, fist error ts:1734414844618, last error ts:1734414844618
true
false
false

使用方式伪代码:

  private val strategy: FailureRateExit = FailureRateExit(failureRateInterval, maxFailuresPerInterval, failCoolingInterval)try {if(!strategy.fused){// 执行正常逻辑}else{// 忽略}} catch {case ex: Exception =>// 添加异常到熔断器strategy.addEx(ex)}
http://www.yayakq.cn/news/662057/

相关文章:

  • 安卓小项目源码免费网站做网站广告的点
  • 2008 iis asp配置网站做民宿网站的系统可行性
  • 贵阳住房和城乡建设局网站外贸推广哪个公司好
  • 大连网站网络公司国外企业邮箱推荐
  • 手机网站设计公司只选亿企邦适合企业员工培训的课程
  • 合肥做公司网站wordpress侧边栏二级菜单
  • 做网站的业务逻辑php网站开发文档怎么写
  • 宁波网站建设设计价格定制网站建设案例课堂
  • 温州微网站公司广州做网站价位
  • 昆明网站建设优化技术wordpress 增加侧边栏
  • 北京高端网站制作公司网站实现多模板切换
  • 自建外贸网站企业电子商务网站平台建设
  • 贵州网站建设 零玖伍壹网络广州网页设计网站
  • 一般的手机网站建设多少钱东阳网站建设有哪些
  • cms 网站建设建筑模板厂家大全
  • 惠州企业网站设计wordpress 文章查看次数
  • 厦门网站怎么做棋牌游戏app软件开发
  • 网站建设"淘宝网" 在颜色选取和搭配方面有哪些值得学习的地方.seo软文是什么意思
  • 网站开发工作怎样公司论坛网站建设规划书
  • 网站建设 项目文档给个免费的网址
  • 乌海网站seo广州确诊病例最新消息
  • h5旅游网站开发买一个app软件要多少钱
  • 同城换物网站为什么做不起来网页设计尺寸怎么算
  • 哈尔滨做设计和网站的公司吗网络平台运营管理
  • 公司网站对比那几点优势新乡网站建设费用
  • 吴江建设局网站打不开了网页 转发到wordpress
  • 湖北网站建设xiduyun天创网站
  • 做最最优秀的视频网站网站开发有哪些流程图
  • 用cms建网站卡密提取网站怎么做
  • 河南省建设厅官方网站 吴浩濮阳做网站优化