lib

module
v0.0.0-...-a36dcc1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 24, 2023 License: MIT

README

介绍

累积平时常用的golang开发组件库

组件列表

  • poller: 网络event poll库,支持tcp协议

  • asyncbuffer: 累积数据至buffer中,异步批量处理

  • concurrent_map: 分片并发map

  • queue: 优先队列,延迟队列

  • sort_map:支持对无序map中的kv 升降排序(转换成slice来处理)

  • timingwheel: 层级时间轮

  • buffer pool: 临时对象池, 复用对象,减少gc, 优化逻辑,

  • worker pool: 并发处理的工作任务池,支持超时任务,自动扩缩worker goroutine, 批量不同任务异步处理

  • asynctask : 异步执行单一相同任务,回调错误处理

  • runtimer: 对goroutine运行异常的封装,以及获取goroutine运行时调用的堆栈信息

  • chain: 任务链式执行管理

  • balance: 负载均衡算法,一致性hash, rr, wrr 等

  • cache: 本地缓存patrickmn/go-cache, coocood/freecachehashicorp/golang-lruallegro/bigcachego local cache algorithms benchmark

  • net: 网络工具库

  • client: 调用基础组件服务的封装,mq( rocketMQ 高可用分区,生产分布式事务消息rocketmq-client-go, pulsar 支持流式/共享消费,计算存储分离,高可用分片存放rocksdb, 负载更均衡,易扩展,方便上云管理, pulsar-client-go topic/生产/消费), cache(redis(go-redis pipeline支持更好)操作, ledisdb(goleveldb,leveldb,rocksdb,lmdb,boltdb),pika(rocksdb),tidis(go+rust+c++)), db(mysql/tidb go-sql-driver/mysql go-gorm/gorm可以通过gen一次生成RESTful CURD接口, mongo mongo-go-driver, es shard分片存放,节点路由,易扩展 go-elasticsearch), 连接池等

  • client-mq-kafka: kafka 高可用分区存放, 后续会去掉zk管理元数据依赖(通过kraft Metadata clusters mode管理元数据), 三方库 Shopify/sarama (sarama issue#901支持事务操作的讨论, v1.19.0优化了group consumer pr#1099, 在一些场景支持的不够好, 不推荐场景) confluent-kafka-go (支持事务操作)

  • client-etcd: 使用etcd提供分布式锁,服务发现,服务元数据配置等

  • client-redis:使用redis协议支持的命令提供分布式锁,缓存,限流等功能

  • zerocopy: 利用底层系统的零拷贝技术,mmap: edsrzf/mmap-go sendfile, splice,三方库封装使用

  • limiter: 服务提供方限流算法,防止服务过载策略,单机 固定/滑动时间窗口限流算法,漏桶(uber-go/ratelimit )/( juju/ratelimit )令牌桶算法,分布式限流算法(redis 计数/添加token,通常在流量入口网关层处理,nginx+lua, golang) 对三方开源服务在业务的基础上进行封装;

  • breaker: 服务消费方调用服务熔断机制,开源实现:afex/hystrix-go sony/gobreaker 对三方开源服务在业务的基础上进行封装;

  • log: 日志库, 基于uber zap 库,日志按时间切割lestrrat-go/file-rotatelogs;满足基础日志,访问日志,请求三方日志,panic日志,启动日志,

  • metric: 监控统计方法,比如计算MAU,DAU,精度要求不高可以使用redis HyperLogLog (只需要12K内存,在标准误差0.81%的前提下,能够统计2^64个数据!HyperLogLog是一种基数估计算法), Coda Hale metrics go lib rcrowley/go-metrics (Gauges, Counters, Meters, Histograms, Timers 等等); agent opentelemetry-go -> prometheus

  • trace: 服务链路跟踪,agent opentelemetry-go -> jaeger 主要用来学习借鉴开源的服务框架思路

  • consensus: 分布式一致性协议算法,raft 开源方案 hashicorp/raft 主要用来学习借鉴开源的服务框架思路

  • xdb: 单数据存储实例,B+tree etcd-io/bbolt LMS-tree syndtr/goleveldb 主要用来学习借鉴开源的服务框架思路

  • rpc:三方rpc协议框架封装, grpc-go, thrift, rpcx, dubbo-go 主要用来深入学习框架思路

Directories

Path Synopsis
client
container
queue
from: https://github.com/RussellLuo/timingwheel/blob/master/delayqueue/delayqueue.go
from: https://github.com/RussellLuo/timingwheel/blob/master/delayqueue/delayqueue.go
set
log
use function
use function
encoder
from zap json_encoder.go change to encoder
from zap json_encoder.go change to encoder
internal/bufferpool
Package bufferpool houses zap's shared internal buffer pool.
Package bufferpool houses zap's shared internal buffer pool.
netpoll
Package netpoll provides a portable interface for network I/O event notification facility.
Package netpoll provides a portable interface for network I/O event notification facility.
pool

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL