pika使用的是多线程模型,使用多个工作线程来进行读写操作,由底层blackwidow引擎来保证线程安全,线程分为11种:

    • PikaServer:主线程
    • DispatchThread:监听端口1个端口,接收用户连接请求
    • WorkerThread:存在多个(用户配置),每个线程里有若干个用户客户端的连接,负责接收处理用户命令并返回结果,每个线程执行写命令后,追加到binlog中
    • Trysync:尝试与master建立首次连接,并在以后出现故障后发起重连
    • BinlogSender:存在多个(动态创建销毁,本master节点挂多少个slave节点就有多少个),每个线程根据slave节点发来的同步偏移量,从binlog指定的偏移开始实时同步命令给slave节点
    • BinlogReceiver:存在1个(动态创建销毁,一个slave节点同时只能有一个master),将用户指定或当前的偏移量发送给master节点并开始接收执行master实时发来的同步命令,在本地使用和master完全一致的偏移量来追加binlog
    • SlavePing:slave用来向master发送心跳进行存活检测
    • bgsave:后台dump线程
    • HeartBeat:master用来接收所有slave发送来的心跳并回复进行存活检测
    • scan:后台扫描keyspace线程
    • purge:后台删除binlog线程
    • Monitor: 实时打印出Pika服务器接收到的命令
    • Pub/Sub: 用来支持Pika的订阅功能

    原文: https://github.com/Qihoo360/pika/wiki/pika-%E7%BA%BF%E7%A8%8B%E6%A8%A1%E5%9E%8B