实现一个LRU算法,代码约100行
介绍 sync.Mutex 互斥锁的使用,并实现 LRU 缓存的并发控制。
实现 GeeCache 核心数据结构 Group,缓存不存在时,调用回调函数获取源数据,代码约150行
介绍如何使用 Go 语言标准库 http 搭建 HTTP Server
并实现 main 函数启动 HTTP Server 测试 API,代码约60行
实现一致性哈希代码,添加相应的测试用例,代码约60行
注册节点(Register Peers),借助一致性哈希算法选择节点。
实现 HTTP 客户端,与远程节点的服务端通信,代码约90行
启动客户端
go run server/main.go
启动3个模拟服务端
go run main.go -server=true -port=8089
go run main.go -server=true -port=8090
go run main.go -server=true -port=8091
通过url访问
http://0.0.0.0:8088/cache/student/Jack
通过查看日志可以发现相同的group和key,总是路由到同一个server
使用 singleflight 防止缓存击穿,实现与测试。代码约70行
使用 protobuf 进行节点间通信,编码报文,提高效率。代码约50行