20200209

@ShiKaiWi

Plan

  1. 45min: UNP
  2. 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 常用的方法