分布式系统sheepdog之sheep启动流程

1、sheep启动

启动过程中会有一些初始化的工作,对于基本目录的初始化,对于obj、epoch、journal路径的初始化,以及对于集群和工作队列的初始化。下图可以看到sheep基本的启动流程



2、创建监听窗口

通过socket创建来自客户端的请求,注册对应的listen_handler和client_handler事件,对请求进行相应的处理。相关处理函数的函数指针赋值给fn和done,如下图右下rx_work和rx_main即可知。



3、工作队列初始化

在线程函数worker_routine中将对应请求操作的处理函数work->fn(work)根据不同队列不同请求执行对应处理函数,执行完后加入完成队列,再根据不同队列不同请求执行对应处理函数done()


4、事件触发机制

event_loop函数根据事件触发机制,等待新事件的到来,触发epoll_wait,之后相应的句柄函数进行相应处理。


1、listen_handler 侦听到客户端有连接请求时,会将该连接 fd 注册到主线程 efd 中,该 fd 与 client_handler 绑定,当客户端向该 fd 发送请求时,主线程会及时检测到并且调用 client_handler 对请求进行处理
2、local_req_handler包括对gateway、cluster、io的相关处理
3、sigfd = signalfd(-1, &mask, SFD_NONBLOCK);
4、sys->local_req_efd = eventfd(0, EFD_NONBLOCK);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值