github.com/weedge/lib@v0.0.0-20230424045628-a36dcc1d90e4/readme.md (about)

     1  ### 介绍
     2  累积平时常用的golang开发组件库
     3  
     4  ### 组件列表
     5  
     6  - [x] [poller](https://github.com/weedge/lib/tree/main/poller):  网络event poll库,支持tcp协议
     7  
     8  - [x] [asyncbuffer](https://github.com/weedge/lib/tree/main/asyncbuffer): 累积数据至buffer中,异步批量处理
     9  
    10  - [x] [concurrent_map](https://github.com/weedge/lib/tree/main/container/concurrent_map):  分片并发map
    11  
    12  - [x] [queue](https://github.com/weedge/lib/tree/main/container/queue): 优先队列,延迟队列
    13  
    14  - [x] [sort_map](https://github.com/weedge/lib/tree/main/container/sort_map):支持对无序map中的kv 升降排序(转换成slice来处理)
    15  
    16  - [x] [timingwheel](https://github.com/weedge/lib/tree/main/timingwheel): 层级时间轮
    17  
    18  - [x] [buffer pool](https://github.com/weedge/lib/tree/main/pool/bufferpool): 临时对象池, 复用对象,减少gc, 优化逻辑, 
    19  
    20  - [x] [worker pool](https://github.com/weedge/lib/tree/main/pool/workerpool): 并发处理的工作任务池,支持超时任务,自动扩缩worker goroutine, 批量不同任务异步处理
    21  
    22  - [x] [asynctask](https://github.com/weedge/lib/tree/main/pool/asynctask) : 异步执行单一相同任务,回调错误处理
    23  
    24  - [x] [runtimer](https://github.com/weedge/lib/tree/main/runtimer): 对goroutine运行异常的封装,以及获取goroutine运行时调用的堆栈信息
    25  
    26  - [x] [chain](https://github.com/weedge/lib/tree/main/chain): 任务链式执行管理
    27  
    28  - [ ] [balance](https://github.com/weedge/lib/tree/main/balance): 负载均衡算法,一致性hash, rr, wrr 等
    29  
    30  - [ ] cache: 本地缓存[patrickmn/go-cache](https://github.com/patrickmn/go-cache), [coocood/freecache](https://github.com/coocood/freecache),[hashicorp/golang-lru](https://github.com/hashicorp/golang-lru) ,[allegro/bigcache](https://github.com/allegro/bigcache),[go local cache algorithms benchmark](https://github.com/vmihailenco/go-cache-benchmark)
    31  
    32  - [ ] net: 网络工具库
    33  
    34  - [ ] client: 调用基础组件服务的封装,mq( rocketMQ 高可用分区,生产分布式事务消息[rocketmq-client-go](https://github.com/apache/rocketmq-client-go), pulsar 支持流式/共享消费,计算存储分离,高可用分片存放rocksdb, 负载更均衡,易扩展,方便上云管理, [pulsar-client-go](https://github.com/apache/pulsar-client-go)  topic/生产/消费),  cache(redis([go-redis](https://github.com/go-redis/redis) pipeline支持更好)操作, ledisdb(goleveldb,leveldb,rocksdb,lmdb,boltdb),pika(rocksdb),~~tidis(go+rust+c++)~~),  db(mysql/tidb [go-sql-driver/mysql](https://github.com/go-sql-driver/mysql) [go-gorm/gorm](https://github.com/go-gorm/gorm)可以通过[gen](https://github.com/smallnest/gen)一次生成RESTful CURD接口, mongo [mongo-go-driver](https://github.com/mongodb/mongo-go-driver), es shard分片存放,节点路由,易扩展 [go-elasticsearch](https://github.com/elastic/go-elasticsearch)), 连接池等
    35  
    36  - [x] [client-mq-kafka](https://github.com/weedge/lib/tree/main/client/mq/kafka): kafka 高可用分区存放, 后续会去掉zk管理元数据依赖(通过kraft Metadata clusters mode管理元数据), 三方库 [Shopify/sarama](https://github.com/Shopify/sarama) (sarama [issue#901](https://github.com/Shopify/sarama/issues/901)支持事务操作的讨论, v1.19.0优化了group consumer [pr#1099](https://github.com/Shopify/sarama/pull/1099), 在一些场景支持的不够好, [不推荐场景](https://help.aliyun.com/document_detail/266782.html)) [confluent-kafka-go](https://github.com/confluentinc/confluent-kafka-go) (支持事务操作)
    37  
    38  - [x] [client-etcd](https://github.com/weedge/lib/tree/main/client/etcd): 使用etcd提供分布式锁,服务发现,服务元数据配置等
    39  
    40  - [ ] [client-redis](https://github.com/weedge/lib/tree/main/client/redis):使用redis协议支持的命令提供分布式锁,缓存,限流等功能
    41  
    42  - [ ] zerocopy: 利用底层系统的零拷贝技术,mmap: [edsrzf/mmap-go](https://github.com/edsrzf/mmap-go) sendfile, splice,三方库封装使用
    43  
    44  - [ ] [limiter](https://github.com/weedge/lib/tree/main/limiter): 服务提供方限流算法,防止服务过载策略,单机 固定/滑动时间窗口限流算法,漏桶([uber-go/ratelimit]( https://github.com/uber-go/ratelimit) )/( [juju/ratelimit](https://github.com/juju/ratelimit) )令牌桶算法,分布式限流算法(redis 计数/添加token,通常在流量入口网关层处理,nginx+lua, golang) 对三方开源服务在业务的基础上进行封装;
    45  
    46  - [ ] [breaker](https://github.com/weedge/lib/tree/main/breaker): 服务消费方调用服务熔断机制,开源实现:[afex/hystrix-go](http://github.com/afex/hystrix-go)  [sony/gobreaker](http://github.com/sony/gobreaker)  对三方开源服务在业务的基础上进行封装;
    47  
    48  - [x] [log](https://github.com/weedge/lib/tree/main/log): 日志库, 基于uber [zap](https://github.com/uber-go/zap) 库,日志按时间切割[lestrrat-go/file-rotatelogs](github.com/lestrrat-go/file-rotatelogs);满足基础日志,访问日志,请求三方日志,panic日志,启动日志,
    49  
    50  - [ ] metric: 监控统计方法,比如计算MAU,DAU,精度要求不高可以使用redis HyperLogLog (只需要12K内存,在标准误差0.81%的前提下,能够统计2^64个数据!HyperLogLog是一种基数估计算法), Coda Hale metrics go lib [rcrowley/go-metrics](https://github.com/rcrowley/go-metrics) (Gauges, Counters, Meters, Histograms, Timers 等等); agent [opentelemetry-go](https://github.com/open-telemetry/opentelemetry-go) ->  prometheus 
    51  
    52  - [ ] trace: 服务链路跟踪,agent [opentelemetry-go](https://github.com/open-telemetry/opentelemetry-go) -> [jaeger](https://github.com/jaegertracing/jaeger)  主要用来学习借鉴开源的服务框架思路
    53  
    54  - [ ] consensus: 分布式一致性协议算法,[raft](https://raft.github.io/)  开源方案 [hashicorp/raft](https://github.com/hashicorp/raft)  主要用来学习借鉴开源的服务框架思路
    55  
    56  - [ ] xdb: 单数据存储实例,B+tree [etcd-io/bbolt](https://github.com/etcd-io/bbolt)  LMS-tree  [syndtr/goleveldb](https://github.com/syndtr/goleveldb) 主要用来学习借鉴开源的服务框架思路
    57  
    58  - [ ] rpc:三方rpc协议框架封装, [grpc-go](https://github.com/grpc/grpc-go), [thrift](https://github.com/apache/thrift), [rpcx](https://github.com/smallnest/rpcx),  [dubbo-go](https://github.com/apache/dubbo-go) 主要用来深入学习框架思路
    59  
    60    
    61