BanyanDB Binlog Protocol
2018-06-24 13:23:19 0 举报
登录查看完整内容
Banyandb Binlog Sync protocol
作者其他创作
大纲/内容
Master::sr_::seq == 0 orMaster::sr_seq this.min_seq
'ok'
Author: Fatiao
storage::ReplayDB()
Client::READ_CLOSE if master close connection
binlog *10 at a time
Service::accept_loop
BANYAN_CMD_reset
Master::pack_request(\"async\
Slave::_client-ReadRequest()
BANYAN_CMD_copy1
Slave::_max_seq == from leveldb
set_fd_as_sync
get_scan_record 1024 pairs kv per batch
Slave::send_sync_response()
Master::_client-WriteRequest()
no 'slice_id' here
Master::process_sync_request()
if == BanyanProtocol::REQUEST_SYNC
Master::async()
binlogworker::StartMaster()
sync_phase == PHASE_ASYNC(增量同步)
Slave
Slave::copy()
Slave::pack_request()
....
binlog data to leveldb(meta):
new thread Slave::workloop
pack_copy_request
Slave::_sync_status == SYNC_COPY1
Slave::_client::ReadResponse()if == 'ok' (BANYAN_RESPONSE_OK)
Master::_client::WriteRequest()
task.client == new ChunkClient(fd)
10 items of binlog record each communication
Master::pack_binlog_request()
Slave::connect()
Master
Master::sr_::seq this.min_seq
storage::ReplayBinlog()
Slave::_client == serialized sync data package
Master::copy()
BANYAN_CMD_async
ChunkClient::StartSync()
task.client::ReadRequest()
exit
sync_phase == PHASE_COPY(全量同步)
M/S Communication model Key Points:a. slave start the communication processb. Full synchronization: key & valuec. Incremental synchronization: seqnum & rep_
Master::_client::ReadResponse() if == 'ok'(BANYAN_RESPONSE_OK)
Slave::_maxseq == maxseq(from request data package)
Worker::process_client_read_event
Slave::_client::ReadRequest()
Banyan Binlog Protocolmaster - slave communication
Worker::work_loop
fd
BANYAN_CMD_sync
new thread Master::workloop
Master::get_binlog_record()
Slave::_sync_status == SYNC_ASYNC
ZKWorker::process_zk_slice_add_slave
Master::_client-WriteResponse()
Slave::_client::WriteRequest()
Slave::proc_sync_request()
0 条评论
回复 删除
下一页