案例:经典案例,以目前流行点外卖的案例,用户下单后,调用订单服务,让后订单服务调用派单系统通知送外卖人员送单,这时候订单系统与派单系统采用MQ异步通讯。 RabbitMQ解决分布式事务原理: 采用最终一致性原理。需要保证以下三要素1、确认生产者一定要将数据投递到MQ服务器中(采用MQ消息确认机制)2 ...
分类:
其他好文 时间:
2019-01-18 23:13:30
阅读次数:
180
生产者消费者模型 具体来讲,就是在一个系统中,存在生产者和消费者两种角色,他们通过内存缓冲区进行通信,生产者生产消费者需要的资料,消费者把资料做成产品。生产消费者模式如下图。(图片来自网络,侵删!) 生产者消费者模型的实现 生产者是一堆线程,消费者是另一堆线程,内存缓冲区可以使用List数组队列,数 ...
分类:
编程语言 时间:
2019-01-17 20:13:45
阅读次数:
173
1.什么是阻塞队列 我们知道,PriorityQueue、LinkedList这些都是非阻塞队列。在我们使用非阻塞队列的时候有一个很大问题,它不会对当前线程产生阻塞,那么在面对类似消费者-生产者的模型时,就必须额外地实现同步策略以及线程间唤醒策略,这个实现起来就非常麻烦。但是有了阻塞队列就不一样了, ...
分类:
编程语言 时间:
2019-01-17 20:03:08
阅读次数:
170
多线程开发可以更好的发挥多核cpu性能,常用的多线程设计模式有:Future、Master-Worker、Guard Susperionsion、不变、生产者-消费者 模式;jdk除了定义了若干并发的数据结构,也内置了多线程框架和各种线程池; 锁(分为内部锁、重入锁、读写锁)、ThreadLocal ...
分类:
编程语言 时间:
2019-01-15 14:00:41
阅读次数:
223
import time from multiprocessing import Process,Queue #生产者 def producer(q): for i in range(10): time.sleep(0.2) s = '大包子%s号'%i print(s+'新鲜出炉,拿去用') q.p... ...
分类:
编程语言 时间:
2019-01-14 16:34:46
阅读次数:
212
import time from multiprocessing import Process,Queue #生产者 def producer(q): for i in range(10): time.sleep(0.7) s = '大包子%s号'%i print(s+'新鲜出炉,拿去用') q.p... ...
分类:
编程语言 时间:
2019-01-14 16:30:31
阅读次数:
165
小编是菜鸟一枚,最近想试试MQ相关的技术,所以自己看了下RabbitMQ官网,试着写下自己的理解与操作的过程。 刚开始的第一篇,原理只介绍 生产者、消费者、队列,至于其他的内容,会在后续中陆续补齐。 引入MQ话题 什么时候会用到MQ 可能很多人有疑惑:MQ到底是什么?哪些场景下要使用MQ?前段时间安 ...
分类:
其他好文 时间:
2019-01-13 21:15:47
阅读次数:
383
现在聊一下RabbitMQ消息持久化: 问题及方案描述 1.当有多个消费者同时收取消息,且每个消费者在接收消息的同时,还要处理其它的事情,且会消耗很长的时间。在此过程中可能会出现一些意外,比如消息接收到一半的时候,一个消费者死掉了。 这种情况要使用消息接收确认机制,可以执行上次宕机的消费者没有完成的 ...
分类:
其他好文 时间:
2019-01-13 21:09:55
阅读次数:
309
【译】RabbitMQ教程一 主要通过Hello Word对RabbitMQ有初步认识 【译】RabbitMQ教程二 工作队列,即一个生产者对多个消费者 循环分发、消息确认、消息持久、公平分发 【译】RabbitMQ教程三 如何同一个消息同时发给多个消费者 开始引入RabbitMQ消息模型中的重要概 ...
分类:
其他好文 时间:
2019-01-13 21:09:06
阅读次数:
188
消息中间件的可靠性是指对消息不丢失的保障程度;而消息中间件的可用性是指无故障运行的时间百分比,通常用几个 9 来衡量。不存在绝对的可靠性只能尽量趋向完美。并且通常可靠性也意味着影响性能和付出更大的成本,因此实际应用时还要根据业务需求,对真正关键的信息来做可靠性保证,并要从生产者、消息队列、消费者三个 ...
分类:
其他好文 时间:
2019-01-13 12:22:10
阅读次数:
201