From f4c6c982a275fcdead46a7bdb5704fc39b4f1bb0 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期五, 01 九月 2023 16:46:14 +0800 Subject: [PATCH] 接收工艺模型新增消息,plc读取时间可配置 --- pkg/etcd/client.go | 369 ++++++++++++++++++++++++++-------------------------- 1 files changed, 185 insertions(+), 184 deletions(-) diff --git a/pkg/etcd/client.go b/pkg/etcd/client.go index 25f5dce..c999c34 100644 --- a/pkg/etcd/client.go +++ b/pkg/etcd/client.go @@ -1,195 +1,196 @@ package etcd -import ( - "apsClient/conf" - "context" - "fmt" - "go.etcd.io/etcd/client/pkg/v3/transport" - "log" - "net" - "time" - - clientv3 "go.etcd.io/etcd/client/v3" -) - -// ServiceRegister 鍒涘缓绉熺害娉ㄥ唽鏈嶅姟 -type ServiceRegister struct { - cli *clientv3.Client // etcd v3 client - leaseID clientv3.LeaseID // 绉熺害ID - keepAliveChan <-chan *clientv3.LeaseKeepAliveResponse // 绉熺害keepalieve鐩稿簲chan - key string // key - val string // value -} - -// NewServiceRegister 鏂板缓娉ㄥ唽鏈嶅姟 -func NewServiceRegister(endpoints []string, key, val string, lease int64, dailTimeout int) error { - - // todo 璇佷功 - tlsInfo := transport.TLSInfo{ - TrustedCAFile: conf.Conf.Etcd.Tls.CaFile, - CertFile: conf.Conf.Etcd.Tls.CertFile, - KeyFile: conf.Conf.Etcd.Tls.KeyFile, - } - - tlsConfig, err := tlsInfo.ClientConfig() - - if err != nil { - fmt.Printf("tlsconfig failed, err:%v\n", err) - } - - cli, err := clientv3.New(clientv3.Config{ - Endpoints: endpoints, - DialTimeout: time.Duration(dailTimeout) * time.Second, - TLS: tlsConfig, - }) - - defer func(cli *clientv3.Client) { - err := cli.Close() - if err != nil { - - } - }(cli) - log.Printf("44444444444444444 %v", endpoints) - - if err != nil { - return err - } - - // put - ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second) - _, err = cli.Put(ctx, key, val) - cancel() - if err != nil { - fmt.Printf("put to etcd failed, err:%v\n", err) - return err - } - - //ser := &ServiceRegister{ - // cli: cli, - // key: key, - // val: val, - //} - // - //log.Printf("55555555555555555555555 %v", ser) - //鐢宠绉熺害璁剧疆鏃堕棿keepalive - //if err := ser.putKeyWithLease(lease); err != nil { - // return nil, err - //} - - return err -} - -// 璁剧疆绉熺害 -func (s *ServiceRegister) putKeyWithLease(lease int64) error { - // 鍒涘缓涓�涓柊鐨勭绾︼紝骞惰缃畉tl鏃堕棿 - resp, err := s.cli.Grant(context.Background(), lease) - if err != nil { - return err - } - log.Printf("666666666666666 %v", resp) - - // 娉ㄥ唽鏈嶅姟骞剁粦瀹氱绾� - _, err = s.cli.Put(context.Background(), s.key, s.val, clientv3.WithLease(resp.ID)) - if err != nil { - return err - } - - // 璁剧疆缁 瀹氭湡鍙戦�侀渶姹傝姹� - // KeepAlive浣跨粰瀹氱殑绉熺害姘歌繙鏈夋晥銆� 濡傛灉鍙戝竷鍒伴�氶亾鐨刱eepalive鍝嶅簲娌℃湁绔嬪嵆琚娇鐢紝 - // 鍒欑绾﹀鎴风灏嗚嚦灏戞瘡绉掗挓缁х画鍚慹tcd鏈嶅姟鍣ㄥ彂閫佷繚鎸佹椿鍔ㄨ姹傦紝鐩村埌鑾峰彇鏈�鏂扮殑鍝嶅簲涓烘銆� - // etcd client浼氳嚜鍔ㄥ彂閫乼tl鍒癳tcd server锛屼粠鑰屼繚璇佽绉熺害涓�鐩存湁鏁� - leaseRespChan, err := s.cli.KeepAlive(context.Background(), resp.ID) - if err != nil { - return err - } - log.Printf("777777777777777777 %v", leaseRespChan) - - s.leaseID = resp.ID - s.keepAliveChan = leaseRespChan - - return nil -} - -// ListenLeaseRespChan 鐩戝惉 缁鎯呭喌 -func (s *ServiceRegister) ListenLeaseRespChan() { - for _ = range s.keepAliveChan { - } - - //for leaseKeepResp := range s.keepAliveChan { - // fmt.Println("缁害鎴愬姛", leaseKeepResp) - //} - - //fmt.Println("鍏抽棴缁") -} - -// Close 娉ㄩ攢鏈嶅姟 -func (s *ServiceRegister) Close() error { - // 鎾ら攢绉熺害 - if _, err := s.cli.Revoke(context.Background(), s.leaseID); err != nil { - return err - } - - //fmt.Println("鎾ら攢绉熺害") - return s.cli.Close() -} - -// GetServeAddr 鑾峰彇鏈満鍦板潃 -func GetServeAddr(addr string) (string, error) { - conn, err := net.Dial("udp", addr) - if err != nil { - return "", err - } - - conn.Close() - - localAddr := conn.LocalAddr().(*net.UDPAddr) - //ip := strings.Split(localAddr.String(), ":")[0] - - fmt.Println("++++++++ ip: ", localAddr.IP.String()) - return localAddr.IP.String(), nil -} - -func SetEtcdData(key string, value string) { - cli, err := clientv3.New(clientv3.Config{ - Endpoints: []string{"192.168.20.119:2379"}, - DialTimeout: 5 * time.Second, - }) - if err != nil { - // handle error! - fmt.Printf("connect to etcd failed, err:%v\n", err) - return - } - fmt.Println("connect to etcd success") - defer cli.Close() - // put - ctx, cancel := context.WithTimeout(context.Background(), time.Second) - _, err = cli.Put(ctx, key, value) - cancel() - if err != nil { - fmt.Printf("put to etcd failed, err:%v\n", err) - return - } -} - -//func GetETCDLeaderEndpoint() (string, error) { -// // 鑾峰彇kubeconfig閰嶇疆鏂囦欢璺緞 -// clientset, err := util.GetClient() +// +//import ( +// "apsClient/conf" +// "context" +// "fmt" +// "go.etcd.io/etcd/client/pkg/v3/transport" +// "log" +// "net" +// "time" +// +// clientv3 "go.etcd.io/etcd/client/v3" +//) +// +//// ServiceRegister 鍒涘缓绉熺害娉ㄥ唽鏈嶅姟 +//type ServiceRegister struct { +// cli *clientv3.Client // etcd v3 client +// leaseID clientv3.LeaseID // 绉熺害ID +// keepAliveChan <-chan *clientv3.LeaseKeepAliveResponse // 绉熺害keepalieve鐩稿簲chan +// key string // key +// val string // value +//} +// +//// NewServiceRegister 鏂板缓娉ㄥ唽鏈嶅姟 +//func NewServiceRegister(endpoints []string, key, val string, lease int64, dailTimeout int) error { +// +// // todo 璇佷功 +// tlsInfo := transport.TLSInfo{ +// TrustedCAFile: conf.Conf.Etcd.Tls.CaFile, +// CertFile: conf.Conf.Etcd.Tls.CertFile, +// KeyFile: conf.Conf.Etcd.Tls.KeyFile, +// } +// +// tlsConfig, err := tlsInfo.ClientConfig() +// +// if err != nil { +// fmt.Printf("tlsconfig failed, err:%v\n", err) +// } +// +// cli, err := clientv3.New(clientv3.Config{ +// Endpoints: endpoints, +// DialTimeout: time.Duration(dailTimeout) * time.Second, +// TLS: tlsConfig, +// }) +// +// defer func(cli *clientv3.Client) { +// err := cli.Close() +// if err != nil { +// +// } +// }(cli) +// log.Printf("44444444444444444 %v", endpoints) +// +// if err != nil { +// return err +// } +// +// // put +// ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second) +// _, err = cli.Put(ctx, key, val) +// cancel() +// if err != nil { +// fmt.Printf("put to etcd failed, err:%v\n", err) +// return err +// } +// +// //ser := &ServiceRegister{ +// // cli: cli, +// // key: key, +// // val: val, +// //} +// // +// //log.Printf("55555555555555555555555 %v", ser) +// //鐢宠绉熺害璁剧疆鏃堕棿keepalive +// //if err := ser.putKeyWithLease(lease); err != nil { +// // return nil, err +// //} +// +// return err +//} +// +//// 璁剧疆绉熺害 +//func (s *ServiceRegister) putKeyWithLease(lease int64) error { +// // 鍒涘缓涓�涓柊鐨勭绾︼紝骞惰缃畉tl鏃堕棿 +// resp, err := s.cli.Grant(context.Background(), lease) +// if err != nil { +// return err +// } +// log.Printf("666666666666666 %v", resp) +// +// // 娉ㄥ唽鏈嶅姟骞剁粦瀹氱绾� +// _, err = s.cli.Put(context.Background(), s.key, s.val, clientv3.WithLease(resp.ID)) +// if err != nil { +// return err +// } +// +// // 璁剧疆缁 瀹氭湡鍙戦�侀渶姹傝姹� +// // KeepAlive浣跨粰瀹氱殑绉熺害姘歌繙鏈夋晥銆� 濡傛灉鍙戝竷鍒伴�氶亾鐨刱eepalive鍝嶅簲娌℃湁绔嬪嵆琚娇鐢紝 +// // 鍒欑绾﹀鎴风灏嗚嚦灏戞瘡绉掗挓缁х画鍚慹tcd鏈嶅姟鍣ㄥ彂閫佷繚鎸佹椿鍔ㄨ姹傦紝鐩村埌鑾峰彇鏈�鏂扮殑鍝嶅簲涓烘銆� +// // etcd client浼氳嚜鍔ㄥ彂閫乼tl鍒癳tcd server锛屼粠鑰屼繚璇佽绉熺害涓�鐩存湁鏁� +// leaseRespChan, err := s.cli.KeepAlive(context.Background(), resp.ID) +// if err != nil { +// return err +// } +// log.Printf("777777777777777777 %v", leaseRespChan) +// +// s.leaseID = resp.ID +// s.keepAliveChan = leaseRespChan +// +// return nil +//} +// +//// ListenLeaseRespChan 鐩戝惉 缁鎯呭喌 +//func (s *ServiceRegister) ListenLeaseRespChan() { +// for _ = range s.keepAliveChan { +// } +// +// //for leaseKeepResp := range s.keepAliveChan { +// // fmt.Println("缁害鎴愬姛", leaseKeepResp) +// //} +// +// //fmt.Println("鍏抽棴缁") +//} +// +//// Close 娉ㄩ攢鏈嶅姟 +//func (s *ServiceRegister) Close() error { +// // 鎾ら攢绉熺害 +// if _, err := s.cli.Revoke(context.Background(), s.leaseID); err != nil { +// return err +// } +// +// //fmt.Println("鎾ら攢绉熺害") +// return s.cli.Close() +//} +// +//// GetServeAddr 鑾峰彇鏈満鍦板潃 +//func GetServeAddr(addr string) (string, error) { +// conn, err := net.Dial("udp", addr) // if err != nil { // return "", err // } // -// // 鑾峰彇ETCD涓昏妭鐐圭殑鍦板潃 -// pods, err := clientset.CoreV1().Pods("kube-system").List(context.TODO(), metav1.ListOptions{ -// LabelSelector: "component=etcd", +// conn.Close() +// +// localAddr := conn.LocalAddr().(*net.UDPAddr) +// //ip := strings.Split(localAddr.String(), ":")[0] +// +// fmt.Println("++++++++ ip: ", localAddr.IP.String()) +// return localAddr.IP.String(), nil +//} +// +//func SetEtcdData(key string, value string) { +// cli, err := clientv3.New(clientv3.Config{ +// Endpoints: []string{"192.168.20.119:2379"}, +// DialTimeout: 5 * time.Second, // }) // if err != nil { -// return "", err +// // handle error! +// fmt.Printf("connect to etcd failed, err:%v\n", err) +// return // } -// -// if len(pods.Items) == 0 { -// return "", fmt.Errorf("no ETCD pods found") +// fmt.Println("connect to etcd success") +// defer cli.Close() +// // put +// ctx, cancel := context.WithTimeout(context.Background(), time.Second) +// _, err = cli.Put(ctx, key, value) +// cancel() +// if err != nil { +// fmt.Printf("put to etcd failed, err:%v\n", err) +// return // } -// -// leaderEndpoint := pods.Items[0].Status.PodIP + ":2379" -// return leaderEndpoint, nil //} +// +////func GetETCDLeaderEndpoint() (string, error) { +//// // 鑾峰彇kubeconfig閰嶇疆鏂囦欢璺緞 +//// clientset, err := util.GetClient() +//// if err != nil { +//// return "", err +//// } +//// +//// // 鑾峰彇ETCD涓昏妭鐐圭殑鍦板潃 +//// pods, err := clientset.CoreV1().Pods("kube-system").List(context.TODO(), metav1.ListOptions{ +//// LabelSelector: "component=etcd", +//// }) +//// if err != nil { +//// return "", err +//// } +//// +//// if len(pods.Items) == 0 { +//// return "", fmt.Errorf("no ETCD pods found") +//// } +//// +//// leaderEndpoint := pods.Items[0].Status.PodIP + ":2379" +//// return leaderEndpoint, nil +////} -- Gitblit v1.8.0