Percolator 协议
Percolator.note
Percolator 框架
percolator 协议的参与对象包括:client 端的 percolator library,server 端的 percolator cluster、bigtable cluster 和 GFS cluster,timestamp oracle cluster,以及 chubby cluster。
- percolator library:sql 集群中的 node 在接收并解析 user 的请求后,会调用该 library,发起一个 txn,与 server 集群中的 percolator worker 进行交互,执行 Get 或 2PC。
- percolator worker:2PC 中的 participants,负责 handle 与 txn 相关的 RPC。同时与下层的 bigtable cluster 进行交互。
- bigtable cluster:bigtable presents 一个 big table,由 row 和 col 共同 index。并且提供 row txn,即保证修改 table 中单个 row 的 atomicity。还提供 sorting 功能,即可以对 key 进行排序。同时负责与下层的 GFS cluster 进行交互。
- GFS cluster:提供文件系统的功能,其中包括持久化的功能。
- timestamp oracle cluster:提供授时服务,保证每次分发的 timestamp 都是严格单调递增的。
- chubby cluster:提供 token 注册与查询服务。

percolator 中的一个 kv pair 对应 bigtable 的一个 row。每个 row 包含三个 column:data,lock 和 write:
- data:kv 中的 value。
- lock:per-key lock。lock 中保存了 primary lock 的信息、ttl(time to live) 等信息。
- write:write record。
一个典型的写请求处理流程
- user 向 db 集群发送一个写请求,涉及到多个 key 的 write。
- db 集群中的 sql 集群接收到写请求,将该写请求分发给 sql 集群中的某个 node。