zoukankan      html  css  js  c++  java
  • EasyDSS转码模块关于gRPC服务注册到ETCD的实现过程

    在上一篇分享博客中,我们讲了EasyDSS负载均衡模块的优化由nginx方式变更为etcd方式,大家可以了解一下:如何通过ETCD实现EasyDSS分布式负载均衡?因此相应的转码模块的gRPC服务端及客户端的代码也要做一定的修改。

    在etcd的代码层面,无论是客户端或是服务器端都有了一定程度的复杂,但后续的服务部署简化了相当多,仅仅需要修改配置文件,不需要像nginx那样修改nginx的配置,并重启nginx。

    客户端实现

    客户端的实现,相对服务器端没有过多的负载操作,仅仅需要在开启gRPC连接前。注册到负责负载均衡的etcd服务即可。

    etcd:= etcd3.Config{
    		Endpoints: conf2.Cfg.Etcd,
    	}
    	registry.RegisterResolver("etcd3", etcd, "/backend/services", "test", "1.0")
    	conn, err := grpc.Dial("etcd3:///", grpc.WithInsecure(), grpc.WithBalancerName(balancer.RoundRobin))
    	if err != nil {
    		log.Error("grpc dial: %s", err.Error())
    		return nil
    	}
    	cli := proto.NewTranscodeClient(conn)
    	log.Info("Init transcode service success")
    

    服务器实现

    服务器端,需要保证自身的ip+port的配置唯一,即同一IP端口则必须不同,不同IP则可以是同一端口,Node配置需要唯一。之后注册服务到etcd,启动gRPC服务。

    服务启动成功后可以打开etcdKeeper查看服务是否注册成功;

    cfg := conf2.GetConfig().GRPC
    	etcdConfig := etcd3.Config{
    		Endpoints: cfg.Etcd,
    	}
    	service := &registry.ServiceInfo{
    		InstanceId: cfg.Node,
    		Name:       cfg.Name,
    		Version:    cfg.Version,
    		Address:    fmt.Sprintf("%s:%d", cfg.Ip, cfg.Port),
    		Metadata:   metadata.Pairs(common.WeightKey, "1"),
    	}
    
    	registrar, err := etcd.NewRegistrar(&etcd.Config{
    		EtcdConfig:  etcdConfig,
    		RegistryDir: "/backend/services",
    		Ttl:         10 * time.Second,
    	})
    	if err != nil {
    		log.Error("grpc server registrar err, %v", err.Error())
    		return
    	}
    	server := NewServer(fmt.Sprintf(":%d", cfg.Port))
    	wg := sync.WaitGroup{}
    
    	wg.Add(1)
    	go func() {
    		server.Run()
    		wg.Done()
    	}()
    
    	wg.Add(1)
    	go func() {
    		registrar.Register(service)
    		wg.Done()
    	}()
  • 相关阅读:
    ORDER BY子句
    SELECT子句
    WHERE子句
    定义数据完整性
    Microsoft Visual Studio Tips
    zz人性的经典总结54句
    About Refactor
    zz你的交际力能否通吃?
    zz一个高级主管必须明白的几点事情
    About SQLServer Transaction
  • 原文地址:https://www.cnblogs.com/easydss/p/15044687.html
Copyright © 2011-2022 走看看