青蛙小白

使用grpcurl访问gRPC服务

grpcurl是一个命令行工具,使用它可以在命令行中访问gRPC服务,就像使用curl访问http服务一样。 准备: 在gRPC服务中注册reflection服务 gRPC服务是使用Protobuf(PB)协议的,而PB提供了在运行时获取Proto定义信息的反射功能。grpc-go中的"google.golang.org/grpc/reflection"包就对这个反射功能提供了支持。 这里以grpc-go官方的helloword为例,代码结构如下: grpc-hello ├── go.mod ├── go.sum ├── main.go └── proto ├── doc.go ├── helloworld.pb.go └── helloworld.proto helloworld.proto:

Kubernetes Ingress实战(三):使用Ingress将gRPC服务暴露到Kubernetes集群外部

Kubernetes Ingress实战(一):在Kubernetes集群中部署NGINX Ingress Controller Kubernetes Ingress实战(二):使用Ingress将第一个HTTP服务暴露到集群外部 Kubernetes Ingress实战(三):使用Ingress将gRPC服务暴露到Kubernetes集群外部 Kubernetes Ingress实战(四):Bare metal环境下Kubernetes Ingress边缘节点的高可用 Kubernetes Ingress实战(五):Bare metal环境下Kubernetes Ingress边缘节点的高可用(基于IPVS) Kubernetes Ingress实战(六):Bare metal环境下Kubernetes Ingress边缘节点的高可用,Ingress Controller使用hostNetwork 为什么要将gRPC服务暴露到Kubernetes集群外部 在实践中我们的微服务使用下面的集成方式:

gRPC Java:Spring boot整合gRPC

接下来我们需要把gRPC和Spring boot整合在一起,这里主要记录我们的整合方式。 项目目录结构 项目的目录结构如下: foo-svc ├── foo-svc-proto │ ├── build.gradle │ └── src │ └── main │ └── proto │ ├── xx1_service.proto │ └── xx2_service.proto ├── foo-svc-server │ ├── build.gradle │ └── src │ └── main │ ├── java │ └── resources │ └── application.yml ├── build.gradle ├── gradle.properties └── settings.gradle 一个gRPC服务的项目由两个子项目组成: