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 对象的异步调用方式