DeathWhispers

什么是 Netty ?

什么是Netty Netty是一款提供异步的, 事件驱动的网络应用程序框架和工具, 用以快速开发高性能, 高可靠性的网络服务器和客户端程序. 也就是说, Netty是一个基于NIO的客户,服务器端编程框架. 使用Netty可以确保你快速和简单地开发出一个网络应用, 例如实现了某种协议的客户, 服务端应用. Netty相当简化和流线化了网络应用的编程开发过程, 例如: TCP和UDP的so...

了解哪几种序列化协议?

🦅 概念 序列化(编码),是将对象序列化为二进制形式(字节数组),主要用于网络传输、数据持久化等。 反序列化(解码),则是将从网络、磁盘等读取的字节数组还原成原始对象,主要用于网络传输对象的解码,以便完成远程调用。 🦅 选型 在选择序列化协议的选择,主要考虑以下三个因素: 序列化后的字节大小。更少的字节数,可以减少网络带宽、磁盘的占用。 序列化的性能。对 CPU...

为什么会有分布式事务?

从本地事务来看,我们可以看为两块,一个是 service 产生多个节点,另一个是 resource 产生多个节点。 😈 可能会有胖说,我们就是一个单体应用,不存在这样的情况。OK ,没问题,那么我们回过头来想想用户下单完成,我们需要给用户发短信。如果发送短信失败,可能是网络抖动的原因,我们是不应该去回滚本地事务,那么此时也可以认为是一个分布式事务。 1)service 多个节点 随着互...

为什么Redis单线程模型也能效率这么高?

1、C 语言实现。 我们都知道,C 语言的执行速度非常快。 2、纯内存操作。 Redis 为了达到最快的读写速度,将数据都读到内存中,并通过异步的方式将数据写入磁盘。所以 Redis 具有快速和数据持久化的特征。 如果不将数据放在内存中,磁盘 I/O 速度为严重影响 Redis 的性能。 3、基于非阻塞的 IO 多路复用机制。 4、单线程,避免了多线程的频繁上下文切换问题。 R...

不同的消息队列,其架构不同,所以实现发送消息的可靠性的方案不同。所以参见如下文章:

不同的消息队列,其架构不同,所以实现发送消息的可靠性的方案不同。所以参见如下文章: 不同的消息队列,其架构不同,所以实现发送消息的可靠性的方案不同。所以参见如下文章: RocketMQ 《精尽 RocketMQ 面试题》 的 「RocketMQ 是否会弄丢数据?」 的面试题。 RabbitMQ 《精尽 RabbitMQ 面试题》 的 「RabbitMQ 是否会弄丢数据?」 的面...

MQ选型

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