还没不清楚RPC是啥?
Posted IRONIC Bo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了还没不清楚RPC是啥?相关的知识,希望对你有一定的参考价值。
在编写业务代码多了之后,可以渐渐地感觉到写的东西越来越臃肿,什么登录,查询都放在一个应用里面跑,不能极大地发挥服务器的性能。现在比较流行的微服务就部分解决了这种问题,比如把各个服务模块拆分,然后根据模块需要的性能分配硬件资源,提高利用效率。
当然,把模块拆分之后不能独立地运行,不然就没啥意义了。不同服务之间可以相互调用。这个调用的时候就可以用咱们最经典的调用接口。但是这个存在一个弊端,就是不能动态的获取这些接口的信息,并且这种效率也有点低,这个时候就可以用用RPC这种思想。
啥是RPC
RPC(Remote Procedure Call)远程过程调用,简单的理解是一个进程调用另一个进程提供的服务
这个和本地调用的有啥区别?
在本地调用的时候,一般是通过指针调用函数,然后函数返回结果给调用者。
在远程调用的时候,由于两个进程不在一起,没办法直接调用函数,这时候调用者就要先找到想要调用的函数,可以是id,然后通过序列化出来的字节流传给另一个进程,最后这个进程解析字节流,完成调用返回结果。
RPC有哪些关键的问题?
通信问题
两个进程进行交互,一般的思想就是TCP连接或者用更上层的HTTP协议,当然都是可行的。
查找问题
在调用另一个进程的时候,需要知道如何连接以及连接到哪个最后到调用哪个方法。这个时候可以实现一个注册中心,把服务的提供者的信息都存起来,后期调用的时候直接在里面查找。
数据传输问题
在发送数据的时候,不能直接发对象啥的,一般就需要实现序列化的机制,把所需要传递的信息转换成字节流。
有哪些现成的RPC框架?
RPC这种思想也不算是一个新的东西,市面上有很多优秀的框架,阿里巴巴的 Dubbo、Facebook 的 Thrift、Google 的 gRPC、Twitter 的 Finagle 等。
然后咋实现呢?
最基本的需要实现网络传输、序列化、Java的话还要动态代理,具体的内容下次一定。
以上是关于还没不清楚RPC是啥?的主要内容,如果未能解决你的问题,请参考以下文章