资讯专栏INFORMATION COLUMN

golang通用连接池,支持GRPC,RPC,TCP

BaronZhang / 1034人阅读

摘要:用于管理客户端到服务集群之间的连接的主要功能通用连接池支持集群动态更新声明当前使用随机数策略达到动态负载均衡下载导入方法使用示例初始化连接池动态更新服务地址实现各种业务代码打印空闲连接数参考版权声明

pool

https://github.com/flyaways/pool

Pool 用于管理客户端到服务集群之间的连接.

Pool的主要功能:

通用连接池 - Pool for GRPC,RPC,TCP.support RPC timeout.

支持集群 - Connet to Cluster.

动态更新 - Danamic update targets.

Pool runs on Linux, Mac OS X, and Windows.

声明:当前使用随机数策略达到动态负载均衡.

下载
go get -u gopkg.in/flyaways/pool.v1
导入方法
import "gopkg.in/flyaways/pool.v1"
使用示例
package main

import (
    "log"
    "time"

    "gopkg.in/flyaways/pool.v1"
    "google.golang.org/grpc"
)

func main() {
    options := &pool.Options{
        InitTargets:  []string{"127.0.0.1:8080"},
        InitCap:      5,
        MaxCap:       30,
        DialTimeout:  time.Second * 5,
        IdleTimeout:  time.Second * 60,
        ReadTimeout:  time.Second * 5,
        WriteTimeout: time.Second * 5,
    }

    //初始化连接池
    p, err := pool.NewGRPCPool(options, grpc.WithInsecure())

    if err != nil {
        log.Printf("%#v
", err)
        return
    }

    if p == nil {
        log.Printf("p= %#v
", p)
        return
    }

    defer p.Close()

    //动态更新服务地址
    //options.Input()<-&[]string{}

    conn, err := p.Get()
    if err != nil {
        log.Printf("%#v
", err)
        return
    }

    defer p.Put(conn)

    //实现各种业务代码
    //conn.DoSomething()

    //打印空闲连接数
    log.Printf("len=%d
", p.IdleCount())
}
参考

https://github.com/fatih/pool

https://github.com/silenceper/pool

https://github.com/daizuozhuo/rpc-example

版权声明

The MIT License (MIT) - see LICENSE for more details

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/63634.html

相关文章

  • golang 网络框架之 grpc

    摘要:是开源的一款网络框架,具有极好的性能,可能是目前性能最好的网络框架,支持流式,可以很方便地构建消息订阅发布系统,支持几乎所有主流的语言,使用上面也很简单,公司很多服务基于框架构建,运行非常稳定开始之前首先你要知道网络框架为你做了哪些事情网络 grpc 是 google 开源的一款网络框架,具有极好的性能,可能是目前性能最好的网络框架,支持流式 rpc,可以很方便地构建消息订阅发布系统,...

    leeon 评论0 收藏0
  • 高性能异步RPC框架 kiss-rpc-flatbuffer介绍和测试

    摘要:支持和手动编写协议两种方式。支持压缩算法,压缩速度,性能优越。单请求压缩对于单个请求进行压缩,也会根据请求的数据包压缩方式进行压缩。待开发数据加密使用多证书加密和单证书加密,更加安全。负载均衡,反向代理主动发现服务器,动态感知集群状态。 kiss-rpc特性: 1. 轻量级,简单易用。支持idl和手动编写协议两种方式。模拟函数式调用方式,更加符合rpc远程调用方式。 易修改易使用,已...

    gclove 评论0 收藏0
  • 从实践到原理,带你参透 gRPC

    摘要:原文地址从实践到原理,带你参透在语言中大放异彩,越来越多的小伙伴在使用,最近也在公司安利了一波,希望能通过这篇文章能带你一览的爱与恨。帧的主要作用是装填主体信息,是数据帧。 showImg(https://segmentfault.com/img/remote/1460000019552245); 原文地址:从实践到原理,带你参透 gRPC gRPC 在 Go 语言中大放异彩,越来越多...

    geekidentity 评论0 收藏0
  • 明星分分合合的洪荒点击量,微博Mesh服务化改造如何支撑?(附PPT下载)

    摘要:为了解决这一系列问题,微博从年开发了语言的框架,并基于此完成了服务化改造。这些经历之下微博也积累了一套服务治理型的服务化体系。的版,所要解决的是微博平台内部服务之间的调用,因此协议时,其实并没有考虑到跨语言的问题,用的是对比较友好的。 showImg(https://segmentfault.com/img/remote/1460000012601596?w=1080&h=606); ...

    ShowerSun 评论0 收藏0
  • 基于golang和redis实现轻量级队列

    摘要:基于和实现轻量级队列概述是基于提供的特性使用语言开发的一个简单易用的队列关于使用特性可以参考之前本人写过一篇很简陋的文章实现队列的灵感和设计是基于有赞延迟队列设计文章内容清晰而且很好理解但是没有提供源码在文章的最后也提到了一些未来架构方向不 Github: 基于golang和redis实现轻量级队列 1. 概述 gmq是基于redis提供的特性,使用go语言开发的一个简单易用的队列;...

    array_huang 评论0 收藏0

发表评论

0条评论

BaronZhang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<