cncf之grpc介绍

​ 首先,广义上来说CNCF实际上是一个软件基金会,其核心是解决技术问题。而在技术这一层面来说,CNCF包含了许多具体的项目,其计划为支持分布式、可扩展的应用需要的组件和组装方式提出一种规范,期望定义能够支持云原生应用和容器的整个基础设施堆栈。

​ CNCF主要包含的项目有:

  • Kubernetes

  • Prometheus

  • OpenTracing

  • Fluentd

  • Linkerd

  • gRPC

  • CoreDNS

  • containerd

​ 这里要讲的gRPC就是其中的一种现代化高性能开源远程调用框架。CoreOS 的分布式键值存储 etcd 就使用了 gRPC 进行点对点通讯,Docker 的便携式容器运行时 containerd 也通过 gRPC 暴露其功能,同时 containerd 本身也被捐献给了 CNCF。在 gRPC 中可以使用 Protocol Buffers 来定义服务的接口,Protocol Buffers 是一个强大的二进制序列化工具和语言。gRPC 也和诸多语言进行了集成,并可以自动生成特定语言的客户端和服务端接口。

​ 也就是说,使用gRPC的客户端应用程序可以在不同机器上的服务器应用程序上直接调用方法(支持跨语言),就像它是本地对象一样。这样一来,就能够更方便地创建分布式应用程序(及服务)。

​ 这里使用go语言来安装gRPC与protocol buffers(gRPC使用protocol buffers消息类型来定义方法参数和返回类型)。如下:

1
2
go get -u google.golang.org/grpc
go get -u github.com/golang/protobuf/protoc-gen-go

​ golang下的文件因为网络原因可能go get不到,如果出现这个问题可以从github对应仓库中clone下来:

1
2
3
4
5
6
7
8
git clone https://github.com/grpc/grpc-go.git $GOPATH/src/google.golang.org/grpc
git clone https://github.com/golang/net.git $GOPATH/src/golang.org/x/net
git clone https://github.com/golang/text.git $GOPATH/src/golang.org/x/text
go get -u github.com/golang/protobuf/protoc-gen-go
git clone https://github.com/google/go-genproto.git $GOPATH/src/google.golang.org/genproto

cd $GOPATH/src/
go install google.golang.org/grpc

​ 接下来就可以正常使用了。