DeathWhispers

Netty 为什么要实现内存管理?

Netty 为什么要实现内存管理? 🦅 老艿艿的理解 在 Netty 中,IO 读写必定是非常频繁的操作,而考虑到更高效的网络传输性能,Direct ByteBuffer 必然是最合适的选择。但是 Direct ByteBuffer 的申请和释放是高成本的操作,那么进行池化管理,多次重用是比较有效的方式。但是,不同于一般于我们常见的对象池、连接池等池化的案例,ByteBuffer 是有大...

MQ选型

MQ选型 常见的MQ kafka 优点:吞吐量非常大、性能非常好、集群高可用缺点:会丢失数据,功能比较单一使用场景:日志分析、大数据采集 RabbitMQ 优点:消息可靠性高,功能全面缺点:吞吐量比较低,消息积累会严重影响性能。erlang语言不好定制使用场景:小规模场景 RocketMQ 优点:高吞吐、高可用、高性能,功能非常全面缺点:开源版本功能不如商业版。官方文档和周边生...

MQ如何保证分布式事务的最终一致性

分布式事务:业务相关的多个操作,保证它们同时成功或者同时失败最终一致性:只要保证最终的事务是对齐的就行强一致性:每一个过程的 MQ中要保证事务的最终一致性 生产者要保证100%的消息投递。 消费者保证幂等消费。唯一ID+业务自己实现幂等。 分布式MQ的三种语义: at least once:至少一次 at most once:至多一次 exactly onc...

BIO、NIO、AIO

BIO是什么? 概念 BIO,又称Block-IO,是一种阻塞+同步的通信模式. 是一个比较传统的通信方式,模式简单,使用方便.但是并发处理能力低,通信耗时,依赖网速 原理 服务器通过一个Acceptor线程,负责监听客户端请求和为每个客户端创建一个新的线程进行链路处理.典型的一请求一应答模式 若客户端数量增多,频繁地创建和销毁线程会给服务器打开很大的压力.后改良为用线程...

负载均衡

负载均衡 相关的面试题为我的知识星球专属内容,已经整理到了《Java 面试指北》中。 《Java 面试指北》 的部分内容展示如下,你可以将其看作是 JavaGuide 的补充完善,两者可以配合使用。 《Java 面试指北》只是星球内部众多资料中的一个,星球还有很多其他优质资料比如专属专栏、Java 编程视频、PDF 资料。 最近几年,市面上有越来越多的“技术大佬”开始办培训班/...