gRPC,云原生应用开发的水煤电

Posted Tomcat那些事儿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gRPC,云原生应用开发的水煤电相关的知识,希望对你有一定的参考价值。


微服务和云原生架构越来越火热的今天,服务之间通信的能力越来越显得重要。这其中最常见 HTTP(RESTFul) 和 RPC 这两种通信风格。

比如 Spring Cloud 技术栈常见的服务间调用是通过 HTTP(RESTFul)风格,另外的一些 Java 技术栈中也常见通过  RPC 进行服务间调用的,比如常用到的 Dubbo。


RPC 是什么?做 Java 服务开发的同学可能都能说几句。因为这几年 Dubbo 的普及,大家对 「注册中心」, 「Provider」 和 「Consumer」 这几个词都耳熟能详。

那说到底, RPC 是要干啥?

不是两个服务之间互相调用吗?

RPC 全称是 Remote Procedure Call,  也称为远程过程调用,通过 RPC 我们可以像调用本地方法一样远程调用某个方法。这个「远程的方法」可能部署在不同的机器,使用不同的开发语言开发等等。

确切的说,RPC 是解决进程间通信的技术。部署在同一台机器上的多个进程,实际是远程的一种情况。Dubbo 在 Java 应用中的使用,对于 RPC 来说,是两方使用相同的编程实现的一种情况。

例如对于早期,进程间通信,不同应用之间有一些 Old Fashion 的RPC,有的可能只是听说过。像 CORBA (Common Object Request Broker Archiecture),Java 会使用 Java 远程方法调用 RMI (Remote Method Invocation),如果做过 JEE 应用服务器之类的开发,应该会有所接触。

再之后,过渡到像 SOAP, REST 这些。RPC 框架的话就出现了 Dubbo, gRPC, Thrift 等等。

而随着 Docker 和 K8S 的云原生时代到来, gRPC 基本成为底层的通信层。

我自己之前一直使用的都是 Java 的 RPC,最近看了一本关于 gRPC 的书籍 『gRPC 与云原生应用开发』,对 gRPC 中的一些设计感觉还是挺新鲜的。