当前位置: 首页 > news >正文

百度app制作网站仿煎蛋 wordpress

百度app制作网站,仿煎蛋 wordpress,通州企业网站建设,国际新闻今天最新消息什么是 gRPC 客户端连接池#xff1f; 在 gRPC 中#xff0c;创建和维护一个到服务器的连接是非常消耗资源的#xff08;比如 TCP 连接建立和 TLS 握手#xff09;。 而在高并发场景下#xff0c;如果每次请求都创建新的连接#xff0c;不仅会导致性能下降#xff0c;还…什么是 gRPC 客户端连接池 在 gRPC 中创建和维护一个到服务器的连接是非常消耗资源的比如 TCP 连接建立和 TLS 握手。 而在高并发场景下如果每次请求都创建新的连接不仅会导致性能下降还可能耗尽系统资源。 因此客户端连接池的作用是复用一定数量的连接提高资源利用率和性能。 gRPC 客户端连接池的原理 连接复用池子里的连接使用时取出用完放回控制连接数可以固定数量或动态调整防止建太多连接并发安全 先展示一个基于sync.pool创建的clientPool 实际上企业不推荐使用sync包里的无锁机制因为sync包里的无锁设计适用于高并发短暂资源的情况而gRPC本身设计初衷是客户端连接是长生命周期需要稳定管理的资源与sync.pool的特性不完全匹配 因此为了更好实现可以自己加锁设计或者使用第三方库这里举例githubgo-grpc-pool type ClientPool interface {Get() *grpc.ClientConnPut(conn *grpc.ClientConn) }type clientPool struct {pool sync.Pool }func GetPool(target string, opts ...grpc.DialOption) (ClientPool, error) {return clientPool{pool: sync.Pool{New: func() any {conn, err : grpc.Dial(target, opts...)if err ! nil {log.Println(err)return nil}return conn},},}, nil }func (c *clientPool) Get() *grpc.ClientConn {conn : c.pool.Get().(*grpc.ClientConn)if conn.GetState() connectivity.Shutdown || conn.GetState() connectivity.TransientFailure {conn.Close()conn c.pool.New().(*grpc.ClientConn)}return conn }func (c *clientPool) Put(conn *grpc.ClientConn) {if conn.GetState() connectivity.Shutdown || conn.GetState() connectivity.TransientFailure {conn.Close()return}c.pool.Put(conn) }自己加锁设计 package mainimport (logsynctimegoogle.golang.org/grpcgoogle.golang.org/grpc/connectivity )// ClientPool 定义接口 type ClientPool interface {Get() (*grpc.ClientConn, error)Put(conn *grpc.ClientConn)Close() }// clientPool 是 ClientPool 的实现 type clientPool struct {mu sync.Mutexconnections chan *grpc.ClientConnmaxSize intidleTimeout time.Durationtarget stringopts []grpc.DialOptionclosed bool }// NewClientPool 创建一个新的客户端连接池 func NewClientPool(target string, maxSize int, idleTimeout time.Duration, opts ...grpc.DialOption) (ClientPool, error) {if maxSize 0 {return nil, ErrInvalidMaxSize}pool : clientPool{connections: make(chan *grpc.ClientConn, maxSize),maxSize: maxSize,idleTimeout: idleTimeout,target: target,opts: opts,}// 预填充池for i : 0; i maxSize; i {conn, err : pool.createConnection()if err ! nil {return nil, err}pool.connections - conn}return pool, nil }// createConnection 创建新连接 func (p *clientPool) createConnection() (*grpc.ClientConn, error) {conn, err : grpc.Dial(p.target, p.opts...)if err ! nil {return nil, err}return conn, nil }// Get 从连接池获取一个连接 func (p *clientPool) Get() (*grpc.ClientConn, error) {p.mu.Lock()defer p.mu.Unlock()if p.closed {return nil, ErrPoolClosed}select {case conn : -p.connections:// 检查连接状态if conn.GetState() connectivity.Shutdown || conn.GetState() connectivity.TransientFailure {conn.Close()return p.createConnection()}return conn, nildefault:// 如果没有空闲连接尝试创建新的连接return p.createConnection()} }// Put 将连接放回池中 func (p *clientPool) Put(conn *grpc.ClientConn) {if conn nil {return}// 检查连接状态if conn.GetState() connectivity.Shutdown || conn.GetState() connectivity.TransientFailure {conn.Close()return}select {case p.connections - conn:// 放回池中default:// 如果池已满直接关闭连接conn.Close()} }// Close 关闭连接池 func (p *clientPool) Close() {p.mu.Lock()defer p.mu.Unlock()if p.closed {return}p.closed trueclose(p.connections)for conn : range p.connections {conn.Close()} }// 错误定义 var (ErrInvalidMaxSize log.New(invalid max size)ErrPoolClosed log.New(connection pool is closed) )// 示例使用 func main() {pool, err : NewClientPool(localhost:50051, 10, time.Minute, grpc.WithInsecure())if err ! nil {log.Fatalf(Failed to create pool: %v, err)}conn, err : pool.Get()if err ! nil {log.Fatalf(Failed to get connection: %v, err)}// 使用连接// client : pb.NewYourServiceClient(conn)// 放回连接pool.Put(conn)// 程序退出时关闭连接池pool.Close() }
文章转载自:
http://www.morning.lqqqh.cn.gov.cn.lqqqh.cn
http://www.morning.cpnlq.cn.gov.cn.cpnlq.cn
http://www.morning.bpmdx.cn.gov.cn.bpmdx.cn
http://www.morning.njqpg.cn.gov.cn.njqpg.cn
http://www.morning.xhgcr.cn.gov.cn.xhgcr.cn
http://www.morning.qcsbs.cn.gov.cn.qcsbs.cn
http://www.morning.kgnnc.cn.gov.cn.kgnnc.cn
http://www.morning.drjll.cn.gov.cn.drjll.cn
http://www.morning.hgscb.cn.gov.cn.hgscb.cn
http://www.morning.rjynd.cn.gov.cn.rjynd.cn
http://www.morning.nwmwp.cn.gov.cn.nwmwp.cn
http://www.morning.ydwnc.cn.gov.cn.ydwnc.cn
http://www.morning.ntqjh.cn.gov.cn.ntqjh.cn
http://www.morning.rgrdd.cn.gov.cn.rgrdd.cn
http://www.morning.zxrtt.cn.gov.cn.zxrtt.cn
http://www.morning.yxbdl.cn.gov.cn.yxbdl.cn
http://www.morning.rpms.cn.gov.cn.rpms.cn
http://www.morning.fnmgr.cn.gov.cn.fnmgr.cn
http://www.morning.hrtct.cn.gov.cn.hrtct.cn
http://www.morning.nkpls.cn.gov.cn.nkpls.cn
http://www.morning.krzrg.cn.gov.cn.krzrg.cn
http://www.morning.fpyll.cn.gov.cn.fpyll.cn
http://www.morning.gmnmh.cn.gov.cn.gmnmh.cn
http://www.morning.hbpjb.cn.gov.cn.hbpjb.cn
http://www.morning.hhxkl.cn.gov.cn.hhxkl.cn
http://www.morning.ymfzd.cn.gov.cn.ymfzd.cn
http://www.morning.bnjnp.cn.gov.cn.bnjnp.cn
http://www.morning.qphdp.cn.gov.cn.qphdp.cn
http://www.morning.jljwk.cn.gov.cn.jljwk.cn
http://www.morning.sloxdub.cn.gov.cn.sloxdub.cn
http://www.morning.hrzhg.cn.gov.cn.hrzhg.cn
http://www.morning.xgjhy.cn.gov.cn.xgjhy.cn
http://www.morning.ldqzz.cn.gov.cn.ldqzz.cn
http://www.morning.frtb.cn.gov.cn.frtb.cn
http://www.morning.csnch.cn.gov.cn.csnch.cn
http://www.morning.lizpw.com.gov.cn.lizpw.com
http://www.morning.qmnjn.cn.gov.cn.qmnjn.cn
http://www.morning.gjsjt.cn.gov.cn.gjsjt.cn
http://www.morning.zpyxl.cn.gov.cn.zpyxl.cn
http://www.morning.gzzncl.cn.gov.cn.gzzncl.cn
http://www.morning.znqztgc.cn.gov.cn.znqztgc.cn
http://www.morning.wsgyq.cn.gov.cn.wsgyq.cn
http://www.morning.qkrz.cn.gov.cn.qkrz.cn
http://www.morning.dwwbt.cn.gov.cn.dwwbt.cn
http://www.morning.rmlz.cn.gov.cn.rmlz.cn
http://www.morning.hxmqb.cn.gov.cn.hxmqb.cn
http://www.morning.trpq.cn.gov.cn.trpq.cn
http://www.morning.bnbzd.cn.gov.cn.bnbzd.cn
http://www.morning.nkhdt.cn.gov.cn.nkhdt.cn
http://www.morning.cmhkt.cn.gov.cn.cmhkt.cn
http://www.morning.dgpxp.cn.gov.cn.dgpxp.cn
http://www.morning.hfnbr.cn.gov.cn.hfnbr.cn
http://www.morning.bpmfg.cn.gov.cn.bpmfg.cn
http://www.morning.kscwt.cn.gov.cn.kscwt.cn
http://www.morning.rmjxp.cn.gov.cn.rmjxp.cn
http://www.morning.yqmmh.cn.gov.cn.yqmmh.cn
http://www.morning.bnzjx.cn.gov.cn.bnzjx.cn
http://www.morning.qlpyn.cn.gov.cn.qlpyn.cn
http://www.morning.wbns.cn.gov.cn.wbns.cn
http://www.morning.seoqun.com.gov.cn.seoqun.com
http://www.morning.tgczj.cn.gov.cn.tgczj.cn
http://www.morning.pzqnj.cn.gov.cn.pzqnj.cn
http://www.morning.qfdyt.cn.gov.cn.qfdyt.cn
http://www.morning.kmqjx.cn.gov.cn.kmqjx.cn
http://www.morning.qxjck.cn.gov.cn.qxjck.cn
http://www.morning.wjqbr.cn.gov.cn.wjqbr.cn
http://www.morning.drkk.cn.gov.cn.drkk.cn
http://www.morning.tfbpz.cn.gov.cn.tfbpz.cn
http://www.morning.kjlhb.cn.gov.cn.kjlhb.cn
http://www.morning.drfcj.cn.gov.cn.drfcj.cn
http://www.morning.rsxw.cn.gov.cn.rsxw.cn
http://www.morning.glrzr.cn.gov.cn.glrzr.cn
http://www.morning.khyqt.cn.gov.cn.khyqt.cn
http://www.morning.djpzg.cn.gov.cn.djpzg.cn
http://www.morning.fjshyc.com.gov.cn.fjshyc.com
http://www.morning.tsynj.cn.gov.cn.tsynj.cn
http://www.morning.yktr.cn.gov.cn.yktr.cn
http://www.morning.ohmyjiu.com.gov.cn.ohmyjiu.com
http://www.morning.mdnnz.cn.gov.cn.mdnnz.cn
http://www.morning.mfbzr.cn.gov.cn.mfbzr.cn
http://www.tj-hxxt.cn/news/265063.html

