为什么要使用RPC框架
RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。比如两个不同的服务 A、B 部署在两台不同的机器上,那么服务 A 如果想要调用服务 B 中的某个方法该怎么办呢?使用 HTTP请求 当然可以,但是可能会比较慢而且一些优化做的并不好。 RPC 的出现就是为了解决这个问题。
- RPC网络模型对于是透明的。即调用者不需要关注传输层协议使用的是UDP还是TCP,也不关注网络IO的模型。
- RPC服务提供协议式的消息通信机制,即通信双方使用proto或者thrift规定好传输的信息,调用方正确地将信息传递到接收方(Request),就可以实现一次通信,通信的结果通过Response返回。
- 跨语言的能力:在企业中,经常可以听到XX引擎,比如:翻译引擎,这个引擎有可能使用python去做的,然后暴露一个RPC接口。调用方有可能使用的是Java,也有可能是Go又或者是NodeJs,但是翻译引擎并不关心。只要翻译引擎正确接受到了信息,就可以进行处理。因为在传输过程中,消息都会被序列化,所以在这一层面上就摆脱了变成语言的束缚。
RPC框架如何实现通信
- client为服务的调用方,通常我们写好thrift文件之后,使用kite框架能够自动生成调用的框架。
- Server为服务的提供方通