Zero Copy
Zero Copy Linux IO方式 轮询 IO中断 DMA方式 传统IO使用read()和write()系统调用 后续以上传文件为例, 从用户态使用read从磁盘读取数据, 使用write将数据写入网卡 IO中断 read 从磁盘读取数据时CPU阻塞 DMA方式 2次DMA copy + 2次CP...
Zero Copy Linux IO方式 轮询 IO中断 DMA方式 传统IO使用read()和write()系统调用 后续以上传文件为例, 从用户态使用read从磁盘读取数据, 使用write将数据写入网卡 IO中断 read 从磁盘读取数据时CPU阻塞 DMA方式 2次DMA copy + 2次CP...
Kafka 消费模式 点对点 发布订阅 架构 Producer Consumer Consumer Group Broker 一个kafka节点就是一个Broker, 一个Cluster由多个Broker组成 Topic Partition 一个Topic可...
Raft Raft is a consensus algorithm etcd中的一致性算法使用了raft 算法流程 leader selection 一个节点处于下列三种状态之一 leader client与leader进行交互, 并且同一时间只能有一个leader ca...
ETCD 高可用分布式kv数据库, 常用于服务发现 使用raft算法保持一致性, go语言实现 CAP理论中实现了CP CAP理论: CAP是不可能三角 对于一个分布式系统来说, P必须实现 C 数据一致性 A 可用性 P 分区容忍性 etcd架构 Store ...
RPC Framework Project 项目地址 github Introduction what`s rpc 远程过程调用, 可以基于HTTP、TCP等 与之相比较的是RESTful api(基于HTTP), 如今二者的区别越来越小 rpc更灵活, 性能更好, 更高效; RESTful api可读性更好, 兼容性更好 ...
Web Framework Project 项目地址 github Introduction 参考gin框架 体现了框架设计的核心原则 Reason net/http提供了基础的web功能, 但是还缺少了许多简单的功能 Function 上下文Context 动态路由 前缀树 Trie Tree 分组控制 ...
Go Programing Skills 接口型函数 example // net/http 标准库 type Handler interface { ServeHTTP(ResponseWriter, *Request) } type HandlerFunc func(ResponseWriter, *Request) func (f HandlerFunc) ServeHTTP(w...
Distrubuted Cache Project 项目地址 github Introduction 模仿groupcache, go语言版的memcached 缓存大量存在于计算机系统中 Redis CDN 设计分布式缓存需要考虑 资源控制, 淘汰策略, 并发, 分布式节点通信等问题 Reason 内存kv缓存的...
Go JWT token 生成token import "github.com/golang-jwt/jwt/v5" func GenerateJWT(username string) (string, error) { token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{ "username": user...
Go password encryption 密码加密 import "golang.org/x/crypto/bcrypt" func HashPassword(pwd string) (string, error) { hash, err := bcrypt.GenerateFromPassword([]byte(pwd), 12) return string(hash), err...