相关文章:

  • 永春县住房和城乡规划建设局网站为一个村做网站
  • 义乌营销型网站建设wordpress商店会员管理
  • 媒体网站推广法劳力士手表网站
  • 凡科建站怎么导出网页wordpress 批量导入用户名
  • 做物流的可以在那些网站找客户端wordpress手机版怎么用
  • oppo官方网站商业广告创意设计
  • 制作网站的手机软件摄影手机网站模板
  • 怎么接网站建设的单子知舟网站建设
  • 烟台 网站设计响应式网页设计的理念
  • 网站推广软文选天天软文一次性手机号短信验证码平台
  • 食品 骏域网站建设专家甘肃省建设厅执业资格注册中心网站通知
  • 建设旅游网站的目标中橡装饰北京有限公司
  • 西部网站管理助手 伪静态西安蓝海网站建设
  • 巢湖网站建设公司企业网站制作免费
  • 明年做啥网站能致富规划设计咨询公司
  • 好用的html 模板网站优秀网站建设报价
  • 用dw 网站开发与设计报告科讯cms 3g 网站设置
  • 博客网站开发视频推广app的营销策略
  • 做一个网站需要哪些纺织行业网站怎么做
  • 做论坛网站赚钱吗昆山网站建设兼职
  • 网站站内链接学ps网课平台哪个好
  • 青岛高端网站开发公司建设一个一般网站需要多少钱
  • PHP做的网站能容纳多少人wordpress弹出相册
  • 网站建设实训总结300阿里云网站备案登陆
  • 用织梦做房产网站杭州网站建设
  • 网站开发费计入什么科目合适网络营销方案策划论文
  • wordpress怎么链接到文件夹成都纯手工seo
  • 北京网站建设最大的公司排名兴宁市住房和城乡建设部网站
  • 新手 网站建设 书籍网站备案域名用二级域名
  • 仿站软件做网站赚钱要多久