![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
rpc原理
文章平均质量分 66
darkness0604
这个作者很懒,什么都没留下…
展开
-
IO那些事15-RPC调用的组合方式
RPC RPC,远程服务调用,只是一种调用行为的名称,而进行连接的双方使用的协议是不受限定的,可以是自定义的某种协议(自定义消息头和消息体,自行对传输消息的格式进行约定),也可以是比较公知的例如http协议(但其本质,应该说HTTP协议也是一种比较公认的自定义协议),但这无非就是调用协议层面的事情,整体来说,都是一种RPC的表现,所谓的通信有无状态,完全是看协议的实现是如何约定的。 HTTP协议 消费端,可以使用第三方HTTP类库,也可以使用netty支持的http协议客户端形式进行调用。 服务端,既可以原创 2021-04-21 15:38:42 · 151 阅读 · 0 评论 -
IO那些事14-RPC优化点
RPC的层次感 作为RPC调用来说,更多的还需要考虑用户体验度,对于用户来说,就是面向接口调用。 然而实际上一个RPC的端点,可能既需要作为consumer去调用远程的provider的服务,而自身也作为一个provider提供着一些服务,作为这个端点来说,它对外提供的服务,对它自身肯定是一些本地的方法调用。 所以我们在设计RPC通信时,调用的时候,不单单需要考虑只有远程调用,而应该首先去判断一下这个服务的实现方法在本地有没有,如果有的话,没必要再走RPC最终再调到自己身上来。 public stati原创 2021-04-21 15:36:32 · 240 阅读 · 0 评论 -
IO那些事13-IO的思考
多个ServerBootstrap可以实现一套计算资源,不同的处理逻辑 IO密集型和计算密集型 IO密集型就是和kernel打交道很多,会有比较多的系统调用。 计算密集型则相反,更多的是在单纯用CPU做计算,而不怎么与内核打交道。 正常来说,网卡到程序的过程中一定伴随着中断操作的干预,而当网卡数据来临非常频繁时,底层会进行优化,内核会关闭中断,然后直接让CPU疯狂从网卡的buffer中取出数据到内核的buffer中,且这个过程是底层系统硬件实现的。 但即使是这样,如果我们程序不尽快取走内核buffer中的数原创 2021-04-21 15:33:52 · 107 阅读 · 2 评论 -
IO那些事12-手写实现RPC
RPC调用整体图 作为一段RPC调用模型来说,一般是分为consumer端和provider端,consumer端只需要面向接口编程,consumer端直接拿着接口, 然后直接调用其方法。 而其内部,实质是通过socket通信(可以是netty也可以是其他),然后去请求provider端的具体接口实现类对应的方法。 对于consumer端来说,可能多个不同的请求都是复用着一个channel连接,那这时候因此需要consumer端发起请求的时候需要带上各自的请求id,方便响应回来的时候,能够匹配是谁发出的请原创 2021-03-11 15:45:49 · 397 阅读 · 0 评论