grpc复用client连接
以前在调用grpc接口时,总要调用Dial函数来创建一个grpc的ClientConn,如果每次都要创建,那么开销代价是很大的。
grpc的ClientConn对象可以帮我们实现自动重连的机制,并且是并发安全的,因此可以定义一个全局的ClientConn,然后用到的时候就用这个连接。
下面是简易实现:
package delayqueueimport ("google.golang.org/grpc""sync""sync/atomic""unsafe"
)var (globalClientConn unsafe.Pointerlck sync.Mutex
)func GetClient(target string) (DelayQueueClient, error) { //返回需要的clientconn, err := GetConn(target)if err != nil {return (DelayQueueClient)(nil), err}return NewDelayQueueClient(conn), nil //此处调用pb.go文件中生成的创建client的方法
}func GetConn(target string) (*grpc.ClientConn, error) {if atomic.LoadPointer(&globalClientConn) != nil {return (*grpc.ClientConn)(globalClientConn), nil}lck.Lock()defer lck.Unlock()if atomic.LoadPointer(&globalClientConn) != nil { //double checkreturn (*grpc.ClientConn)(globalClientConn), nil}cli, err := newGrpcConn(target)if err != nil {return nil, err}atomic.StorePointer(&globalClientConn, unsafe.Pointer(cli))return cli, nil
}func newGrpcConn(target string) (*grpc.ClientConn, error) {conn, err := grpc.Dial(target,grpc.WithInsecure(),)if err != nil {return nil, err}return conn, nil
}
grpc复用client连接相关推荐
- 带入gRPC:gRPC Streaming, Client and Server
带入gRPC:gRPC Streaming, Client and Server 原文地址:带入gRPC:gRPC Streaming, Client and Server 项目地址:go-grpc- ...
- oracle kepserve,Kepware.KEPServer\KEPServerEX_V5操作简介含opc quick client 连接测试
[实例简介] Kepware.KEPServer\KEPServerEX_V5操作简介含opc quick client 连接测试 3.開魯 KEPServereX的管理視窗 請從「開始」->「 ...
- VMware View Client 连接服务器,提示身份验证失败,连接服务器时
第一次安装或则重装系统后安装VMware View的时候 点击下一步 然后连接服务器地址 例如:192.168.xx.xxx,点击连接后,在输入账号的时候弹出VMware View Client ...
- Paho Java Client 连接阿里云物联网平台
Paho Java Client 连接阿里云物联网平台 进入阿里云物联网平台->点击产品->新建 点击设备->添加设备 查看设备证书,复制记录,后面使用 阿里云TCP通信 一机一密. ...
- vSphere Client连接主机提示远程服务器响应时间过长
问题现象 使用VMware vSphere Client连接EXSi主机时,提示"由于远程服务器响应时间过长,请求失败(操作超时)". 解决方法 打开Windows注册表,找到HK ...
- Prosys OPC Client连接OPC DA
Prosys OPC Client连接OPC DA Prosys OPC 客户端将帮助排除 OPC 连接故障并测试 OPC 服务器. 您可以读写数据.浏览服务器以及导出和导入地址空间. OPC 客户端 ...
- TDH Kerberos java client 连接Hyperbase(Hbase)
TDH Kerberos java client 连接Hyperbase(Hbase) 异常信息 SASL authentication failed. The most likely cause i ...
- 【翻译自mos文章】对于JDBC thin client连接,ORA-28040 and SQLNET.ALLOWED_LOGON_VERSION_CLIENT
对于JDBC thin client连接,ORA-28040 and SQLNET.ALLOWED_LOGON_VERSION_CLIENT的问题 来源于: ORA-28040 and SQLNET. ...
- Go http client 连接池不复用的问题
当 http client 返回值为不为空,只读取 response header,但不读 body 内容就执行 response.Body.Close(),那么连接会被主动关闭,得不到复用. 测试代 ...
- c++排查线程hang住_Kafka学习笔记之kafka高版本Client连接0.9Server引发的血案排查 - 时光飞逝,逝者如斯...
0x00 概述 kafka server虽然原则上是兼容详细的client,但只是高版本的Server端兼容低版本的Client端: 在有高版本Client端连接时,会导致低版本Server集群会ha ...
最新文章
- Python 获取项目根路径
- 学习笔记:Windows 下Keras安装和配置指南
- 【深度学习】图片分类CNN模板
- [导入]存储过程-分隔符号-多条件查询
- ASP.Net学习笔记006--Get和Post的区别
- 解决岛屿类问题(网格)通用解法DFS(附题)
- java改变人物动作_Java创建对象的动作分析
- Eigen教程(5)
- 2019上半年系统集成项目管理工程师上午真题及答案解析
- Android统计图控件之圆饼图
- 德州大学计算机系郭小虎2021,2021美国德州农工大学PhD项目
- 计算机协会游园活动方案,计算机爱好者协会建设策划方案
- ElasticSearch7 集群安装和配置
- 【C语言】图像处理-揭秘电影特效,随心所欲,合成图像
- MySQL5.7和MySQL8的区别
- UE4_第三方库的引用
- 《Spring揭秘》读后感(给你们强烈安利这本书)
- 单招面试的自我介绍计算机,单招面试自我介绍分享
- 学计算机的千万不要去高中当老师.
- 如何实现USB Type-c转HDMI2.0功能方案
热门文章
- 网口压线顺序_网线水晶头接法顺序_网线水晶头接法口诀
- 什么是EMC?什么是EMI?什么是EMS?电磁兼容详解(一)
- win7计算机管理员与超级,win7系统家庭版开启Administrator超级管理员帐户的详细技巧...
- #cs231n#Assignment2:Dropout.ipynb
- 服务器双向同步文件,lsyncd配置两台服务器文件双向实时同步
- 怎样从微博下载视频?
- unity3d 任务系统设计 mmo
- 易优CMS插件-站长必备易优CMS插件
- 心绞痛--大柴胡汤合桂枝茯苓丸---胡希恕
- 读《富爸爸,穷爸爸》后感(四)