java prc 协议_Java RPC协议设计

调用流程

4034083726.png

motan的协议设计

包括 request 级别的 header 和 body,request 的 body 中又包含了 header 和 body; 其中 requestId, request/response 的标记是冗余的

3813039805.png

dubbo的协议设计

899369465.png

Server参数的优化bootstrap.option(ChannelOption.SO_BACKLOG, 128); // 3次握手连接队列

bootstrap.childOption(ChannelOption.SO_KEEPALIVE, true); // 默认false

bootstrap.childOption(ChannelOption.TCP_NODELAY, true);

Decoder

3785382702.pngpublic class MessageDecoder extends ByteToMessageDecoder {

@Override

protected void decode(ChannelHandlerContext channelHandlerContext, ByteBuf byteBuf, List list) throws Exception {

if (byteBuf.readableBytes() <= MessageConstant.HEADER_LEN) {

return;

}

byteBuf.markReaderIndex();

short type = byteBuf.readShort();

if (type != MessageConstant.MAGIC_TYPE) {

byteBuf.resetReaderIndex();

throw new Exception("error magic type");

}

byte messageType = (byte) byteBuf.readShort();

long requestId = byteBuf.readLong();

int dataLength = byteBuf.readInt();

if (byteBuf.readableBytes() < dataLength) {

byteBuf.resetReaderIndex();

return;

}

byte[] data = new byte[dataLength];

byteBuf.readBytes(data, 0, dataLength);

// debug

String r = new String(data, StandardCharsets.UTF_8);

System.out.println(r);

list.add(new Message(r));

}

}

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值