高效IO之零拷贝技术

这种技术是出现在 IO 操作上的, IO 操作会大量消耗 CPU 的性能,为什么说 IO 操作很容易成为性能瓶颈呢,每一个的 IO 操作都会涉及到操作系统的内核空间和用户空间的转换,真正执行的 IO 操作实际上是在操作系统的内核空间进行。无论是 文件IO ,还是 网络IO ,最后都可以统一为用户空间和内核空间数据的交换。计算机中内存和 CPU 都是非常稀有的资源,应该尽可能提高这些资源的使用效率。 IO 操作经常需要与磁盘就行交互,所以 IO 操作相比于 CPU 的速度要慢好几个数量级。利用这两者之间的速度差异,就可以实现不同种类的 IO 方式,也就是俗称的 IO模型。 ...

laravel实现利用RabbitMQ实现MQTT即时通讯

有时候我们的项目中会用到即时通讯功能,比如电商系统中的客服聊天功能,还有在支付过程中,当用户支付成功后,第三方支付服务会回调我们的回调接口,此时我们需要通知前端支付成功。而 RabbitMQ 可以很方便的实现即时通讯功能,如果你的业务只是少量地方使用即时通信,需要一个简易的消息系统,你可以直接考虑 MQ 的实现, MQ 有很高的吞吐率,具有持久化,还可以横向扩展,总之还不错,用就完了,奥利给! ...

UUID和雪花(Snowflake)算法该如何选择?

UUID和雪花(Snowflake)算法该如何选择?UUID 和 Snowflake 都可以生成唯一标识,在分布式系统中可以说是必备利器,那么我们该如何对不同的场景进行不同算法的选择呢,UUID 简单无序十分适合生成 requestID, Snowflake 里面包含时间序列等,可以用于排序,效率都还可以,本文详细介绍了我们选择的使用不同算法的原因,两种算法不同维度的对比。 ...

三种常用的数据分片方式:Hash分片,一致性Hash分片和按照数据范围分片

数据分片就是按照一定的规则,将数据集划分成相互独立正交的数据子集。然后将数据子集分布到不同的节点上,通过设计合理的数据分片规则,可将系统中的数据分布在不同的物理数据库中,达到提升应用系统数据处理速度的目的。 因为单一的节点受到机器内存、网卡带宽和单节点请求量的限制,不能承担比较高的并发,因此我们考虑将数据分片,依照分片算法将数据打散到多个不同的节点上,每个节点上存储部分数据。 这样在某个节点故障的情况下,其他节点也可以提供服务,保证了一定的可用性。这就好比不要把鸡蛋放在同一个篮子里.... ...

AOF和RDB持久化的区别

Redis:这就是我持久化方式AOF和RDB的区别 redis 作为我们经常使用的工具之一,熟悉它的特性还是很有必要的,这篇文章我们先对 AOF RDB 做了一个回顾,然后从几个方面进行说明对比,分析他们的优缺点,选择合适的持久化方式。 AOF和RDB持久化过程回顾,伪代码实现.... ...