目录

服务类的基本文件


clientv3.Client

     程序和etcd服务器建立的原生连接,后面的类和功能本质上都是对这个连接的封装


ServiceInfo

     IP:string           GrcpListten,本程序的Grcp服务器监听地址


Service

     核心服务
     Name:string
          服务的名称,例如unique、agent1、agent2、game1、game2…

     Info:ServiceInfo
          包含一个自身Grcp监听地址的对象 例如 127.0.0.1:8101

     stop:chan error
          停止通道标记,靠这个标记来停止服务

     leaseid:clientv3.LeaseID
          和etcd连接的ID

     client:*clientv3.Client
          etcd的原生连接对象

     servicePath:string
          自身服务在etcd上对应的服务地址,比如/backents/unique、/backents/agent/agent1

     serviceType:string
          枚举类型,标定本服务是unique、agent、game或是其他

     version:string
          版本号,用于自动更新

     SetService(name:string,info:ServiceInfo,servicePath:string)
          设置name、info、servicePath和创建stop chan

     Start()
          [go]调用keepAlive发放,同时接受stop标记,和client关闭以及其他可能导致连接关闭的服务

     Stop()
          通过发送stop标记来关闭客户端

     keepAlive()
          etcd客户端保活机制。把grcp的key-value推送到etcd,并且开启保活

     WatchNodes(path:string,callback:fun())
          [go]监听ectd上的字符串,并制定对应的对调

     GetClient()*clientv3.Client
          返回自身的原生连接对象

     PutKey(key:string,value:string,ttl:int64)
          把key和对应的value写入etcd服务器,key是服务器ID,value是Grcp地址

     GetValue(key:string,ttl:int64)
          根据key获取对应的value值,也就是根据服务器id来获取对应grcp地址

     CheckMe(serverInfo,name,serverType:string)
          检查制定这个name和serverType是否在配置文件中,如果不在配置文件中是不能启动的

     WatchMeChange(ch chan int)
          监控配置文件,如果配置文件改变了,则对比版本号,如果版本号发生变化要进行自动重启

     GetServiceInfo(ev:*clientv3.Client)*ServiceInfo
          根据etcd连接事件来获取,是哪个Grcp地址

     GetServiceInfoByValue(value:[]byte)*ServiceInfo
          根据服务ID来获取对应的grcp地址

     BeforeService(endpoints []string)(*Service,error)
          根据etcd的地址生成一个Service,Service包含一个原生的clientv3.Client对象