解析组件
- Rpcx(解析中……)
- Appdash(待解析)
- NSQ(待解析)
- Hystrix-go(待解析)
Rpcx[RPC通信]
服务端
ServerPlugin
服务插件,用以很多服务启动的时候赋予额外的功能
1 | //PluginContainer represents a plugin container that defines all methods to manage plugins. |
Server#RegisterName
->Plugins.DoRegister
Server#Plugins.Add
用户自己调用Server#SendMessage
->Plugins.DoPreWriteRequest,DoPostWriteRequest
Server#serveListener
->Plugins.DoPostConnAccept
Server#serveConn
->Plugins.DoPreWriteResponse,DoPostWriteResponse
Server#readRequest
->Plugins.DoPreReadRequest,DoPostReadRequest
官方提供示例组件如下
- ZookeeperRegisterPlugin
- EtcdRegisterPlugin
- ConsulRegisterPlugin
- MetricsPlugin
- TracePlugin
ZooKeeperRegisterPlugin
主要运用于Zk上的注册工作
1 | //Zookeeper Register Plugin 实现了Zookeeper注册 |
- Start:设置当前server服务情况并set到zk上相关server_basepath
- Register:直接将相关server服务set到zk的server_basepath下的znode
- HandleConnAccept:每次服务调用则调整相关Metrics
Server#Serve[服务监听]
监听主函数入口
1 | func (s *Server) Serve(network, address string) (err error) { |
此处startGateWay引出http相关服务以及tcp服务的路由功能
Http路由
1 | func (s *Server) startHTTP1APIGateway(ln net.Listener) { |
Tcp路由
1 | func (m *cMux) Serve() error { |
客户端
……
资料
国内经验
国内查看评论需要代理~