1. 消息中间件: 将信息以消息的形式,从一个应用程序传送到另外一个或多个应用程序。安全
主要特色:服务器
(1) 消息异步接收: 消息发送者不须要等待消息接收者的响应网络
(2) 消息可靠接收: 确保消息在中间件可靠保存,只有接收方收到后才能删除消息,多个消息能够组成原子事务。有时,也要求消息不能重复传输。架构
2. 为何会出现消息中间件?并发
各个系统同步发送接收数据,相互等待,形成系统瓶颈。负载均衡
JMS使用场景:
第一想到的就是异步处理。其实,还能够用JMS来解决不少复杂的问题, 例如分布、并发、系统解耦、负载均衡、热部署、触发器等, 这些复杂的问题由于引入了JMS而变的更加简单.异步
(1) 同步通讯: 客户发出调用后,必须等待服务对象完成处理并返回结果后才可以继续执行。性能
若是数据交互过程, 容许异步操做时, 能够考虑使用JMSspa
好比: 用JMS来异步发送邮件. 数据的生产者交付数据后,便可当即返回而无需等待数据的执行结果,对于数据消费者能够在合适的时机接收数据并执行. 这一点多是咱们使用JMS的主要缘由.架构设计
(2) JMS解决分布问题的场景, 解决分布有两种类型:
第一种: 消息是集中的, 但消息的处理是分布的.
例如: 系统可能会被分为前台与后台,这两个系统是部署在不一样的网段里的。那么怎么把前台发生的业务通知后台系统呢? 前台系统在处理完业务请求后的同时发送一个消息到queue中,后台系统的消息接收者接收到消息后当即处理。这里消息的处理也可能有必定的延期,但这主要取决于消息服务器的硬件能力,网络带宽,消息接收者的处理速度等。
第二种: 消息是分布的, 消息中间件提供了消息路由的功能。
即: 消息发送到一个消息服务器后, 这个消息服务器根据定义的规则再把这条消息路由转发到其它的消息服务器。例如, 可能在北京的一个数据中心部署了数据采集系统, 采集到数据后以消息的方式发送到消息服务器, 而后消息服务器再把这条消息路由到上海的数据中心, 再由上海数据中心部署的数据处理系统来处理这条消息.
(3) 若是数据交互的双端执行效率不对等时,能够考虑使用JMS
主要场景为: 数据生产的速度很是高(好比队列),可是数据消费的速度相对较低,若是没有良好的架构设计,必将对数据生产者形成阻塞或者数据积压,从而对总体的性能带来挑战或者数据安全带来风险; JMS就是一个很好的"数据缓冲"中心,它将密集的数据提交操做以"均匀"的速度交付给数据消费者, 从而实现系统总体的稳定性.
这种策略, 在日志统计/小数据分析系统中,常常使用. 主要做用为"缓解系统瓶颈,提升生产效率".
概括为: "异步调用、分布、应用解耦"