技术分享
基于gprcurl构建一个http代理网关
00 分钟
2024-8-13
2024-8-14
type
status
date
slug
summary
tags
category
icon
password

使用的开源工具

协议仓定义

protobuf定义

常用key定义

新增ProtoUtils工具类

grpc/pb依赖及编译插件引入

grpc-sprin增强

支持无client声明的客户端发现。
支持http-request请求的header自动写入grpc的meatadata并在服务间全链路透传。

grpc-spring-common修改

  • org.springframework.boot.autoconfigure.AutoConfiguration.imports
  • spring.factories
  • GrpcContextUtils.java
  • GrpcUtils.java
  • HeaderSharedInterceptor.java
  • WebConfig.java

grpc-spring-client修改

  • org.springframework.boot.autoconfigure.AutoConfiguration.imports
  • spring.factories
  • GrpcChannelsProperties.java
  • GrpcClientDefaultAutoConfiguration.java
  • DefaultClientInterceptor.java

grpc-spring-server修改

  • org.springframework.boot.autoconfigure.AutoConfiguration.imports
  • spring.factories
  • DefaultServerInterceptor.java
  • GrpcMetadataConsulConfiguration.java
  • GrpcServerDefaultAutoConfiguration.java

grpcwebproxy

用于将grpc服务暴露到web端,提供http1.0的调用方式。使用go-cache对注册发现及grpc服务的反射提供缓存。
  • invoke.go
服务端符号反射表缓存
  • format.go
默认事件消息接收及md获取

grpcwebproxy代理服务自实现

  • error.proto
  • grpcwebproxy.proto
  • Dockerfile
  • grpcwebproxy.go
  • discovery.go
  • grpcclient.go
  • grpcclient_test.go
  • grpcwebproxyservice.go
  • server.go

grpc网关集成和服务调用测试

引入依赖
配置注册执行及grpc
  • Authorization.java
  • GrpcDemoController.java

被调服务skeleton服务

引入依赖
配置注册执行及grpc
  • SkeletonServiceImpl.java