Beanstalk应用处景:
背景介绍:
如今市情上有很多消息队列系统了。常用的有ActiveMQ, RabbitMQ,ZeroMA,Kafka,RocketMQ。Redis之父比来又开源了一个Disque。我之前在乐视用的是apache的qpid。然则之所以各个体系都在风行,还要看其侧重点。
个中ActiveMQ可以称之为传统型,它们完全支撑JMS和AMQP规范。
JMS即Java消息办事(Java Message Service)应用法度榜样接口。它是Java平台上有关面向消息中心件(Message Oriented Middleware,缩写为MOM)的技巧规范,它便于消息体系中的Java应用法度榜样进行消息交换,并且经由过程供给标准的产生、发送、接收消息的接口简化企业应用的开辟。(*我这里说了,JMS是应用法度榜样接口,就是API,API就意味着是和编程说话绑定的)
Beanstalk是一个高机能、轻量级的、分布式的、内存型的消息队列体系。最初设计的目标是想经由过程后台异步履行耗时的义务来降低高容量Web应用体系的页面拜菲揭捉?迟。其实Beanstalkd是典范的类Memcached设计,协定和应用方法都是同样的风格。其根本设计思惟很简单:高机能离不开异步,异步离不开队列,而内部都是临盆者-花费者模式的。
JMS对象模型包含:连接工厂、JMS连接、JMS会话、JMS目标、JMS临盆者和花费者和JMS消息。个中大年夜家最关怀的是JMS消息的两种模型:点对点(point to point, queue)和宣布/订阅(publish/subscribe, topic)。这两者之间的差别就是点对点模式是临盆者发送一条消息到queue,一个queue可以有很多花费者,然则一个消息只能被一个花费者接收,当没有花费者可用时,这个消息会被保存直到有一个可用的花费者,所以queue实现了一个靠得住的负载均衡。而宣布订阅模式是宣布者发送到topic的消息,只有订阅了topic的订阅┞愤才会收到消息。topic实现了宣布和订阅,当你宣布一个消息,所有订阅┞封个topic的办事都能获得这个消息,所以大年夜1到N个订阅┞愤都能获得这个消息的拷贝。
AMQP(高等消息队列协定),和JMS的差别在于:JMS只是java平台的筹划,AMQP是一个跨说话的协定。因为跨说话的特点,降低了企业和体系集成的开销。所以如今的消息队列体系支撑AMQP的多,支撑JMS的少。
AMQP的特点是面向消息,队列化,消息模型(和JMS一样:点对点和宣布订阅),靠得住性和安然性。它供给了三种消息传递包管方法:最多一次,至少一次和精确一次。
我们经常在应用消息队列的时刻提到的broker是对实现了AMQP协定的办事端的称呼。其根本构造如下图。
JMS的体系架构由JMS供给者、JMS客户、JMS临盆者、JMS花费者、JMS消息、JMS队列、JMS主题构成。
Beanstalk介绍:
那下面开端说beanstalk了。起首说beanstalk其实并不是JMS规范的,也并不严格遵守AMQP协定。有人说Beanstalk之于RabbitMQ,就比如Nginx之于Apache。它更简单,轻量级,高机能,易应用。然则比拟kafka,数据处理才能照样有差距,所以我们如今其实袈内里渐替代它。但它有些很易用的特别功能,后面会讲到。
Beanstalk重要包含4个部分。
2> tube:一个有名的义务队列,用来存储同一类型的job,是producer和consumer操作的对象。
3> producer:job的临盆者,经由过程put敕令来将一个job放到一个tube中。
4> consumer:job的花费者,经由过程reserve、release、bury、delete敕令来获取job或改变job的状况。
1> job:一个须要异步处理的义务,须要放在一个tube中。
刚才说Beanstalk有一些特别的好用功能。那就是它支撑义务优先级(priority)、延时(delay)、超时重发(time-to-run)和预留(buried),可以或许很好的支撑分布式的后台义务和准时义务处理。这些特点是和beanstalk工作过程密切相干。
Beanstalk的一个job的生命周期有READY、RESERVED、DELAYED、BURIED四种。
当producer直接put一个job时,job就是READY状况,等待consumer来处理。如不雅选择延迟put,job就先到DELAYED状况,到指准时光再READY。consumer获取了READY的job,此状况就为RESERVED。如许其他consumer不克不及再操作此job。当consumer完成该job后,可以选择delete、release或者bury。
delete之后,job不克不及再获取。release的job可以从新迁徙或延迟迁徙回READY。bury的job可以被休眠,须要的时刻再READY或者delete掉落。
用作延时队列:比如可以用于如不雅用户30分钟内不操作,义务封闭。
用作轮回队列:用release敕令可以轮回履行义务,比如可以做负载均衡义务分发。
用作兜底机制:比如一个请求有掉败的概率,可以用Beanstalk赓续重试,设定超不时光,时光内测验测验到成功为止。
用作准时义务:比如可以用于专门的后台义务。
用作异步操作:这是所有消息队列都最常用的,先将义务仍进去,次序履行。
【编辑推荐】
- 3百大年夜战激发行业热议 搜刮范畴竞争态势或将经久存在
- 全何办事器内存经由过程内存测试威望CMTL认证
- Linux内存治理优化:面向低延迟/高吞吐量数据库GraphDB
- JavaScript新规范将惹人异步函数与内存共享机制
- Chromebook用户将很快可以或许及时`控处理器和内存应用情况
推荐阅读
本文将介绍 11 种在 Linux 体系查找用户相干信息的有效办法。这里,我们会讲解在体系中获取一个用户账户具体信息、展示登录具体信息以及用户行动数据的敕令。如不雅你想要在 Linux 中添加>>>详细阅读
本文标题:一个高性能、轻量级的分布式内存队列系统--beanstalk
地址:http://www.17bianji.com/lsqh/37812.html
1/2 1