- 博客(5)
- 收藏
- 关注
原创 Mac/Linux 下使用 vscode 调试 redis 源码(超方便)
主要介绍如何使用 VSCode 与 GDB/LLDB 调试 Redis 源代码的方法,可以作为配置 redis 调试环境的参考。
2023-08-15 10:39:24 293 1
原创 从 net 标准库源码探索 go 网络编程高效的秘密
go 对网络编程有着高度封装,利用了 epoll 和 goroutine 结合的方式,使其有这非常不俗的性能,go 的 http 和 rpc 标准库也都依赖这一套网络编程模型,可能这也是 go 比较适合网络编程方面的原因之一。
2023-06-16 11:41:16 205 1
原创 举一反三!解读 etcd watch 源码实现
客户端发送 Watch 请求,与服务端建立 gRPC 双向流。客户端阻塞等待 Watch 的响应结果。服务端收到请求后开启一个 recv loop 和一个 send loop,分别用来读取客户端请求和发送相应。服务端创建 watcher 并加入到 mvcc 存储的 watchers 集合中管理。其它操作(如 Put)完成后将 key 上发生事件通知到对应的watcher。服务端的 send loop 将响应结果发送给客户端。客户端对结果进行业务逻辑处理。
2023-04-30 15:05:52 463 1
原创 从源码实现了解 etcd 事务
以一个最简单的示例了解事务的源码实现,在客户端的处理中,会将用户不同分支的输入生成为对应分支的的操作类型,然后跟其它请求一样,向服务端发送一个 gRPC 请求,同样的,服务端收到请求后会发送 raft 请求给到其它节点,最后调用 mvcc 存储来处理事务。
2023-04-22 03:41:34 242 1
原创 学习 etcd 存储的第一步,从 Put 操作源码说起
在这篇文章中,讲述了一个最简单的 Put 请求最基本的处理流程,这个流程同时也是 etcd 其它操作的基础。在 etcdctl 的处理中,会把用户的命令转成客户端的方法,随后客户端向 etcd 服务端发送一个 gRPC 请求。服务端实现了对应的 gRPC 服务提供给客户端,服务的启动包含了 raft 节点通信和客户端通信的 http 服务,服务本身即为一个 raft 节点,启动时等待其它节点发来的同步消息。将键值对以 log entry 的形式发送给 raft 集群中其它节点(包括自身),等待节点处理。
2023-04-21 23:21:21 351 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人