pika使用的是多線程模型,使用多個(gè)工作線程來(lái)進(jìn)行讀寫操作,由底層nemo引擎來(lái)保證線程安全,線程分為11種:
- PikaServer:主線程
- DispatchThread:監(jiān)聽(tīng)端口1個(gè)端口,接收用戶連接請(qǐng)求
- ClientWorker:存在多個(gè)(用戶配置),每個(gè)線程里有若干個(gè)用戶客戶端的連接,負(fù)責(zé)接收處理用戶命令并返回結(jié)果,每個(gè)線程執(zhí)行寫命令后,追加到binlog中
- Trysync:嘗試與master建立首次連接,并在以后出現(xiàn)故障后發(fā)起重連
- ReplicaSender:存在多個(gè)(動(dòng)態(tài)創(chuàng)建銷毀,本master節(jié)點(diǎn)掛多少個(gè)slave節(jié)點(diǎn)就有多少個(gè)),每個(gè)線程根據(jù)slave節(jié)點(diǎn)發(fā)來(lái)的同步偏移量,從binlog指定的偏移開(kāi)始實(shí)時(shí)同步命令給slave節(jié)點(diǎn)
- ReplicaReceiver:存在1個(gè)(動(dòng)態(tài)創(chuàng)建銷毀,一個(gè)slave節(jié)點(diǎn)同時(shí)只能有一個(gè)master),將用戶指定或當(dāng)前的偏移量發(fā)送給master節(jié)點(diǎn)并開(kāi)始接收?qǐng)?zhí)行master實(shí)時(shí)發(fā)來(lái)的同步命令,在本地使用和master完全一致的偏移量來(lái)追加binlog
- SlavePing:slave用來(lái)向master發(fā)送心跳進(jìn)行存活檢測(cè)
- bgsave:后臺(tái)dump線程
- HeartBeat:master用來(lái)接收所有slave發(fā)送來(lái)的心跳并回復(fù)進(jìn)行存活檢測(cè)
- scan:后臺(tái)掃描keyspace線程
- purge:后臺(tái)刪除binlog線程

更多建議: