源码阅读要点

Netty 是如何创建长连接的?

设 keepAlive 为 true;则使用底层操作系统 TCP 的 keepAlive 来保活,其本质也是定时发送心跳,但是只是一个 ACK 响应,报文极小,具体可查询 TCP KeepAlive 深入了解;

RocketMq 的长轮询如何实现的?

利用 Netty ,channel 被 PullRequestHolderService 所 hold 住(管理),对于 Netty 来说,只有往 channel 里写数据(writeAndFlush),才表示响应;通过定时任务来轮询结果判断是否超时;

Nacos 1.4 x 版本如何实现长轮询?

利用 req.startAsync 获取异步上下文,这样方法返回(tomcat 线程执行完毕)就不会立即发出响应;

在 Nacos 2.x 以后使用 Grpc 实现长连接(本质也是 Netty),只需要设置 keepAlive 属性,而不需要应用层实现心跳,底层的 keepAlive 消耗更低;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值