在HRegionServer中两个量和replication相关,如下所示:
//Replication services. if no replication, this handler will be null
protected ReplicationSourceService replicationSourceHandler;
protected ReplicationSinkService replicationSinkHandler;
在ReplicationSourceService中只有一个方法getWALActionsListener,该方法返回WALActionsListener。ReplicationSinkService同样也是一个接口类,它有一个方法replicateLogEntries。在HRegionServer的如下代码段中会启动replicationservice。
if(this.replicationSourceHandler == this.replicationSinkHandler && this.replicationSourceHandler != null) {
this.replicationSourceHandler.startReplicationService();
}else {
if(this.replicationSourceHandler != null) {
this.replicationSourceHandler.startReplicationService();
}
if(this.replicationSinkHandler != null) {
this.replicationSinkHandler.startReplicationService();
}
}
startReplicationService中做了三件事,分别是调用ReplicationSourceManager的init方法,初始化replicationSink,初始化调度线程池scheduleThreadPool;
startReplicationService方法中调用了ReplicationSourceManager的init方法,init中遍历replicationPeers中的peerid,并以该id为参数,调用addSource方法,在addSource中针对每一个peerid构造了一个对象ReplicationSource,Repli