20200209
Plan
- 45min: UNP
- 30min: RocksDB Write Procedure
Notes
UNP
TCP features:
- 可靠性(reliability): 发送端的数据发送成功需要得到接收端的确认,否则会将错误抛给调用者。
- 有序(sequencing): 数据报(segment)使用 sequence number 标记顺序。
- 流量控制(flow control): 接收方的通告窗口(advertised window)指明当前缓冲区的可用量,不够时(可以为0),无法从发送端接收数据。
- 全双工(full-duplex): 任何一端可以既是发送端,也是接收端。
区别与 UDP:
- TCP 为字节流(byte-stream)协议,UDP 的数据报内容和大小会一起发送出去。
- UDP 为 connectionless 的。
SCTP 不出名的原因:
- 无法很好地处理好 NAT 的问题。
- 没有广泛地集成在 TCP/IP stacks 里面。
- 其实被广泛使用在通信领域,比如每天的发送短信。
RocksDB
主要看了 db/write_thread.h 中的关于 WriterThread 的状态:
- STATE_INIT
- STATE_GROUP_LEADER
- STATE_MEMTABLE_WRITER_LEADER
- STATE_PARALLEL_MEMTABLE_WRITER
- STATE_COMPLETED
- STATE_LOCKED_WAITING
NOTES:
- 处于 STATE_MEMTABLE_WRITER_LEADER 状态的,可以进行 write memtable 或者
launch a parallel group write to memtable by calling LaunchParallelMemTableWrite,也就会使自己和其他 follower 进入 STATE_PARALLEL_MEMTABLE_WRITER 状态。 - 关于 STATE_GROUP_LEADER 状态的使用还不清楚。
More
- tcpdump 常用的方法