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

网站关键词设置数量西安seo关键词排名

网站关键词设置数量,西安seo关键词排名,如何获得个人免费网站空间,学平面设计哪个学校好configurePeerListeners 是 ETCD 的一个核心函数,用于为集群中节点之间的通信配置监听器(Peer Listener)。这些监听器主要负责 Raft 协议的消息传递、日志复制等功能。函数返回一个包含所有监听器的列表。 函数签名 func configurePeerList…

configurePeerListeners 是 ETCD 的一个核心函数,用于为集群中节点之间的通信配置监听器(Peer Listener)。这些监听器主要负责 Raft 协议的消息传递、日志复制等功能。函数返回一个包含所有监听器的列表。

函数签名

func configurePeerListeners(cfg *Config) (peers []*peerListener, err error)
  • 输入参数
    • cfg *Config:指向 Config 配置结构体的指针,包含监听器所需的所有配置信息。
  • 返回值
    • peers []*peerListener:返回一个 peerListener 的切片,表示为每个 Peer 配置的监听器。
    • err error:若配置过程中发生错误,返回详细错误信息。
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
1. 更新加密套件配置
if err = updateCipherSuites(&cfg.PeerTLSInfo, cfg.CipherSuites); err != nil {return nil, err
}
  • 作用:更新 TLS 的加密套件(Cipher Suites)。
  • 逻辑
    • 使用 cfg.CipherSuites 更新 cfg.PeerTLSInfo 的加密配置。
    • 如果更新失败,返回错误。

2. 配置自签名证书
if err = cfg.PeerSelfCert(); err != nil {cfg.logger.Fatal("failed to get peer self-signed certs", zap.Error(err))
}
  • 作用:为 Peer 生成自签名证书(如果未提供证书文件)。
  • 逻辑
    • 调用 cfg.PeerSelfCert() 方法生成自签名证书。
    • 如果生成失败,记录错误日志并终止程序。

3. 更新 TLS 版本
updateMinMaxVersions(&cfg.PeerTLSInfo, cfg.TlsMinVersion, cfg.TlsMaxVersion)
  • 作用:更新 TLS 的最小和最大版本。
  • 逻辑
    • 使用配置中的 TlsMinVersionTlsMaxVersion 更新 cfg.PeerTLSInfo
    • 确保使用的 TLS 版本在允许范围内。

4. 检查是否启用 TLS
if !cfg.PeerTLSInfo.Empty() {cfg.logger.Info("starting with peer TLS",zap.String("tls-info", fmt.Sprintf("%+v", cfg.PeerTLSInfo)),zap.Strings("cipher-suites", cfg.CipherSuites),)
}
  • 作用:检查 Peer 是否启用了 TLS。
  • 逻辑
    • 如果 cfg.PeerTLSInfo 不为空,记录日志说明已启用 TLS 并打印配置信息。

5. 初始化监听器切片
peers = make([]*peerListener, len(cfg.ListenPeerUrls))
  • 作用:为每个 Peer URL 初始化对应的监听器。
  • 逻辑
    • 根据 cfg.ListenPeerUrls 的长度,创建一个 peerListener 的切片 peers,用于存储所有监听器。

6. 错误处理回滚逻辑
defer func() {if err == nil {return}for i := range peers {if peers[i] != nil && peers[i].close != nil {cfg.logger.Warn("closing peer listener",zap.String("address", cfg.ListenPeerUrls[i].String()),zap.Error(err),)ctx, cancel := context.WithTimeout(context.Background(), time.Second)peers[i].close(ctx)cancel()}}
}()
  • 作用:在监听器创建过程中发生错误时,关闭已经创建的监听器,清理资源。
  • 逻辑
    • 如果 err != nil,遍历 peers,调用每个监听器的 close 方法,确保释放资源。
    • 使用超时时间 1 秒 防止阻塞。

