repositorypackage
0.0.0-20241215174005-074040a7bc4d
Repository: https://github.com/bswaterb/gox.git
Documentation: pkg.go.dev
# Packages
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
# README
goX
Write some ADVANCED code implementations in Go ...... to deepen understanding and usage of Golang
Update-Timeline
1. LRU With Young-Old Region
代码于 goX/lrux
中
在 Innodb 中采用了区分 Young 和 Old(Non-Young) 区的 LRU 优化方案,本实践简单实现了双区域的划分。
2. Web Framework Based On net/http
代码于 goX/bttp
中
参考了 gin
的功能设计,以及 Gee 这篇文章提供的代码和思路演进。
TODO-LIST
- 支持路由注册、HandlerFunc 绑定
- 基础前缀树路由
- 支持动态路由
- 支持路由组
- 支持 Middleware 设计
3. HashMap Based On Consistent Hash
代码于 goX/cachex/consistent_hash
中
实现了基础的一致性哈希功能。
TODO-LIST
- 支持指定节点的虚拟节点数量
- 支持用户自定义哈希函数
- 支持 kv 过期
- 支持 下线节点/上线节点 时触发数据自动迁移
4. RPC Framework Designed Like net/rpc
代码于 goX/brpc
中
代码和架构风格参考 net/rpc
库源码与 GeeRPC,重写实现了若干增强方法。
当前实现存在 bug,未对代码进行完善,等日后填坑。。。
TODO-LIST
- 多应用层编解码协议协商
- 客户端/服务端支持并发、异步调用
- 加入客户端/服务端的超时控制机制
- 客户端自动 failover
- 对接注册发现中心
5. Hash Map
代码于 goX/bmap
中
TODO-LIST
- 并发检测
- 自动扩容
- hash-slot 仿 golang 原生的 bucket 实现
- 细粒度锁
- 泛型支持
6. HTTP Client
代码位于 goX/bhttpclient
中
TODO-LIST
- 以被调用服务为对象,同一个服务支持添加多个候选的 url
- 支持多 url 调用之间的负载均衡
- 支持多 url 时的固定指向型调用
- 支持自动剔除错误率过高的某个 url,并在后台进行健康探测
- 支持统计调用的成功次数与错误次数
- 支持 url 多方式调用(GET/POST/...)
- 支持 client 对象的异步调用方式