在Java项目实际开发中,咱们所使用的ActiveMQ、RibbitMQ、Kafka、Tomcat、WebLogic,这些均可以统称为中间件。java
咱们初次去了解,什么是中间件?数据库
什么是中间件?编程
因为业务、机构和技术是不断变化的,所以为其服务的软件系统必须适应这样的变化。在合并、添加服务或扩展可用服务以后,公司可能无力负担从新建立信息系统所需的成本。正是在这个关键时刻,才须要集成新组件或者尽量高效地扩展示有组件。要集成异类组件,最方便的方法不是将它们从新建立为同类元素,而是提供一个容许它们进行通讯(不考虑它们之间的差别)的层。该层被称做中间件。浏览器
维基百科中的介绍:缓存
中间件(英语:Middleware),又译中间件、中介层,是提供系统软件和应用软件之间链接的软件,以便于软件各部件之间的沟通。在现代信息技术应用框架如 Web 服务、面向服务的体系结构等项目中应用比较普遍。如数据库、Apache 的 Tomcat ,IBM 公司的 WebSphere ,BEA 公司的 WebLogic 应用服务器,东方通公司的 Tong 系列中间件,以及 Kingdee 公司的等都属于中间件。服务器
中间件,顾名思义,就是链接在两个软件之间的东西,是软件之间的一个粘合剂,一个胶水同样的东西。它位于操做系统和咱们的应用程序之间,可让开发者方便地处理通讯、输入和输出,使开发者可以专一于本身的业务逻辑开发。架构
这么一说,好像 Tomcat 确实还有点像中间件!位于咱们的操做系统和应用程序之间!并发
中间件有不少,早在 1998 年 IDC 公司就将中间件分红了 6 大类,国内 2005 年以前出版的中间件相关的书上,不少都是按照这 6 大类来分的,分别是:框架
这里边除了消息中间件和交易中间件你们可能据说过以外,其余的中间件估计都不多据说,这是由于时代在变化,有的中间件慢慢被淘汰了(例如 终端仿真/屏幕转换 中间件),有的则慢慢合并到其余框架中去了(例如 远程过程调用中间件)。异步
消息队列中间件是分布式系统中重要的组件,主要解决应用耦合、异步消息、流量削锋等问题。实现高性能、高可用、可伸缩和最终一致性架构。是大型分布式系统不可缺乏的中间件。
JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通讯。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。
JMS 消息传送的对象在编程域中基本保持不变:链接工厂、链接、会话、生成方、使用方、消息和目的地。
MQ全称为Message Queue,消息队列(MQ)是正确而又完整的 JMS 实现,消息队列(MQ)是一种应用程序对应用程序的通讯方法。应用程序经过写和检索出入列队的针对应用程序的数据(消息)来通讯,而无需专用链接来连接它们。消息传递指的是程序之间经过在消息中发送数据进行通讯,而不是经过直接调用彼此来通讯,直接调用一般是用于诸如远程过程调用的技术。
场景说明:新用户注册发放100积分,180元新手大礼包,激活会员卡,传统的作法有两种:串行方式,并行方式。
以上两种方式,很容易发现同步处理的状况下都会涉及到非主业务的其余操做,其实注册的的主流程不该该受其余事件影响,经过消息队列的方式,能够把后续的处理流程进行异步处理能够大大提升响应速度。
场景说明:企业中常常出现企业合做如:本公司的驴粉卡与电信合做,新开卡的用户从电信端推送到我方,除了相对应的福利外,首先判断是否注册本公司帐户, 没有给予注册,可是新用户的相对应权益须要对等的发放。
缺点:
1.与其余系统过分耦合
2.短信发放或优惠券发放失败,影响主业务
优势:
1.注册完成而后将消息写入队列返回成功。
2.发放权益业务不影响主业务,实现解耦。
场景说明:秒杀活动对稀缺或者特价的商品进行定时定量售卖,吸引成大量的消费者进行抢购,但又只有少部分消费者能够下单成功。 所以,秒杀活动将在较短期内产生比平时大数十倍,上百倍的页面访问流量和下单请求流量。