【Netty源码解读和权威指南】第69篇:Netty与gRPC——高性能RPC框架的底层网络秘密
上一篇【第68篇】Netty KQueue传输——macOS BSD下的原生传输
下一篇【第70篇】Netty 5新特性展望——下一代Netty的技术方向
一、gRPC架构
gRPC应用层(Stub/ServiceImpl) ↓ gRPC框架层(序列化/反序列化/拦截器) ↓ Transport层 ← Netty(HTTP/2传输)二、gRPC服务器(Netty版)
publicclassGrpcServer{publicstaticvoidmain(String[]args)throwsException{Serverserver=NettyServerBuilder.forPort(8080).addService(newGreeterImpl()).build().start();server.awaitTermination();}}// gRPC内部自动配置Netty Pipeline:// Http2FrameCodec → Http2MultiplexCodec → GrpcFrameDecoder → GrpcFrameEncoder// → GrpcRequestHandler三、HTTP/2多路复用
HTTP/1.1:一个连接一个请求(队头阻塞) HTTP/2:一个连接多个Stream(多路复用) Stream 1: /sayHello ───────── 完成 Stream 2: /getUser ───── 完成 Stream 3: /saveData ───────── 完成 ↑ 三个请求同时进行!四、客户端连接
ManagedChannelchannel=NettyChannelBuilder.forAddress("localhost",8080).usePlaintext().build();GreeterGrpc.GreeterStubstub=GreeterGrpc.newStub(channel);stub.sayHello(request,newStreamObserver<HelloReply>(){publicvoidonNext(HelloReplyvalue){/* 处理响应 */}publicvoidonError(Throwablet){/* 异常 */}publicvoidonCompleted(){/* 完成 */}});五、总结
| 层 | 技术 |
|---|---|
| 传输 | Netty HTTP/2 |
| 序列化 | Protobuf |
| 多路复用 | 一个连接多个Stream |
| 安全 | TLS 1.3 |
上一篇【第68篇】Netty KQueue传输——macOS BSD下的原生传输
下一篇【第70篇】Netty 5新特性展望——下一代Netty的技术方向
