Netty 如何实现重连?
Netty 如何实现重连? 客户端,通过 IdleStateHandler 实现定时检测是否空闲,例如说 15 秒。 如果空闲,则向服务端发起心跳。 如果多次心跳失败,则关闭和服务端的连接,然后重新发起连接。 服务端,通过 IdleStateHandler 实现定时检测客户端是否空闲,例如说 90 秒。 如果...
Netty 如何实现重连? 客户端,通过 IdleStateHandler 实现定时检测是否空闲,例如说 15 秒。 如果空闲,则向服务端发起心跳。 如果多次心跳失败,则关闭和服务端的连接,然后重新发起连接。 服务端,通过 IdleStateHandler 实现定时检测客户端是否空闲,例如说 90 秒。 如果...
Netty 如何实现内存管理? 这个题目,简单了解即可,如果深入,就要去看 《精尽 Netty 源码解析 —— Buffer》 相关的源码。而且,看完就忘记,比较难和复杂。 当然,看懂那一刻,乐趣无穷,哈哈哈哈。 Netty 内存管理机制,基于 Jemalloc 算法。 首先会预申请一大块内存 Arena ,Arena 由许多 Chunk 组成,而每个 Chunk 默认由204...
Netty 为什么要实现内存管理? 🦅 老艿艿的理解 在 Netty 中,IO 读写必定是非常频繁的操作,而考虑到更高效的网络传输性能,Direct ByteBuffer 必然是最合适的选择。但是 Direct ByteBuffer 的申请和释放是高成本的操作,那么进行池化管理,多次重用是比较有效的方式。但是,不同于一般于我们常见的对象池、连接池等池化的案例,ByteBuffer 是有大...
MQ选型 常见的MQ kafka 优点:吞吐量非常大、性能非常好、集群高可用缺点:会丢失数据,功能比较单一使用场景:日志分析、大数据采集 RabbitMQ 优点:消息可靠性高,功能全面缺点:吞吐量比较低,消息积累会严重影响性能。erlang语言不好定制使用场景:小规模场景 RocketMQ 优点:高吞吐、高可用、高性能,功能非常全面缺点:开源版本功能不如商业版。官方文档和周边生...
MQ如何保证消息不丢失 消息不可靠的情况可能是消息丢失,劫持等原因: 哪些环节可能会丢失消息? 生产者丢失消息消息列表丢失消息消费者丢失消息 怎么防止消息丢失 发送消息不丢失 Kafka: 消息发送+回调 RocketMQ: 消息发送+回调 事务消息机制 RabbitMQ: ...
分布式事务:业务相关的多个操作,保证它们同时成功或者同时失败最终一致性:只要保证最终的事务是对齐的就行强一致性:每一个过程的 MQ中要保证事务的最终一致性 生产者要保证100%的消息投递。 消费者保证幂等消费。唯一ID+业务自己实现幂等。 分布式MQ的三种语义: at least once:至少一次 at most once:至多一次 exactly onc...
MQTT协议是什么 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(Publish/Subscribe)模式的轻量级通讯协议,该协议构建于TCP/IP协议上,目前最新版本为v3.1.1。 MQTT最大的优点在于可以以极少的代码和有限的带宽,为远程设备提供实时可靠的消息服务。做为一种低开销、低带宽占用的即时通讯...
BIO是什么? 概念 BIO,又称Block-IO,是一种阻塞+同步的通信模式. 是一个比较传统的通信方式,模式简单,使用方便.但是并发处理能力低,通信耗时,依赖网速 原理 服务器通过一个Acceptor线程,负责监听客户端请求和为每个客户端创建一个新的线程进行链路处理.典型的一请求一应答模式 若客户端数量增多,频繁地创建和销毁线程会给服务器打开很大的压力.后改良为用线程...
1. 简介 Go 语言是静态类型语言,因此变量(variable)是有明确类型的,编译器也会检查变量类型的正确性。从计算机系统实现角度来看,变量是一段或多段用来存储数据的内存。 2. 变量 (Variables) 2.1. 变量声明 Go 语言提供了多种变量声明的方式。 标准格式 var 是声明变量的关键字,标准格式如下: var 变量名 变量类型 批量格式 使用关键字 ...
负载均衡 相关的面试题为我的知识星球专属内容,已经整理到了《Java 面试指北》中。 《Java 面试指北》 的部分内容展示如下,你可以将其看作是 JavaGuide 的补充完善,两者可以配合使用。 《Java 面试指北》只是星球内部众多资料中的一个,星球还有很多其他优质资料比如专属专栏、Java 编程视频、PDF 资料。 最近几年,市面上有越来越多的“技术大佬”开始办培训班/...