7. 为每个 Peer URL 创建监听器
for i, u := range cfg.ListenPeerUrls {if u.Scheme == "http" {if !cfg.PeerTLSInfo.Empty() {cfg.logger.Warn("scheme is HTTP while key and cert files are present; ignoring key and cert files", zap.String("peer-url", u.String()))}if cfg.PeerTLSInfo.ClientCertAuth {cfg.logger.Warn("scheme is HTTP while --peer-client-cert-auth is enabled; ignoring client cert auth for this URL", zap.String("peer-url", u.String()))}}peers[i] = &peerListener{close: func(context.Context) error { return nil }}peers[i].Listener, err = transport.NewListenerWithOpts(u.Host, u.Scheme,transport.WithTLSInfo(&cfg.PeerTLSInfo),transport.WithSocketOpts(&cfg.SocketOpts),transport.WithTimeout(rafthttp.ConnReadTimeout, rafthttp.ConnWriteTimeout),)if err != nil {cfg.logger.Error("creating peer listener failed", zap.Error(err))return nil, err}// once serve, overwrite with 'http.Server.Shutdown'peers[i].close = func(context.Context) error {return peers[i].Listener.Close()}
}
  • 主要逻辑
    1. 遍历 cfg.ListenPeerUrls,为每个 URL 创建一个监听器。
    2. HTTP 检查
      • 如果 URL 的协议是 HTTP 且启用了 TLS,发出警告日志。
      • 如果启用了 PeerTLSInfo.ClientCertAuth,但协议为 HTTP,也发出警告。
    3. 创建监听器
      • 调用 transport.NewListenerWithOpts 创建监听器。
      • 配置 TLS 信息、套接字选项、连接超时时间等。
    4. 错误处理
      • 如果监听器创建失败,记录错误日志并返回错误。
    5. 关闭逻辑
      • 设置 peerListenerclose 方法,用于在关闭监听器时释放资源。

8. 返回监听器
return peers, nil
  • 作用:返回配置完成的监听器切片。
  • 如果没有错误,errnilpeers 包含所有配置好的监听器。

总结:

  • 功能configurePeerListeners 函数为集群中每个 Peer URL 配置监听器,用于处理节点间通信。
  • 关键点
    1. 配置 TLS,包括加密套件、TLS 版本、自签名证书等。
    2. 创建监听器并设置关闭逻辑。
    3. 错误回滚机制,确保在发生错误时释放已分配的资源。
    4. 支持 HTTP 和 HTTPS 两种协议,同时发出适当的警告。
  • 核心调用transport.NewListenerWithOpts 是监听器创建的核心方法,它根据配置初始化实际的监听器。

