二维码
找好货

扫一扫关注

当前位置: 首页 » 资讯 » 专题 » 正文

聊聊kingbus的startRaftPeer(Superbus)

放大字体  缩小字体 发布日期:2022-08-02 14:34:01    作者:life    浏览次数:3642    评论:0
导读

序 本文主要研究一下kingbus的startRaftPeerstartRaftPeerkingbus/server/server.go func (s *KingbusServer) startRaftPeer(peerURLs type

本文主要研究一下kingbus的startRaftPeer



startRaftPeer

kingbus/server/server.go

func (s *KingbusServer) startRaftPeer(peerURLs types.URLs) error { err := s.raftNode.NewPeerListener(peerURLs) if err != nil { return err } s.raftNode.SetPeerHandler() s.raftNode.PeerHandlerServe() log.Log.Infof("startRaftPeer success") return nil }

  • startRaftPeer方法根据peerURLs通过s.raftNode.NewPeerListener开启listener,之后执行s.raftNode.SetPeerHandler()、s.raftNode.PeerHandlerServe()
NewPeerListener

kingbus/raft/peer_handler.go

//NewPeerListener create listener of peer func (r *Node) NewPeerListener(peerURLs types.URLs) (err error) { peers := make([]*peerListener, len(peerURLs)) defer func() { if err == nil { return } for i := range peers { if peers[i] != nil && peers[i].close != nil { log.Log.Info("stopping listening for peers on ", peerURLs.String()) peers[i].close(context.Background()) } } }() ​ for i, u := range peerURLs { peers[i] = &peerListener{close: func(context.Context) error { return nil }} peers[i].Listener, err = rafthttp.NewListener(u, nil) if err != nil { return err } peers[i].close = func(context.Context) error { return peers[i].Listener.Close() } log.Log.Info("listening for peers on ", u.String()) } r.PeerListener = peers return nil }

  • NewPeerListener方法遍历peerURLs通过rafthttp.NewListener创建peerListener
PeerHandlerServe

kingbus/raft/peer_handler.go

//PeerHandlerServe serve func (r *Node) PeerHandlerServe() { for _, peer := range r.PeerListener { go peer.serve() } }

  • PeerHandlerServe方法则执行peer.serve()
小结

startRaftPeer方法根据peerURLs通过s.raftNode.NewPeerListener开启listener,之后执行s.raftNode.SetPeerHandler()、s.raftNode.PeerHandlerServe()

doc
  • server.go
 
关键词: kingstar
(文/life)
打赏
免责声明
• 
本文为life原创作品,作者: life。欢迎转载,转载请注明原文出处:https://www.114618.com/news/129213.html 。本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们。
0相关评论
 

(c)2008-2018 找好货 B2B SYSTEM All Rights Reserved

京ICP备2022008976号-2