DeathWhispers

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

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

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

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

TCP 粘包 / 拆包的原因应该这么解决?

🦅 概念 TCP 是以流的方式来处理数据,所以会导致粘包 / 拆包。 拆包:一个完整的包可能会被 TCP 拆分成多个包进行发送。 粘包:也可能把小的封装成一个大的数据包发送。 🦅 原因 应用程序写入的字节大小大于套接字发送缓冲区的大小,会发生拆包现象。而应用程序写入数据小于套接字缓冲区大小,网卡将应用多次写入的数据发送到网络上,这将会发生粘包现象。 待发送数据大...

RocketMQ 是否会弄丢数据?

艿艿:注意,RocketMQ 是否会丢数据,主要取决于我们如何使用。这点,非常重要噢。 🦅 消费端弄丢了数据? 对于消费端,如果我们在使用 Push 模式的情况下,只有我们消费返回成功,才会异步定期更新消费进度到 Broker 上。 如果消费端异常崩溃,可能导致消费进度未更新到 Broker 上,那么无非是 Consumer 可能重复拉取到已经消费过的消息。关于这个,就需要消费端做好消...

RocketMQ 是什么?

RocketMQ 是阿里巴巴在 2012 年开源的分布式消息中间件,目前已经捐赠给 Apache 软件基金会,并于 2017 年 9 月 25 日成为 Apache 的顶级项目。作为经历过多次阿里巴巴双十一这种“超级工程”的洗礼并有稳定出色表现的国产中间件,以其高性能、低延时和高可靠等特性近年来已经也被越来越多的国内企业使用。 如下是 RocketMQ 产生的原因: 淘宝内部的交易系统使...