分布式
文章平均质量分 83
Lehends_on_win
gogogo
展开
-
分布式锁(Redis 数据库 Zookeeper)
分布式锁在多线程情况下访问一些共享资源需要加锁,不然就hi出现数据被写乱的问题。一般可以用数据库DB,Redis和Zookeeper实现分布式锁特点:安全性(Safety):在任意时刻,只有一个客户端可以获得锁(排他性)避免死锁:客户端最终一定可以获得锁,即使锁住某个资源的客户端在释放锁之前崩溃或者网络不可达容错性:只要锁服务集群中的大部分节点存活,Client就可以进行加锁解锁操作Redis的分布式锁服务在redis中,我们可以通过以下命令SET resource_name my_ra原创 2021-12-26 22:03:50 · 1304 阅读 · 2 评论 -
如何保证消息队列高可用
如何保证消息队列高可用首先MQ会导致系统可用性降低,所以只要你用了MQ,那就一定有缺点了RabbitMQ的高可用性RabbitMQ是比较有代表性的,因为是基于主从(非分布式)做高可用的,我们就以RabbitMQ为例子讲解第一种MQ的高可用是怎么实现RabbitMQ有三种模式:单机,普通集群,镜像集群单机模式单机模式,玩具罢了普通集群模式(没有高可用性)普通集群模式,意思就是在多台机器上启动多个RabbitMQ实例,每个机器启动一个。你创建的queue,只会放在一个RabbitMQ实例上,但是原创 2021-12-19 21:00:03 · 1421 阅读 · 0 评论 -
如何保证消息不被重复消费
如何保证消息不被重复消费面试题如何保证消息不被重复消费,或者说如何保证消息的幂等性面试官心理分析既然是消费消息,那肯定要考虑会不会重复消费?能不能避免重复消费?或者重复消费了也别造成系统异常可以吗?这个是MQ领域的基本问题,其实本质上还是问你使用消息队列如何保证幂等性面试题刨析首先,有哪些重复消费的问题?先用kafka来举一个例子吧,说说怎么重复消费kafka实际上有个offset的概念,就是每个消息写进去,都有一个offset,代表消息的序号,然后consumer消费了数据之后,每隔一段时原创 2021-12-19 20:58:17 · 1968 阅读 · 1 评论 -
磁盘顺序写
磁盘顺序写将消息先写入到操作系统的页缓存中,由页缓存直接映射到磁盘文件,不需要在用户空间和内核空间直接拷贝消息,也可以认为消息传输是发送在内存中的概述kafka作为一个支持大数据量写入写出的消息队列,由于是基于Scala和Java,而Scala和Java均需要在JVM上运行,但是JVM的堆进行数据存储则需要开辟很大的堆来支持数据读写,从而会导致GC频繁影响性能。所以kafka时使用磁盘来存储数据的,并且基于磁盘顺序读写和mmap(零拷贝技术的一种)技术来实现高性能磁盘顺序读写在顺序读写的情况下,磁原创 2021-12-05 21:46:16 · 1415 阅读 · 0 评论 -
消息队列-消息积压
消息积压性能优化性能的优化主要在生产者和消费者这俩业务逻辑mq自身性能,作为API使用者,无需过度关注。因大多mq业务,mq本身处理能力远大于业务系统。主流mq的单个节点,消息收发性能可达几万到几十万条消息每秒,还可以水平扩展Broker实例数倍增处理能力。而一般业务系统需处理的业务逻辑远比消息队列复杂,单节点每秒可处理几百到几千次请求,性能已经算很好了。所以mq性能优化,更关注在消息收发两端,业务代码怎么和mq协作达到最佳性能生产端生产端业务代码处理性能实际上和mq关系不大,都是先执行自己的业务原创 2021-12-05 21:45:46 · 114 阅读 · 0 评论 -
零拷贝技术
零拷贝技术概述零拷贝技术指在计算机执行操作时,CPU不需要先将数据从一个内存区域复制到另一个内存区域,从而可以减少上下文切换以及CPU的拷贝时间。它的作用是在数据报从网络设备到用户程序空间传递的过程中,减少数据拷贝次数,减少系统调用,实现CPU的零参与,彻底消除CPU的负载。实现零拷贝用到的主要技术是DMA数据传输技术和内存区域映射技术零拷贝机制可以减少数据在内核缓冲区和用户进程缓冲区之间反复的I/O拷贝操作零拷贝机制可以减少用户进程地址空间之间因为上下文切换而带来的CPU开销物理内存和虚拟原创 2021-12-05 21:43:53 · 2110 阅读 · 0 评论 -
kafka基础
Kafka概述kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据,具有高性能,持久化,多副本备份,横向扩展能力相关概念Producer:消息的生产者,消息的入口kafka cluster: kafka集群Broker: kafka实例,每个服务器上有一个或多个kafka实例Topic:消息的主题,可以理解为消息的分类,kafka的数据保存在topic,每个broker上都可以创建多个topicPartion: Topic的分区,每个Topic可原创 2021-12-05 21:41:43 · 1580 阅读 · 0 评论