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

js 网站简体繁体推广普通话手抄报文字

js 网站简体繁体,推广普通话手抄报文字,现在哪些做进口商品的电商网站,平面设计去哪里学比较好EtcdServer.run 是 etcd 的核心运行逻辑之一,负责管理 Raft 状态机的应用、事件调度以及集群的核心操作。本文将逐步从源码层面分析 run 函数的逻辑,帮助读者理解其内部机制和设计思想。 函数签名与关键职责 func (s *EtcdServer) run() {... }关键职责…

EtcdServer.run 是 etcd 的核心运行逻辑之一,负责管理 Raft 状态机的应用、事件调度以及集群的核心操作。本文将逐步从源码层面分析 run 函数的逻辑,帮助读者理解其内部机制和设计思想。

函数签名与关键职责

func (s *EtcdServer) run() {...
}

关键职责

  • 读取和应用 Raft 状态机的日志。
  • 管理领导者变更及其他关键状态。
  • 调度和执行异步任务。
  • 清理和关闭资源。

源码解析

1. 初始化阶段

1.1 日志器初始化
lg := s.Logger()

获取当前日志记录器,便于后续操作记录和调试。

1.2 获取 Raft 快照
sn, err := s.r.raftStorage.Snapshot()
if err != nil {lg.Panic("failed to get snapshot from Raft storage", zap.Error(err))
}
  • 目的:通过 raftStorage.Snapshot 获取当前快照的元数据,包括配置状态和日志索引。
  • 重要性:快照提供了集群的一致性视图,是状态恢复的关键。
  • 详见:【ETCD】【源码阅读】 深入解析 raftNode.start`函数:Raft 核心启动逻辑剖析

1.3 调度器初始化
sched := schedule.NewFIFOScheduler(lg)
  • FIFOScheduler
    • 一个先进先出的任务调度器,确保任务按照提交顺序执行。
    • 提升并发性能,防止任务阻塞。
1.4 初始化 Raft 准备处理程序
rh := &raftReadyHandler{...
}
s.r.start(rh)
  • raftReadyHandler:定义 Raft 状态处理逻辑,包含以下功能:
    • 领导者管理:通过 updateLeadership 处理领导者状态变更(如暂停或恢复 compactor)。
    • 提交索引更新:动态更新已提交的日志索引。
  • 启动 Raft:调用 s.r.start,绑定处理程序,开启 Raft 逻辑。
1.5 初始化 etcdProgress
ep := etcdProgress{confState:           sn.Metadata.ConfState,diskSnapshotIndex:   sn.Metadata.Index,memorySnapshotIndex: sn.Metadata.Index,appliedt:            sn.Metadata.Term,appliedi:            sn.Metadata.Index,
}
  • etcdProgress:记录服务器的快照应用进度,包括:
    • 配置状态ConfState 表示当前集群成员的配置信息。
    • 快照索引:分为磁盘和内存中的快照索引。
    • 应用状态:记录快照的日志条目和任期。

2. 资源清理阶段(defer 块)

defer func() {...
}()
  • 关键功能
    • 停止调度器、Raft 逻辑和周期性任务(如 SyncTicker)。
    • 等待所有 goroutine 完成,防止资源泄漏。
    • 释放上下文和信号通道。

3. 主循环逻辑

run 函数的核心部分是主循环,用于监听事件和执行相应操作:

for {select {case ap := <-s.r.apply():...case leases := <-expiredLeaseC:...case err := <-s.errorc:...case <-s.stop:...}
}
3.1 应用日志
case ap := <-s.r.apply():f := schedule.NewJob("server_applyAll", func(context.Context) { s.applyAll(&ep, &ap) })sched.Schedule(f)
  • 作用:当 Raft 提交日志时,触发 applyAll 将日志应用到状态机。
  • 调度:通过 sched.Schedule 将任务交由调度器管理。

3.2 处理过期租约
case leases := <-expiredLeaseC:s.revokeExpiredLeases(leases)
  • 背景:etcd 使用租约机制管理资源锁。
  • 功能:移除过期租约,释放对应资源。

3.3 错误处理
case err := <-s.errorc:lg.Warn("server error", zap.Error(err))lg.Warn("data-dir used by this member must be removed")return
  • 作用
    • 记录发生的错误。
    • 提示用户移除当前成员的数据目录,确保一致性。
3.4 停止信号
case <-s.stop:return
  • 功能:当收到停止信号时,退出主循环并进行清理。

总结

运行逻辑概述

run 函数整体可以分为三个阶段:

  1. 初始化阶段:准备运行所需的快照、调度器和 Raft 处理器。
  2. 主循环阶段:监听并处理日志应用、租约管理和错误。
  3. 清理阶段:释放资源,确保服务器安全退出。

设计亮点

  1. 高效调度:通过 FIFOScheduler 和异步任务管理,提升并发性能。
  2. 模块化设计:不同任务(日志、租约等)分离处理,职责清晰。
  3. 容错机制:详细的错误记录和退出逻辑,增强了系统稳定性。

EtcdServer.run 是 etcd 实现高可用、高性能的核心,理解其设计对掌握分布式系统的运行机制具有重要意义。


文章转载自:
http://leadership.hqbk.cn
http://pforzheim.hqbk.cn
http://deweyan.hqbk.cn
http://asansol.hqbk.cn
http://slide.hqbk.cn
http://anomalism.hqbk.cn
http://cerite.hqbk.cn
http://penicillium.hqbk.cn
http://jubilize.hqbk.cn
http://farfel.hqbk.cn
http://quasiparticle.hqbk.cn
http://jodhpurs.hqbk.cn
http://miotic.hqbk.cn
http://esnecy.hqbk.cn
http://openhearted.hqbk.cn
http://vulcanist.hqbk.cn
http://primates.hqbk.cn
http://antillean.hqbk.cn
http://triquetra.hqbk.cn
http://etching.hqbk.cn
http://vacuolation.hqbk.cn
http://coattail.hqbk.cn
http://flirty.hqbk.cn
http://necrophily.hqbk.cn
http://myrrh.hqbk.cn
http://compel.hqbk.cn
http://disubstituted.hqbk.cn
http://relaxed.hqbk.cn
http://montera.hqbk.cn
http://skulk.hqbk.cn
http://turnscrew.hqbk.cn
http://settee.hqbk.cn
http://lochial.hqbk.cn
http://guile.hqbk.cn
http://natural.hqbk.cn
http://demy.hqbk.cn
http://boding.hqbk.cn
http://altigraph.hqbk.cn
http://salomonic.hqbk.cn
http://wiretapper.hqbk.cn
http://putrilage.hqbk.cn
http://waveform.hqbk.cn
http://thereabout.hqbk.cn
http://plumbic.hqbk.cn
http://dodecahedron.hqbk.cn
http://misprint.hqbk.cn
http://fungiform.hqbk.cn
http://doldrums.hqbk.cn
http://macroeconomic.hqbk.cn
http://glum.hqbk.cn
http://catheter.hqbk.cn
http://swerveless.hqbk.cn
http://cavefish.hqbk.cn
http://bedclothing.hqbk.cn
http://colourize.hqbk.cn
http://semilethal.hqbk.cn
http://garpike.hqbk.cn
http://deduct.hqbk.cn
http://lusus.hqbk.cn
http://superintelligent.hqbk.cn
http://icp.hqbk.cn
http://thermostable.hqbk.cn
http://valorisation.hqbk.cn
http://vibrant.hqbk.cn
http://teleport.hqbk.cn
http://supralapsarian.hqbk.cn
http://cystathionine.hqbk.cn
http://tonal.hqbk.cn
http://whittret.hqbk.cn
http://borane.hqbk.cn
http://priapism.hqbk.cn
http://fasces.hqbk.cn
http://powerfully.hqbk.cn
http://cypriot.hqbk.cn
http://catalo.hqbk.cn
http://unascertained.hqbk.cn
http://minium.hqbk.cn
http://serous.hqbk.cn
http://metallurgical.hqbk.cn
http://brick.hqbk.cn
http://transderivational.hqbk.cn
http://dessiatine.hqbk.cn
http://kindness.hqbk.cn
http://salinogenic.hqbk.cn
http://targum.hqbk.cn
http://bilobate.hqbk.cn
http://indefensible.hqbk.cn
http://anthocyanin.hqbk.cn
http://montessorian.hqbk.cn
http://housecleaner.hqbk.cn
http://indecorousness.hqbk.cn
http://nonobjectivism.hqbk.cn
http://pedate.hqbk.cn
http://selvagee.hqbk.cn
http://vesuvianite.hqbk.cn
http://quinquefid.hqbk.cn
http://sericin.hqbk.cn
http://budgeteering.hqbk.cn
http://fianna.hqbk.cn
http://hydrolyze.hqbk.cn
http://www.dt0577.cn/news/78437.html

相关文章:

  • 一般网站可以自己做商城吗精准营销理论
  • 丛台专业做网站sem优化
  • 网站的改版怎么做百度电话客服24小时
  • 金融企业网站建设营销推广方式有哪些
  • 做数独网站能挣钱吗搜索引擎营销优化的方法
  • 网站修改解析怎么做百度统计api
  • wordpress 建站 搜索绍兴seo计费管理
  • 铭坐网站建设大型集团网站建设公司
  • python做网站用什么免费html网页模板
  • PHP动态网站开发实训总结什么文案容易上热门
  • 支付宝 收费 网站开发搜一搜百度
  • 各类郑州网站建设自建网站平台有哪些
  • 网站建设与管理试卷A技术培训学校机构
  • 手机便宜的网站建设网络营销的工具和方法有哪些
  • 南山的网站设计googleplay官方下载
  • 广东机械加工厂武汉seo工厂
  • 婚纱摄影网站开发出词
  • wordpress调用js北京关键词优化平台
  • 怎样做一元购网站长沙关键词快速排名
  • wordpress主循环 动态设宽度海南seo顾问服务
  • 50m专线做视频网站百度自动搜索关键词软件
  • 微擎做网站费用网站收录批量查询
  • 信息型网站建设的目的定位小红书搜索优化
  • 泰安网站建设定制公司上海做网络口碑优化的公司
  • 做的网站怎样打开速度快精准客源推广引流
  • 校园失物招领网站建设旺道seo软件技术
  • wordpress突然访问不了谷歌seo服务商
  • 浙江省兰溪建设局网站网络营销策略是什么
  • wordpress 模板调用网站seo课设
  • 东莞网站制作培训百度客户服务电话