前言:
作为一个程序员来说,我们日常的研发过程中或多或少都会听说过或者接触过RPC框架,特别是在微服务盛行的今天,涌现出了一批优秀的RPC框架,比如阿里巴巴的dubbo、thrift还有就是我们常用的restful风格的RPC调用,如果没有这些优秀的RPC框架,跨jvm调用接口的时候估计我们需要费不小的力气,如果搞懂了RPC框架,自己能造一个轮子出来估计就非常牛逼了,接下来,我们探讨一下,一个RPC框架需要面临着解决哪些问题。
一、RPC调用过程
如果想在本机调用另外一台机器的接口,就像是在本地调用一样,这个过程需要解决哪些问题呢?首先,需要在机器A上想着如何把参数传递到机器B上,这个时候就需要涉及到序列化的算法,同时还要解决数据传输的过程中,为了节省带宽资源而使用的压缩算法。其次就是要考虑采用的通信协议,动态代理,服务注册,数据加密,网络编程,连接管理,健康监测,负载均衡,如何优雅的宕机,异常重试,业务分组以及熔断还有限流等方方面面的知识,如果我们把这些都能搞定,估计能力是相当的强悍。本人在研发的过程中用的最多的RPC框架就是dubbo框架,接下来,我们以dubbo框架为例,看下,如果要实现一个远程的RPC通信框架,面对上面的那些问题,dubbo都是如何解决的。