GRPC 框架实现微服务
关于RPC
RPC(Remote Procedure Call Protocol),是远程过程调用的缩写,通俗的说就是调用远处的一个函数。与之相对应的是本地函数调用,我们先来看一下本地函数调用。当我们写下如下代码的时候:
规则
const result = Add(1,2)
我们知道,我们传入了1,2两个参数,调用了本地代码中的一个Add函数,得到result这个返回值。这时参数,返回值,代码段都在一个进程空间内,这是本地函数调用。
那有没有办法,我们能够调用一个跨进程(所以叫"远程",典型的事例,这个进程部署在另一台服务器上)的函数呢?

这就是RPC主要实现的功能,也是微服务的主要功能。
通俗的讲:微服务的实现就是让我们可以像调用本地函数一样调用远程函数
注意
RPC 并不是一种具体的技术框架,而是一种技术思想。广义上讲,任何通过网络,远程调用另一个进程中的方法的技术,都可以称为 RPC。
随着时代的发展,越来越多优秀的 RPC 微服务框架进入我们的视野 ,比如谷歌的 GRPC 框架、阿里的dubbo框架 、Facebook 的 Thrift 、
腾讯的Tars 等。下面我们主要给大家讲讲如何使用 Grpc框架 实现 nodejs 微服务。
GRPC介绍
gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动端和 HTTP/2 设计。目前提供 C、Java 和 Go 语言版本,
分别是:grpc , grpc-java , grpc-go. 其中 C 版本支持 C , C++ , Node.js , Python , Ruby , Objective-C ,
PHP 和 C# 支持。
GRPC特点:- 提供几乎所有主流语言的实现,打破语言隔阂
- 基于
HTTP/2标准设计,带来诸如双向流、流控、头部压缩、单TCP连接上的多复用请求等特
- 基于
- 默认使用
Protocol Buffers序列化,性能相较于RESTful Json好很多
- 默认使用
- 工具链成熟,代码生成便捷,开箱即用
- 支持双向流式的请求和响应,对批量处理、低延时场景友好这些特性使得其在移动设备上表现更好,更省电和节省空间占用。
有了
GRPC, 我们可以一次性的在一个.proto文件中定义服务,并使用任何支持它的语言去实现客户端 和服务端。GRPC默认使用protocol buffers,它是google开源的一套成熟的结构数据序列化机制(当然 也可以使用其他数据格式如JSON),可以用proto files创建gRPC服务,用protocol buffers消息类型来 定义方法参数和返回类型。 在GRPC客户端可以直接调用不同服务器上的远程程序,就想调用本地程序一样,很容易构建分布式应 用和服务。和很多RPC系统一样,服务负责实现定义好的接口并处理客户端请求,客户端根据接口描述 直接调用需要的服务。客户端和服务器可以分别使用gRPC支持的不同语言实现。
- 支持双向流式的请求和响应,对批量处理、低延时场景友好这些特性使得其在移动设备上表现更好,更省电和节省空间占用。
有了

参考资料