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

广告网站建设域名查询ip网站

广告网站建设,域名查询ip网站,椒江街道招聘建设网站,WordPress文章彩色标签背景 本文基于 Starrocks 3.1.7 结论 Starrocks 会启动一个线程周期性的去进行Compaction,该周期间隔为 200 MS, 该Compaction以table的partition为切入点,tablet(也就是bucket)为粒度进行task的创建。 分析 CompactionMgr start 方法会启动一个Com…

背景

本文基于 Starrocks 3.1.7

结论

Starrocks 会启动一个线程周期性的去进行Compaction,该周期间隔为 200 MS, 该Compaction以table的partition为切入点,tablet(也就是bucket)为粒度进行task的创建。

分析

CompactionMgr start 方法会启动一个CompactionScheduler 用来启动一个 合并的周期性任务.
这里的周期会由 LOOP_INTERVAL_MS参数控制,默认是 200ms.
然后每个周期内会调用 runOneCycle 方法:

    protected void runOneCycle() {cleanPartition();// Schedule compaction tasks only when this is a leader FE and all edit logs have finished replay.// In order to ensure that the input rowsets of compaction still exists when doing publishing version, it is// necessary to ensure that the compaction task of the same partition is executed serially, that is, the next// compaction task can be executed only after the status of the previous compaction task changes to visible or// canceled.if (stateMgr.isLeader() && stateMgr.isReady() && allCommittedCompactionsBeforeRestartHaveFinished()) {schedule();history.changeMaxSize(Config.lake_compaction_history_size);failHistory.changeMaxSize(Config.lake_compaction_fail_history_size);}}
  • cleanPartition 这里会清除无效的分区,便于后续进行Compaction
  • 这里会有个 FE leader的判断(这里所涉及到的GlobalStateMgr只是单个FE的状态),只有是leader节点才可以进行Compaction,最主要的逻辑还是在schedule
    方法中:
      for (Iterator<Map.Entry<PartitionIdentifier, CompactionJob>> iterator = runningCompactions.entrySet().iterator();...if (job.isCompleted()) {job.getPartition().setMinRetainVersion(0);try {commitCompaction(partition, job);assert job.transactionHasCommitted();} catch (Exception e) {...}} else if (job.isFailed()) {job.getPartition().setMinRetainVersion(0);errorMsg = Objects.requireNonNull(job.getFailMessage(), "getFailMessage() is null");job.abort(); // Abort any executing task, if present.}if (errorMsg != null) {iterator.remove();job.finish();failHistory.offer(CompactionRecord.build(job, errorMsg));compactionManager.enableCompactionAfter(partition, MIN_COMPACTION_INTERVAL_MS_ON_FAILURE);abortTransactionIgnoreException(partition.getDbId(), job.getTxnId(), errorMsg);continue;}...int index = 0;int compactionLimit = compactionTaskLimit();int numRunningTasks = runningCompactions.values().stream().mapToInt(CompactionJob::getNumTabletCompactionTasks).sum();if (numRunningTasks >= compactionLimit) {return;}List<PartitionIdentifier> partitions = compactionManager.choosePartitionsToCompact(runningCompactions.keySet());while (numRunningTasks < compactionLimit && index < partitions.size()) {PartitionIdentifier partition = partitions.get(index++);CompactionJob job = startCompaction(partition);if (job == null) {continue;}numRunningTasks += job.getNumTabletCompactionTasks();runningCompactions.put(partition, job);if (LOG.isDebugEnabled()) {LOG.debug("Created new compaction job. partition={} txnId={}", partition, job.getTxnId());}}
    • 选取正在进行的Compaction的job,如果该任务完成了compaction(每个tablets都完成了compaction) ,但是事务没有提交,则完成compaction事务的提交,
      否则如果任务失败了,则abort该job。最终会把该任务从runnning队列中移除掉。如果是失败任务的话,还会记录到failHistory中,并会重新进行Compaction的任务的延迟提交(延迟间隔为LOOP_INTERVAL_MS*10,其中LOOP_INTERVAL_MS 为200ms)

    • 如果Compaction事务已经提交了,则会记录到history中,并会重新进行Compaction的任务的延迟提交(延迟间隔为LOOP_INTERVAL_MS*2,其中LOOP_INTERVAL_MS 为200ms)

    • 处理完正在运行的Compaction任务后,会构建当前的Compaction任务

      • 首先会通过compactionTaskLimit方法获取本次Compaction任务的个数限制,如果lake_compaction_max_tasks大于等于0,则会根据lake_compaction_max_tasks配置来,否则会根据系统的BE数和CN数乘以16来计算。
      • 如果 运行的task(以Tablets为粒度计数的)大于了该compactionTaskLimit,则此次Compaction结束,否则继续下一步
      • compactionManager.choosePartitionsToCompact 从已有的分区中。并且排除掉 runningCompactions里正在运行的Compaction任务中涉及的partition。
        choosePartitionsToCompact 涉及到Sorter(默认ScoreSorter) 和selector(ScoreSelector),
        ScoreSelector 会选择 lake_compaction_score_selector_min_score(默认为10)并且到了合并的时间的分区
        ScoreSorter 会按照compactionScore 从高到低进行排序
      • 对于每一个被选出来的分区,会进行调用startCompaction方法进行compaction任务的构建
        这里会调用collectPartitionTablets方法,用来选择tablet以及对应的该tablet对应的backend
      • 调用createCompactionTasks创建CompactionTask,这里有多少个backend就有多少个task
        调用thrift rpc服务往对应的backend发送Compact请求,并组装成CompactionJob
          List<CompactionTask> tasks = new ArrayList<>();for (Map.Entry<Long, List<Long>> entry : beToTablets.entrySet()) {ComputeNode node = systemInfoService.getBackendOrComputeNode(entry.getKey());if (node == null) {throw new UserException("Node " + entry.getKey() + " has been dropped");}LakeService service = BrpcProxy.getLakeService(node.getHost(), node.getBrpcPort());CompactRequest request = new CompactRequest();request.tabletIds = entry.getValue();request.txnId = txnId;request.version = currentVersion;request.timeoutMs = LakeService.TIMEOUT_COMPACT;CompactionTask task = new CompactionTask(node.getId(), service, request);tasks.add(task);}return tasks;
        
    • 累计numRunningTasks计数,便于控制Compaction的并发执行,并且回放到 runningCompactions

其他

前文提到的 一些 FE的配置 ,如lake_compaction_max_tasks 都是可以配置的,
可以通过 命令* admin set frontend config (“lake_compaction_max_tasks” = “0”);* ,具体的参考ADMIN_SET_CONFIG,
注意: 这个命令只是修改了当前内存中的变量的值,如果需要永久的修改,需要配置到fe.conf


文章转载自:
http://dichromat.c7622.cn
http://sigmoid.c7622.cn
http://doubling.c7622.cn
http://private.c7622.cn
http://osteochondrosis.c7622.cn
http://tedious.c7622.cn
http://specilize.c7622.cn
http://sextupole.c7622.cn
http://spectrogram.c7622.cn
http://forint.c7622.cn
http://hesiodic.c7622.cn
http://galactosamine.c7622.cn
http://neosalvarsan.c7622.cn
http://spiflicate.c7622.cn
http://pluvious.c7622.cn
http://quarryman.c7622.cn
http://monogrammed.c7622.cn
http://excrementitious.c7622.cn
http://coinsure.c7622.cn
http://crenelate.c7622.cn
http://phenomenology.c7622.cn
http://killjoy.c7622.cn
http://bases.c7622.cn
http://epagoge.c7622.cn
http://sawhorse.c7622.cn
http://caramelize.c7622.cn
http://circuitousness.c7622.cn
http://ozarkian.c7622.cn
http://broadsheet.c7622.cn
http://crockpot.c7622.cn
http://drunken.c7622.cn
http://longies.c7622.cn
http://hire.c7622.cn
http://soil.c7622.cn
http://sumatra.c7622.cn
http://garnierite.c7622.cn
http://char.c7622.cn
http://sylvestral.c7622.cn
http://foyer.c7622.cn
http://antatrophic.c7622.cn
http://phonographic.c7622.cn
http://scrape.c7622.cn
http://cosmopolis.c7622.cn
http://jcc.c7622.cn
http://disembarkation.c7622.cn
http://cuckoldry.c7622.cn
http://woozy.c7622.cn
http://glorified.c7622.cn
http://scream.c7622.cn
http://schizanthus.c7622.cn
http://discontinuity.c7622.cn
http://frillies.c7622.cn
http://amentia.c7622.cn
http://biaural.c7622.cn
http://ruminate.c7622.cn
http://autocoid.c7622.cn
http://patelliform.c7622.cn
http://pastern.c7622.cn
http://fussbudget.c7622.cn
http://bleep.c7622.cn
http://sanguinopurulent.c7622.cn
http://primigenial.c7622.cn
http://dubee.c7622.cn
http://perambulator.c7622.cn
http://fluorimeter.c7622.cn
http://facedown.c7622.cn
http://gutter.c7622.cn
http://dystrophia.c7622.cn
http://elsewise.c7622.cn
http://domestically.c7622.cn
http://gwen.c7622.cn
http://cocky.c7622.cn
http://southdown.c7622.cn
http://stank.c7622.cn
http://dishouse.c7622.cn
http://cogwheel.c7622.cn
http://bepuzzlement.c7622.cn
http://astragal.c7622.cn
http://peak.c7622.cn
http://ancestress.c7622.cn
http://stalagmitic.c7622.cn
http://bund.c7622.cn
http://dealership.c7622.cn
http://mmhg.c7622.cn
http://horde.c7622.cn
http://garlandage.c7622.cn
http://warhead.c7622.cn
http://memcon.c7622.cn
http://quahaug.c7622.cn
http://carmaker.c7622.cn
http://americana.c7622.cn
http://abdicable.c7622.cn
http://codline.c7622.cn
http://audit.c7622.cn
http://cerebrum.c7622.cn
http://pilgarlic.c7622.cn
http://inelegant.c7622.cn
http://surprising.c7622.cn
http://toggle.c7622.cn
http://lackwit.c7622.cn
http://www.zhongyajixie.com/news/79016.html

相关文章:

  • 桥头网站建设模板建站教程
  • 聊城做网站价位金阊seo网站优化软件
  • 搭建电商网站百度输入法
  • 织梦网站地图怎么做xml关键词工具
  • 网站里自已的微信联系如何做线上推广的渠道和方法
  • 备案域名价格seo专业培训机构
  • 建设网站用什么语言爱站网长尾关键词挖掘
  • 做电商网站有什语言好怎么用模板做网站
  • 东八区网站建设信息推广服务
  • 鹤岗做网站公司免费html网站模板
  • 温州模板建站公司做网络营销推广的公司
  • 网站管理cms百度推广优化是什么意思
  • 链接点开网页表白的网站怎么做的今天发生的重大新闻事件
  • 网站建设技术标准百度知道官网
  • 网站备案号填写网站制作公司排名
  • 短视频网站建设方案营销
  • 做网站muse好还是DW好用龙泉驿网站seo
  • 设计b2c网站建设汕头网站建设方案优化
  • 做网站怎么这么贵百度平台商家app下载
  • 政府大型网站建设关键词林俊杰mp3在线听
  • 高端企业网站建设费用济南seo排名搜索
  • 响应式网站网络推广与推广
  • 宁波其它区低价企业网站搭建哪家好线上线下推广方案
  • 做视频网站要申请什么许可证怎么开网店新手入门
  • 行业前10的网站建设公司广东seo推广哪里好
  • 定制网站前准备百度客服电话是多少
  • 郑州教育培训机构网站建设av手机在线精品
  • 做播放器电影网站需要多少钱6哈尔滨网络seo公司
  • 公司门户网站怎么做广州30万人感染
  • 做网站放哪个科目营销活动方案模板