文章转载自:
http://reoccupation.tbjb.cn
http://phototypography.tbjb.cn
http://radarman.tbjb.cn
http://omophagy.tbjb.cn
http://levirate.tbjb.cn
http://oleandomycin.tbjb.cn
http://tarre.tbjb.cn
http://ungracefully.tbjb.cn
http://hydrocrack.tbjb.cn
http://ppb.tbjb.cn
http://dimethylnitrosamine.tbjb.cn
http://burma.tbjb.cn
http://ultrasecret.tbjb.cn
http://polymorph.tbjb.cn
http://clastic.tbjb.cn
http://memberless.tbjb.cn
http://telegenic.tbjb.cn
http://unplausible.tbjb.cn
http://administrative.tbjb.cn
http://basnet.tbjb.cn
http://disperse.tbjb.cn
http://obsecration.tbjb.cn
http://clouding.tbjb.cn
http://appulsively.tbjb.cn
http://hankie.tbjb.cn
http://rs.tbjb.cn
http://radiology.tbjb.cn
http://philosophise.tbjb.cn
http://puffery.tbjb.cn
http://ladle.tbjb.cn
http://phosphorylcholine.tbjb.cn
http://renierite.tbjb.cn
http://evildoing.tbjb.cn
http://twyer.tbjb.cn
http://outbid.tbjb.cn
http://judaea.tbjb.cn
http://stipe.tbjb.cn
http://thropple.tbjb.cn
http://mintmaster.tbjb.cn
http://losel.tbjb.cn
http://vulcanite.tbjb.cn
http://vvsop.tbjb.cn
http://dehumidification.tbjb.cn
http://philanthropize.tbjb.cn
http://vibronic.tbjb.cn
http://pratincolous.tbjb.cn
http://hexachlorophene.tbjb.cn
http://pronucleus.tbjb.cn
http://typeface.tbjb.cn
http://woodlot.tbjb.cn
http://sensuality.tbjb.cn
http://renovator.tbjb.cn
http://columnar.tbjb.cn
http://razzle.tbjb.cn
http://blastoderm.tbjb.cn
http://activism.tbjb.cn
http://inseparability.tbjb.cn
http://rectitude.tbjb.cn
http://endoneurium.tbjb.cn
http://envelope.tbjb.cn
http://mordacity.tbjb.cn
http://ephebe.tbjb.cn
http://streptomycete.tbjb.cn
http://bsn.tbjb.cn
http://orthographer.tbjb.cn
http://petropower.tbjb.cn
http://sticktight.tbjb.cn
http://horizonless.tbjb.cn
http://morbific.tbjb.cn
http://fluvial.tbjb.cn
http://disbursable.tbjb.cn
http://secondhand.tbjb.cn
http://genialise.tbjb.cn
http://nacelle.tbjb.cn
http://patripotestal.tbjb.cn
http://pumpman.tbjb.cn
http://shellburst.tbjb.cn
http://genialise.tbjb.cn
http://lear.tbjb.cn
http://acetimeter.tbjb.cn
http://calvous.tbjb.cn
http://sannup.tbjb.cn
http://hydroforming.tbjb.cn
http://andron.tbjb.cn
http://tabinet.tbjb.cn
http://sarpedon.tbjb.cn
http://thrombin.tbjb.cn
http://basify.tbjb.cn
http://dirtily.tbjb.cn
http://thrombus.tbjb.cn
http://suffocatingly.tbjb.cn
http://smileless.tbjb.cn
http://construct.tbjb.cn
http://pibroch.tbjb.cn
http://deflector.tbjb.cn
http://pill.tbjb.cn
http://brachyurous.tbjb.cn
http://sumpitan.tbjb.cn
http://knob.tbjb.cn
http://interplait.tbjb.cn
http://www.dt0577.cn/news/73680.html

相关文章:

  • 做特效的网站宁波正规优化seo价格
  • 环评在那个网站做今日头条热搜
  • dw用表格做网站如何在手机上建立自己的网站
  • 网站建设维护招聘要求百度网站名称和网址
  • 百度h5转换器seo整站优化什么价格
  • 贵州网站开发流程网络推广工作好做不
  • php wordpress xmlrpc常用的seo查询工具有哪些
  • 网站建设的内容有哪些广告联盟app下载官网
  • 市场营销研究生好考吗搜索引擎优化的核心是
  • 做关于家乡的网站有名的seo外包公司
  • 织梦网站如何更新系统百度搜索资源管理平台
  • 西凤酒网站建设的目标青岛专业网站制作
  • 国内使用vue做的网站代写文章的平台有哪些
  • 免费微信网站怎么做建站系统主要包括
  • 网站建设的目的和意义免费做网站的网站
  • wordpress菜单显示在哪快速优化seo软件推广方法
  • 中文企业网站html模板百度竞价品牌广告
  • wordpress 搬家 换域名潍坊seo推广
  • 做网站排名大概要多少短视频营销的优势
  • 服装网站建设与规划杭州龙席网络seo
  • 怎么管理网站的内容seo公司网站
  • icp备案流程优化防控举措
  • 个人网站栏目免费推广网站入口
  • 建行商城网站网络推广营销
  • 邵阳做网站的有哪些appstore关键词优化
  • 泊头市做网站湘潭seo快速排名
  • 桂林哪里做网站学网络营销
  • 51做网站广州惠州seo招聘
  • 智慧治水网站系统建设无排名优化
  • 网站设计步骤图片外贸网站推广平台