Files
unitech-golib/gfetcd
2020-04-06 19:57:19 +08:00
..
2020-04-06 19:57:19 +08:00
2020-04-06 19:57:19 +08:00
2020-04-06 19:57:19 +08:00
2020-04-06 19:57:19 +08:00
2020-04-06 19:57:19 +08:00

代码结构

├── README.md
├── client.go     # grpc客户端调用
├── config.go     # 配置结构
├── resolver.go   # 地址解析
└── server.go     # grpc服务端调用

数据结构

基本结构

type BasicConfig struct {
    DialTimeout int      `toml:"dial_timeout"` // 连接超时时间默认5秒
    EndPoints   []string `toml:"endpoints"`    // etcd的地址
    Prefix      string   `toml:"prefix"`       // etcd服务的路径前缀区分环境用
    Debug       bool     `toml:"debug"`        // 使用debug模式打印详细的etcd交互日志很多非调试不建议打开
}

grpc服务端用的配置

type NameConfig struct {
    BasicConfig
    Servers []string `toml:"servers"` // 注册的服务名称,可以是多个
    Addr    string   `toml:"addr"`    // 服务地址可以是IP:PORT或者:PORT格式
    TTL     int64    `toml:"ttl"`     // 租约超时时间默认5秒
}

grpc客户端用的配置

type ResolverConfig struct {
    BasicConfig
    WatchServers []string `toml:"watch_servers"` // 依赖的服务名称
}

使用方法

grpc服务端

	// demo
	&config.EtcdName = {
		EndPoints:[]string{"127.0.0.1:2379"},
		Prefix: "/ng/test/okash",
		Servers: []string{"orders.Orders", "product.Product"},
		Addr: ":8701",
	}
	etcdName, err := gfetcd.NameRegist(&config.EtcdName)
	if err != nil {
		panic(err)
	}
	defer etcdName.Unregister()

grpc客户端

	// demo
	&config.EtcdReslv{
		EndPoints:[]string{"127.0.0.1:2379"},
		Prefix: "/ng/test/okash",
		WatchServers: []string{"product.Product"},
	}
	
	// 连接etcd
	EtcdReslv, err = gfetcd.NewResolver(&config.EtcdReslv)
	
	// 调用方法
	err := EtcdReslv.Call(context.Background(), &XXXReq{}, &XXXResp{})