00:00
Hello,大家好,我是小云,今天给大家分享大钥匙。的引擎是如何处理客户端发来的RPC请求的,希望大家喜欢。Hello,大家好,我是小兵,今天给大家分享dells的引擎是如何收到客户端RPC请求并处理的,希望大家喜欢。首先我们打开文章链接。嗯,DES引擎是如何收到客户端IPC并处理的?呃,也就是说如何将携程的叉ULT,还有car的网络RPCH。结合R。呃,以及这些完成队列和这其中的各种回调结合起来,形成精密运转的这个机器来支持DES引擎接受客户端RPC的功能。
01:07
呃,如下所示。我们一般有两种,就是说一个是客户端。发给安的RPC。由安静这边来接收和处理。或者说是引擎与引擎之间的。请求和接受处理。呃。它的步骤是在这里,当引擎启动的时候,在初始化服务端。在的函数中,初始化所有的模块。嗯,接着初始化引擎的主服务也就是个SRV。在主服务中按T和ID启动,每个携程有XS和系统服务、主I务负载等多个X。呃,在携程中初始化调度器。并启动轮行处理。
02:02
第四个就是。执行携程任务。服务端的控制器,也就是总控。这个函数。第五步,在总控中注册RPC的公共回调,也就是DS rpc handler。第六步是在总控中启动一个大循环for循环轮询网络完成事件,也就是第2CUT的progress,每次轮询让出通过阿bos的亚的让出CPU。呃,第七步,引擎收到客户端请求。后通过触发了公共回调。然后在公共回调中。在公共回调中先对请求进行排队。以及。In入队,然后由携程调度器,我们上面初始化了一个携程的调度器,这里面会去。
03:00
就是处理所有的请求,然后再调到那个。呃,Cut的这个hand rpc第八步是出来RP请求对应的控制器函数。也是掉了这个CB函数,呃,最后执行的是又回调,比如说我们。提前做好的那个object。呃,更新的一个控制器。就对象更新的一个攻击。那我们再看具体的函数调用站。嗯。OK,我们打开这里面看一样的。我们把刚才的再细化一下。就服务器已经启动的时候是。嗯。掉的那个。函数。
04:02
在函中首先是去初始化。所谓的模块也是。比如说VS,还有其他的模块,我们可以去看一下。这里面的模块有很多,VSRDBSVC。而MGMT、滴滴叉、Paul等。He rebuild,我的初始化。还是按一定的顺序进行一个。拈的所有拈的初始化。然后执行完模块触发,然后调到那个主服务的初始化。我们看到这个主服务的初始化。也是在这个server的这个函数下面。
05:04
所以在这个主服务的初始化过程中。会。初始化形成词,然后。按那个。Targets,还有那个叉stream ID启动那个叉stream,呃,比如启动系统的服务,还有主IO的服务负载等多个叉stream,然后接下来我是服务端启动单个stream,然后。这里面就有那个创建的。呃,调度器。在这个里面。我们看到下面。我们看到调查清楚汉。调度器初始化后,就开始处理队列了,也就是progress。看到这里面的话,他会去开始处理。
06:01
待会再回到这里来讲。然后我们接着刚才的。那这个时候它会启动阿格伯特的那个。呃,携程。我去执行这个。这个函数。Theis is RV。在这个中间的话会去。首先创建一个的上下文,然后会去注册公共。的。回调也是为RPC任务注册两个公共回调,一个就是这个DS rpc handler,还有这个DS IV response handler。我们看到这个DS,这个是注册到这个CCRPCCB上,它的触发是由。被cut progress。然后由那个公共的。呃。
07:00
而PC handler come处罚执行。这个下面我们看到它这个地方在这里。这个是一个服务端,支持客户端API,我们先不管,这里面有一个大的循环。在这个中去执行。The progress。他的progress我们之前也有讲到过。它实际上流程也很长。I progress。所以他会。调那个。If progress。最终会去走那个出发回调。我回掉死在哪里?对,我看到这里有一个h trigger。全到了之后,走了CB就走到那个公共轨调,也就是。
08:04
二逼三字可吗这函数?那我们找到刚才那个函数。这里面就是说到了之后执行这个公共回调,公共回调里面去。往下走会去获取啊什么之类的PC的操作码的查找。这一判断是不是计划二必C?最终走到那个CCRPCB,也就是我们刚才注册的。看着。IP控制器。也就是对于这个。你是?我们厂里看到的。
09:02
也是这个回调,所以我们调到这个函数里面去。这个函数里面大概漏一眼,他的话是先将调,也是收到客户端的请求,IP请求,先将那个先判断是否满足请求入对。然后。这猪现成菜。入比如说vivos啊下载。这第一个点的,我看下还有没有比较详细一点。还能入对的话,就是把它给插到这个链表的尾端。参考这个就可以了。它会获取先获取模块的ID偏移,还有源码。然后。对。去获取属性这里。然后这边是在做一个RPC请求的入队引进这边然后。当请求入队之后,通过另外一端,也就是我们刚才说的progress。
10:05
All。他会从这个。从这个里面去拿出来执行。又是这边的请求入队了之后。
11:00
这个地方有。这里是在编里面,刚才是对的那个。的,在在这个函数里面去执行的。我们看这这边他会去处理这个请求。处理请求的话,就调到那个回调。也是之前注册好的这个回调。又拿出来进去是那个。通过回调。这一步已经执行完了。自习完了之后。再往下就会触发那个。
12:01
CI的RPCB。执行那个引擎这边的一个回调。小对象更新。关于这个国家的话,是在哪里注册的。就是在这个。Heart cons create的时候去注册。刚才我们说的那个。看一下。
13:09
对。这里不空了。味。当然上面也有个in和out的跟我回答。这个回家。OK,所以我们简单的总结一下,就是上面这八个步骤,对。已经启动,然后到处理RPC对应的控制器函数。Object after updated handle。OK,今天的。DELL引擎是如何受到客户端的RPC处理的?技术分享就到此结束。
14:00
希望大家喜欢。好,再见,拜拜。
我来说两句