mirror of
https://gitee.com/milvus-io/milvus.git
synced 2025-12-28 22:45:26 +08:00
87 lines
1.8 KiB
Go
87 lines
1.8 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"go.etcd.io/etcd/clientv3"
|
|
"google.golang.org/grpc"
|
|
"log"
|
|
"net"
|
|
"time"
|
|
|
|
pd "github.com/czs007/suvlim/master/grpc/proto"
|
|
)
|
|
|
|
const (
|
|
port = ":50051"
|
|
)
|
|
|
|
var address = ""
|
|
type masterServer struct {
|
|
pd.UnimplementedGreeterServer
|
|
}
|
|
|
|
func GetAddressFromETCD(ctx context.Context, key string) (string, error) {
|
|
ETCDClient, err := clientv3.New(clientv3.Config{
|
|
Endpoints: []string{"192.168.2.28:2379"},
|
|
DialTimeout: 5 * time.Second,
|
|
})
|
|
|
|
fmt.Println(err)
|
|
kv := clientv3.NewKV(ETCDClient)
|
|
|
|
getResp, err := kv.Get(ctx, key)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
address := getResp.Kvs[0].Value
|
|
|
|
return string(address), nil
|
|
}
|
|
|
|
func PutAddressToETCD(ctx context.Context, key string, address string) (error) {
|
|
ETCDClient, err := clientv3.New(clientv3.Config{
|
|
Endpoints: []string{"192.168.2.28:2379"},
|
|
DialTimeout: 5 * time.Second,
|
|
})
|
|
|
|
fmt.Println(err)
|
|
kv := clientv3.NewKV(ETCDClient)
|
|
|
|
_, err = kv.Put(ctx, key, address)
|
|
return err
|
|
}
|
|
|
|
func (s *masterServer) ReportAddress(ctx context.Context, in *pd.Request) (*pd.Reply, error) {
|
|
log.Printf("Receive a grpc server address: %v!", in.GetAddress())
|
|
err := PutAddressToETCD(ctx, "proxyAddress", in.GetAddress())
|
|
if err != nil{
|
|
return &pd.Reply{Status: false}, err
|
|
}
|
|
//address = in.GetAddress()
|
|
return &pd.Reply{Status: true}, nil
|
|
}
|
|
|
|
func (s *masterServer) GetAddress(ctx context.Context, in *pd.EmptyRequest) (*pd.Request, error) {
|
|
fmt.Println("This is test SendAddress!")
|
|
address, err := GetAddressFromETCD(ctx, "proxyAddress")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &pd.Request{Address: address}, nil
|
|
}
|
|
|
|
func main() {
|
|
listen, err := net.Listen("tcp", port)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
}
|
|
|
|
s := grpc.NewServer()
|
|
|
|
pd.RegisterGreeterServer(s, &masterServer{})
|
|
if err := s.Serve(listen); err != nil{
|
|
log.Printf("failed to server: %v", err)
|
|
}
|
|
} |