- 博客(21)
- 收藏
- 关注
原创 Brpc代码分析-Server端(十)
2021SC@SDUSC这里的req就是在Connect中创建的那个EpollOutRequest req,然后执行HandleEpollOutRequest,在EventDispatcher中去掉连接fd的epollout事件,然后执行on_epollout_event,在Connect函数中将on_epollout_event设置为了KeepWriteIfConnected,该函数实际调用如下函数。首先调用CheckConnected检查连接是否出错,然后调用ResetFileDescript.
2021-12-05 20:14:37 563
原创 Brpc代码分析-Server端(九)
2021SC@SDUSC回到CallMethod函数。接下来将设置各种成员,如超时时间,response等,因为demo中场景没有设置loadbalancer,所以是SingleServer通过_serialize_request,这里会把request序列化到controller的request_buf,原因是为了重试,一个RPC过程中只会调用一次。然后启动定时任务处理超时。接下来就是真正的连接和发送了然后看下controller的IssueRPC。首先通...
2021-11-28 14:18:25 3754
原创 Brpc代码分析 Server代码详解七
2021SC@SDUSC因为brpc使用的是epoll的边缘触发,所以将fd设置为非阻塞,然后设置socket的send,recv buffer大小,然后将当前fd加入到event_dispatcher在GetGlobalEventDispatcher中,会只进行一次初始化dispatcher的工作,会创建FLAGS_event_dispatcher_num个dispatcher,默认为1,构造函数中会创建epoll fd,然后调用Start在Start中会启动一个bthread,..
2021-11-14 19:49:45 1350
原创 Brpc代码分析 Server代码详解五
2021SC@SDUSC此服务器的TCP端口在第0 2 4 6次进行睡眠,并且在客户端出发进行备份的请求对响应进行填充设置响应顺序 如果request->depth() > 0则按照其本身的depth顺序进行响应如果...
2021-10-31 19:45:36 123
原创 Brpc代码分析————Server类详解(三)
2021SC@SDUSC这里的代码可以让我们在需要的时候在RALL中调用done->Run()函数,也就是确保对象在return时调用done->Run()。并且在异步请求处理的时候传输done_guard.relrese().此处为输出日志以方便了解客户端以服务器之间的交互。填充响应设置控制器来压缩响应,但在这里需要注意,压缩响应可能有高额的代价,所以在启用之前应该进行测试。这里面需要将设置之间链接到网络的附件,而不是正在序列化的protobuf消...
2021-10-14 20:31:24 538
原创 Brpc代码分析(二)
2021SC@SDUSC百度内最常使用的工业级RPC框架,有1000000+个实例,“brpc”的含义是“better RPC”我们可以使用他:搭建一个能在一个端口支持多协议的服,或者访问各种服务Server能同步或异步处理请求。Client支持同步.异步.版同步.或使用组合channels简化复杂的分库或者并发访问。通过http界面调试服务,使用cpu,heap,contention profilers。获得更好地延时和吞吐。把个人组织中使用的协议快速地加入brpc,或制动
2021-10-09 23:37:48 796
原创 BRPC源码分析综述(一)
一.项目简介:brpc又称为baidu-rpc,是百度开发一款“远程过程调用”网络框架。目前该项目已在github上开源——https://github.com/brpc/brpc。 据目前公开的资料,我们发现百度内部从2010年开始,开发过若干rpc框架:ub系列rpc(ubrpc,nova_pbrpc、public_pbrpc),hulu-pbrpc、sofa-pbrpc和本文介绍的baidu-rpc。从命名来看,我们并不太清楚ub、hulu和sofa是啥,但是可以确认的是我们...
2021-09-30 15:32:53 610
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人