Netty- 服务端和客户端的创建

本文详细介绍了Netty私有协议栈及其在服务端和客户端创建过程中的应用。Netty协议栈基于TCP/IP,提供高性能异步通信,具备消息编解码、白名单接入认证、心跳机制和重连机制等特性。服务端创建涉及ServerBootstrap、EventLoopGroup、ChannelPipeline和TCP参数设置。客户端创建包括Bootstrap、NioSocketChannel、ChannelHandler的配置。文章还讨论了TCP参数如backlog、SO_TIMEOUT等的作用,以及心跳机制和重连机制的实现原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Netty私有协议栈

  1. Netty协议栈用于内部各模块之间的通信,它基于TCP/IP协议栈,是一个类HTTP协议的应用层协议栈,相比于传统的标准协议栈,它更加轻巧、灵活和实用。
  2. Netty节点并没有服务端和客户端的区分,谁先发起连接,谁就作为客户端,另一方作为服务端。一个Netty节点即可以作为客户端连接另一个Netty节点,又可以作为服务端被其他节点连接。
  3. 协议族的功能:用于业务内部各模块之间的消息交互和服务调用。
    • 基于Netty的NIO通信框架,提供高性能的异步通信能力:
    • 提供消息的编解码框架,可以实现POJO的序列化和反序列化:
    • 提供基于IP地址的白名单接入认证机制;
    • 链路的有效性校验机制;
    • 链路的断连重连机制在这里插入图片描述
  4. Netty协议栈消息定义:消息头和消息体。

消息头的定义如下:
在这里插入图片描述在这里插入图片描述
其中如果attachment长度为0,表示没有可选附件,如果大于0,则需要有附件编码,那么使用for循环,首先对附件的个数进行编码,然后对key进行编码,再将它转换成byte数组之后再编码内容。

  1. 可靠性设计之心跳机制
    在业务低谷时段,如果发生网络闪断、连接被Hang住等网络问题,由于没有业务消息而导致很难发现,到了白天业务高峰,导致大量的网络通信失败。心跳机制能解决这个问题,空闲时采用心跳机制来检测链路的互通性,一旦发生网络故障就立即关闭链路,主动重连

    设计思路如下

    • 当网络处于空闲状态持续时间达到T,客户端主动发送Ping心跳消息给服务端。
    • 如果在下一个周期T到来时,客户端没有收到对方发送的Pong心跳应答消息或者读取到服务端发送的其他业务消息,则心跳失败计数器加1
    • 当客户端接受到服务端的业务消息或者Pong应答消息,将心跳失败计数器置为0 ,<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值