etcd는grpc명명해석 및 서비스 발견에 사용
이름 확인 및 서비스 검색
grpc는 두 개의 인터페이스를 제공합니다:
google.golang.org/grpc/naming
type Resolver interface {
//
Resolve(target string) (Watcher, error)
}
type Watcher interface {
//
Next() ([]*Update, error)
Close()
}
etcd3 기본 Resolver 및 Watcher
패키지:
github.com/coreos/etcd/clientv3/naming
etcd 원본 참조:naming 패키지핵심 코드
// etcd
cli, err := clientv3.New(clientv3.Config{
// etcd
Endpoints: []string{"127.0.0.1:2379"},
DialTimeout: 5 * time.Second,
})
if err != nil {
fmt.Println("[ ] connect etcd err:", err)
return
}
//
r := &naming.GRPCResolver{Client: cli}
// etcd , myService, 8001
r.Update(context.TODO(), "myService", naming.Update{Op: naming.Add, Addr: "192.168.0.101:8001"})
// TODO
// 8001 ...
// ...
// etcd
cli, err := clientv3.New(clientv3.Config{
// etcd
Endpoints: []string{"127.0.0.1:2379"},
DialTimeout: 5 * time.Second,
})
if err != nil {
fmt.Println("[ ] connect etcd err:", err)
return
}
r := &etcdnaming.GRPCResolver{Client: cli}
b := grpc.RoundRobin(r)
conn, err := grpc.Dial("myService", grpc.WithBalancer(b), grpc.WithBlock())
if err != nil {
panic(err)
}
// TODO
// conn client, userCli := protos.NewIUserServiceClient(conn)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
집 서버 설계 (하드웨어 편)자신의 Redmine이나 ownCloud를 운용하기 위해 사쿠라 VPS, DigitalOcean, OpenShift 등을 놀랐습니다만, 침착 해 왔으므로 현상을 정리하고 싶습니다. 먼저 하드웨어 구성을 정리합니다. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.